2014-01-09 32 views
0

我有興趣將Linux和OS X系統用作數字樂器,用於實驗目的。C++將音頻數據發送到Linux和Mac OS X上的揚聲器輸出

我想知道,向3.5mm音頻輸出發送一組數字數據(它描述了一段音頻)的可能方法是什麼。 (所以當然可以使用一些揚聲器播放。)

我的要求是,這可以用C++來完成,因爲我需要實時生成音頻樣本。 (Python可能不會削減它。)理想情況下,我想要做這個跨平臺,但對做這個窗口不太感興趣。

的想法是做類似:

1:設置輸出模式44100KHz,24位單聲道(L & R)。 2:生成44100個有符號24位整數的數組。 3:告訴電腦播放XYZ秒/數組中的數據樣本,從樣本編號XYZ開始。

在Arduino之類的東西上很容易做到這一點。 (也可用C++編程)對於那些熟悉的人,您可以直接使用數字輸出引腳,或者爲了更復雜的東西,可以構建一個簡單的子板,它可以正確修改您的信號,使其成正弦曲線,負電壓擺動。 (而不僅僅是積極的。)

我想我需要的東西就像OpenAL,據我所知它就像OpenGL一樣。我似乎無法找到關於它的很多信息。似乎它不再被開發,並且已經使用了好幾年。我猜是有另一種選擇?

回答

1

OpenAL是一個很好的選擇。學習起來要比OpenGL容易得多。剪切和粘貼編碼。

它最近可能沒變,但仍在廣泛使用。我個人在iOS/OS X上使用它。你應該仔細檢查你選擇的Linux風格。

我不知道它是否可以播放24位PCM。但是如果底層音頻芯片支持,它當然可以接受44100的16位PCM。

這裏是一個教程,可以幫助你:

http://kcat.strangesoft.net/openal-tutorial.html

+1

我想最棘手的部分是,你在實時提供數據,不排隊不起來。 OpenAL是基於緩衝區的,而不是基於文件的,所以假設你可以足夠快地提供緩衝區,你應該可以。這是我看到的唯一風險。 –

+0

好的,非常感謝我在考試後對它進行調查。 – user3728501

相關問題