我的問題並不完全與編程有關,但我認爲這是正確的問題。如何混合音頻樣本?
在我的程序中,我生成一些音頻數據並將音軌保存爲WAV文件。一切聲音發生器都可以正常工作。但現在我想添加更多的生成器並將生成的音頻數據混合到一個文件中。不幸的是,它比起初看起來更復雜。 此外,我沒有找到有關如何混合一組音頻樣本的很多有用信息。
那麼有沒有人可以給我建議?
編輯:
我用C++編程。但這並不重要,因爲我對混合兩個音軌背後的理論感興趣。我的問題是我不能總結樣本,因爲這經常會產生失真的聲音。
我的問題並不完全與編程有關,但我認爲這是正確的問題。如何混合音頻樣本?
在我的程序中,我生成一些音頻數據並將音軌保存爲WAV文件。一切聲音發生器都可以正常工作。但現在我想添加更多的生成器並將生成的音頻數據混合到一個文件中。不幸的是,它比起初看起來更復雜。 此外,我沒有找到有關如何混合一組音頻樣本的很多有用信息。
那麼有沒有人可以給我建議?
編輯:
我用C++編程。但這並不重要,因爲我對混合兩個音軌背後的理論感興趣。我的問題是我不能總結樣本,因爲這經常會產生失真的聲音。
我認爲你的問題是,對於每一個音頻源你,你不必降低水平正在增加。
如果應用程序爲用戶提供控制權,讓他們直接控制級別。熱情是他們的責任,而不是你的責任。這是「總結」。
如果混合是自動的,you're about to go on a journey。如果沒有限制,你可能需要壓縮。 (極限是壓縮的極端版本。)
需要注意的是什麼,你做音頻(包括壓縮和限制)是失真的一種形式,所以你將有音頻的着色。您選擇的壓縮和限制算法會影響聲音。
既然你不產生實時的音頻輸出,必須做「磚牆」限制的可能性。那是因爲你已經預知了關卡的水平。實時限制更爲有限,因爲您無法知道即將發生的事情 - 您必須做出反應。
這是音樂,音效,聲音,什麼?
程序員here處理這一切的時候。
兩個樣本
mix = (a + b) - a * b * sign(a + b)
什麼編程語言和平臺的髒組合? – 2009-11-23 16:46:53
你在用什麼語言?什麼庫?提供更多的細節。 – Poindexter 2009-11-23 16:47:11