2010-01-22 29 views
2

我想用ANSI C.在Unix上輸出自制合成聲音的簡單方法是什麼?

這是學習的目的,而不是做在Mac OS X(理想情況下其他類Unix操作系統)的一些聲音合成「我需要一個解決方案,任何解決方案,快!」

假設我在C程序中有一個8位緩衝區,我每秒更新22050次。我怎樣才能讓我的揚聲器輸出波形?

+0

不完全是你問的,但也許它可以幫助你:http://stackoverflow.com/questions/379353/what-is-a-lightweight-cross-platform-wav-playing-library/ – quinmars

+0

@ quinmars libao的確看起來非常優秀而且輕便。請把它作爲答案,以便您可以獲得一些重要點。 – xyz

+0

完成,但我還沒有發現libao支持OSX – quinmars

回答

1

沒有POSIX音頻API或類似的東西。因此,如果您想在Linux,OSX等上獲得聲音支持,您需要一個包含不同操作系統本機聲音API的庫。看看這個SO question。它並不直接要求OSX,但大多數答案也適用於它,除了libao。至少我沒有在他們的主頁上發現任何東西,那就是他們支持OSX。

+0

libao-0.8.8 \ src \ plugins \ macosx :-) – xyz

+0

好的,好吧然後:) – quinmars

+0

接受這一個,因爲它有點簡單。 OS X上的任何其他人,如果您無法使用手動編譯的版本初始化驅動程序,請使用「MacPorts」進行安裝 – xyz

3

SDL可以播放聲音緩衝區。但是,PortAudio可能會更好地工作,當需要更多數據時,PA會調用您的C回調,然後您可以將它傳遞給下一個緩衝區。實際上這很容易。

+2

+1作爲portaudio的參考。一個簡單的聲音輸出可以被寫入少於20行..打開輸出流並寫入它..完成! –

+0

看起來不錯!謝謝 – xyz

相關問題