2010-06-13 124 views
2

我正在開發音樂遊戲,它就像一個星星,但不是唱歌,你必須玩recorder。它叫做oFlute,它還處於早期發展階段。Linux,C++音頻捕捉(只​​是麥克風)庫

在遊戲中,我捕捉麥克風輸入,然後運行簡單的FFT分析並將結果與​​典型錄音機的頻率進行比較,從而得到播放的音符。

在開始時,我使用的音頻庫是RtAudio,但我不記得爲什麼我切換到PortAudio,這是我目前使用的。 問題是,它隨時會隨機崩潰或停止捕獲,就像麥克風沒有聲音一樣。

我的問題是,什麼是在Linux上捕獲麥克風輸入的最佳選擇?我只需要打開,讀取和關閉麥克風的字節流。

我一直在讀this guide,和(聯合國)令人驚訝地說:

我不認爲PortAudio是類Unix操作系統非常好的API。

那麼,你有什麼建議我?

回答

6

考慮到其他選項,PortAudio是一個奇怪的選擇。

我個人會抽出一切,並使用GStreamer。音頻在Linux上可能是一個可怕的混亂(作爲一個長期受害者)。讓Gstreamer處理這件事,可以讓你忘記它,繼續前進,而不必再考慮它。

OpenAL可能是遊戲開發中最受歡迎的遊戲,它應該支持大多數系統(雖然你「有趣」,讓它與PulseAudio玩的很好)。

我一定會確保你正在開發最流行的設置(現在是PulseAudio,我認爲),所以你不會因爲你釋放的情況而陷入困境人們呻吟聲的聲音不起作用。

不要聽PulseAudio的廢話 - 它可能是新的,它可能比準系統ALSA系統佔用更多的資源,但它肯定不會涉及延遲問題。要求人們刪除它並不是現代桌面發行版的一種選擇,因爲它是如此緊密集成(也很實用)。

+0

好吧,我會給Gstreamer一個嘗試。 – 2010-06-13 22:35:27

+0

最後,我用pulseaudio簡單的api解決了問題,它效果很好。 – 2010-08-13 15:22:34

+0

Gstreamer是開發者的最佳選擇。因爲在這個框架上你可以製作CD/DVD質量的音頻。這意味着你可以在48KHz到192KHz的範圍內進行試驗。是的,我正在努力學習它。 – YumYumYum 2010-12-09 14:38:39