2010-11-11 174 views
2

HI,在音頻文件的末尾淡出音量

我正在做一個與音頻文件一起使用的iphone應用程序。應用程序還包含一個音頻轉換器,所以我可能在我的/ Documents文件夾中有任何音頻格式的文件。

我想要的是實現一個流暢的音頻文件,通過減少音量級別結束並淡入文件開頭。

我該怎麼做? (只是指出一個方向,一個框架,功能,方法)

我可以使用所有的蘋果音頻框架,無論是高層次還是低層次的。 我甚至可以在文件轉換時訪問音頻緩衝區。

在此先感謝。

注:播放時不需要音頻淡入/淡出功能。我需要這個功能已經寫入音頻文件。

回答

0

因爲您正在處理不同的格式,因此您最好的選擇是在轉換數據時在樣本級應用淡入淡出。

如果你正在做的轉換下線,那麼你已經知道在文件中的樣本數量,這樣你就可以正常處理X - B樣品(其中X爲樣本總數和B是衰落期):

int i = 0; 
for(i = 0; i < X - B; i++) { 
    sampleToBeConverted[i] = inputSample[i] 
} 

然後,最後B樣品,你會做這樣的事情:

for(int j = 0; j < B; j++, i++) { 
    sampleToBeConverted[i] = inputSample[i] * (1.0 - (j/B)); 
} 

這將是一個線性褪色斜坡,所以如果你想要更有趣的東西,那就去敲門吧。 ;)基本上,執行線性漸變的公式是y = m * x + b(記得代數類?),其中您的斜率在這種情況下是1/B,y偏移量是1.0,這是您要應用的最大音量增益(即,no獲得)。

如果您正在實時進行轉換,則需要將B採樣保留在環形緩衝區中,然後在達到處理結束時應用上述算法。

+0

哇。這很容易,而且在我的應用程序中完美運行。 – krafter 2010-11-11 11:14:01

+0

我只是在我的轉換函數中使用它,並將該公式應用到我的緩衝區。非常感謝,Nik,那就是我想要的。 – krafter 2010-11-11 11:17:07