FrankKai

Results 350 comments of FrankKai

### Audio data:what's in a sample #### 采样是什么意思? 当一个语音信号被处理时,sample(采样)的意思是讲一个时域连续的信号转换为一个时域离散的信号的过程。 #### 为什么要采样? 因为对于一段音频来讲,自然情况下是一段连续的声波,只有转换成离散的采样序列,也就是很多段按等长时间分隔的音频数据,这样计算机才能去处理这些一个个独立的数据块。这也就是采样的原因。 #### 采样属于什么学科? signal processing,信号处理。 吐槽:数字信号处理课上学到的全还给老师了,没想到在录音功能还能用到一些专业课知识,大学还是没白读。

### Audio buffers: frames, samples and channels #### frames ```js var buffer = baseAudioContext.createBuffer(numOfchannels, length, sampleRate); ``` 入参分析: - numOfchannels 声道数 1是单声道,2是双声道。默认是1,单声道 - length 帧总长度 buffer内sample frame的个数 - sample rate...

### Planar versus interleaved buffers - **Web Audio API仅支持二维的buffer格式。** 适用于对每个channel上的数据单独处理的音频。left和right两个channel的数据存储像下面这样: ```js LLLLLLLLLLLLLLLLRRRRRRRRRRRRRRRR(这是一个双声道的16个frame的buffer) ``` - 交叉buffer。适用于不用太多处理的音频,比如一个解码MP3 stream。格式是下面这样的: ```js LRLRLRLRLRLRLRLRLRLRLRLRLRLRLRLR ``` Web Audio API只支持二维格式的音频数据处理。只有在发送给声卡播放时,才会被转换为交叉音频流。 阶段|格式 --- |--- processing | planar playing/decoded |...

### Visualizations-AnalyserNode AnalyserNode拥有时域和频域两种类型的方法,用来获得数据的副本。 域 | 方法 | 数据类型 --- | --- | --- 频域 | getFloatFrequencyData | Float32Array 频域 | getByteFrequencyData | Uint8Array 时域 | getFloatTimeDomainData | Float32Array 时域 |...

### Spatialization(音频空间化) ![image](https://user-images.githubusercontent.com/19262750/68202953-b6cad400-ffff-11e9-9822-5ddfe9a45d4a.png) - Position vector标明声音源在三维空间中坐标。 - Direction vector标明PannerNode所指向的方向。 - Velocity vector标明声音的速率。 - 还有一个标明能听到声音的圆锥体。 相关Node是PannerNode和AudioListener。 更加深入的内容可以查看:[Web Audio Spatializations](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Web_audio_spatialization_basics)

### Fan-in and Fan-out Fan-in是指多变一,扇入,仿佛扇子多个扇尖到扇尾,收缩。ChannelMergerNode可以把多个单声道(mono)上的信号汇聚成一个单-多信号。 ![image](https://user-images.githubusercontent.com/19262750/68203655-3ad18b80-0001-11ea-932c-329b510eea26.png) Fan-out指一变多,扇出,仿佛扇子扇尾到多个扇尖,发散。ChannelSplitterNode可以把一个单-多信号拆分成多个单声道(mono)信号。 ![image](https://user-images.githubusercontent.com/19262750/68203859-bc291e00-0001-11ea-90ae-7ac6e5304890.png)

### 趣味小知识 为什么44.1Khz是最常用的音频采样频率? 首先,人类的听力范围在20Hz到20000Hz之间。 根据香农采样理论,采样频率最好是最大听力频率的2倍多。所以大于40Khz。 其次,采样前必须对信号进行低通滤波,否则会产生混叠。一个理想的低通滤波器可以完美地通过20khz以下的频率(不衰减它们)并完美地切断20khz以上的频率,但在实践中需要一个过渡频带,在那里频率被部分衰减。这个过渡带越宽,做一个抗锯齿滤波器就越容易和经济。44.1 kHz的采样频率允许2.05 kHz的过渡频带。

### 专业词汇 #### sources 名词|解释 --- | --- ``|音频组件 oscillator|振荡器 stream|流 #### effect nodes 名词|解释 --- | --- reverb | 混响 biquad filter | 双二阶滤波器 panner | 用来描述音频位置和行为 compressor |...

参考资料:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Basic_concepts_behind_Web_Audio_API

**1.说一下你熟悉的设计模式** 我最熟悉的设计模式:工厂模式(ES5),组件设计模式(ES6) 工厂模式(ES5,基于prototype。此例中基类Base,子类Factory) ``` var Factory = function () { if(!(this instanceof Factory)){ return new Factory(); } } Factory.prototype = Object.assign(new Base(), { version: '0.0.1', defaultOption:{ title:'标题' }, init:function (cfg)...