這是音效系列編程之三:FadeOut和FadeIn音效
二者都分別控制音樂的淡出和淡入
解釋下淡出效果的含義:就在是音樂播放即將結(jié)束之前通過一定的手法控制音樂響度-直至結(jié)束。
很顯然,使用線性關(guān)系基本可以達(dá)到目的
假定數(shù)據(jù)關(guān)系為y = kx + b;
另外需要控制淡出的坡度,或者直接說需要知道從結(jié)束之前多少個(gè)數(shù)據(jù)開始需要使用FadeOut音效。所以我們需要一個(gè)參數(shù)len。
假定我們使用下列的一句話算法來說明問題:
for(int i = 0; i != len ;i++)
bufer[i]*= (a-i)*b;
其中a,b為待定參數(shù)
因?yàn)橛幸粋€(gè)前提:當(dāng)i = len-1的時(shí)候buffer[len-1] = 0;
所以有a=len-1
另外當(dāng)fadeout發(fā)揮作用之前buffer數(shù)據(jù)并未變化,故有
b=(len-1)
故基本的Fadeout核心算法就是一句:
y=y*(1-t/k)
簡(jiǎn)單吧。
理所當(dāng)然
基本的FadeIn核心算法就是
y*=(t/k-1)
雖然在具體場(chǎng)合,算法有所變形,但是基本的原理就是這個(gè)樣子
PS:基本的函數(shù)關(guān)系雖然簡(jiǎn)單,但是比較實(shí)用
以后有空還會(huì)講Echo,Reverb,Treble Booster,Compressor,High Filter等音效原理
。只是研究音效的同志們不多。沒的討論