音效算法学习笔记(一)fader 增益调节器

原文链接:http://www.cnblogs.com/fellow1988/p/9589261.html
fader在音频处理中是比较基础的处理。通常用于平滑的调节音量,或是音频的渐入和渐出效果。

比较常见的fader有line和cubic线型的fader。

line fader即fader的渐变过程是线性的。cubic的渐变过程是三次曲线。

fader主要有三个参数,attuationDb, type, timeMs.

line fader:

通过当前的音量curVolumDb,计算fader的初始gain值:startGain = dbToGain(curVolumDb)

fader结束音量为curVolumDb + attuationDb,那么fader结束的gain值为:endGain = dbToGain(curVolumDb + curVolumDb)

将fader的开始到结束的时间timeMs转化为sample为单位:timeInSample = timeMs * sampleRate / 1000.

那么line fader的step为:step = (endGain - startGain) / timeInSample.

初始化curSample为0, curGain= startGain.

每处理一个sample(sample * curGain), curSample加1. curGain加step,直至curSample等于timeInSample,整个fader过程结束。

5s内衰减5db

音效算法学习笔记(一)fader 增益调节器

5s时间fader in

音效算法学习笔记(一)fader 增益调节器

cubic fader:

cubic fader的原理为,将0~1划分为多个段(假设为segNum)。计算每个Segment端点的gain值:segGain.

由于有segNum个段,那么0~1被离散为segNum + 1个点,每个点的segGain[n]值为(n/(segNum +1))^3. n=0,1,2…segNum+1;

将0~1之间的segGain map到startGain ~ endGain之间。

对于0~timeInSample之间的点,我们计算当前的sample处于哪个segment,当curSample是当前segment的第一个点时,将curGain设置成segGain[n].

当前segment按line fader一样的方法计算每个点的gain,每处理一个sample, curGain加step.

5s内衰减5db

音效算法学习笔记(一)fader 增益调节器

5s时间fader in

音效算法学习笔记(一)fader 增益调节器