簡體   English   中英

用於實時應用的音頻/ MIDI C ++庫

[英]Audio/MIDI C++ library for a real-time application

正如我在另一個帖子中已經說過的那樣 ,我正在開發一個與音頻實時圖形編程相關的項目(類似Pure Data,Max / MSP,Reaktor)。

我在互聯網上做了一天的研究,尋找一個好的(維護的,文檔齊全的,高度可移植的)C ++庫,用於與音頻和MIDI的低級交互,但我仍然無法決定一個庫。

我正在考慮PortAudio + PortMIDI (PortMedia),但他們缺少文檔(特別是PortMIDI),並且沒有官方社區,只有郵件列表(我認為論壇社區非常重要!),同樣(或最差)的情況RTAudioRTMidi庫。

我也嘗試一下:

  • STK ,我不喜歡它的文件組織。
  • Juce ,我認為它對我來說太過分了,我只需要簡單的硬件集成
  • OpenAL ,我不了解它的架構,它依賴於ASIO / ALSA / CoreAudio ......? 我可以訪問MIDI端口嗎?

所以...我的問題是:你有任何實時音頻/ MIDI的經驗嗎? 你推薦我哪個圖書館?

謝謝

我創建了一個名為“Crosstalk”的C ++音頻庫。

Crosstalk是一個實時C ++音頻引擎,允許您實時創建和路由音頻系統(幾乎是您嘗試以圖形方式實現的),並且它非常易於使用。

這是一個如何播放mp3文件的示例:

XtSystem system;
XtMp3Decoder mp3Decoder;
XtAudioDevice audioDevice;

long md = system.addComponent(&mp3Decoder);
long ad = system.addComponent(&audioDevice);

system.connOutToIn(md,0,ad,0);
system.connOutToIn(md,1,ad,1);

mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3");
mp3Decoder.play();

您可以在此處查看API文檔和許可詳細信息: http//www.adaptaudio.com/Crosstalk

編輯(01-12-2012):

串擾已被一個名為“ DSPatch ”的開源項目所取代。 DSPatch本質上是Crosstalk背后的路由引擎的升級版本,不再局限於音頻處理。 DSPatch允許您創建和路由幾乎任何類型的可想象的流程鏈,並且免費供個人和專有使用:)

我已經同時使用PortAudio / PortMidi和Juce兩者都有很好的效果。 我正在將項目從PortMidi切換到Juce,因為對於我的用途,所有其他應用程序框架的東西最終都非常有用(根據我的經驗,它非常堅固。)。 因人而異。

我還推薦openFramworks: http//www.openframeworks.cc/它適用於所有類型的媒體,交互......,它有一個非常易於使用/理解的API,它也有很好的文檔記錄。 只需點擊上面的鏈接並查看即可。

祝你好運,Audiodroid

本系列教程中,有一篇關於對MIDI數據作出反應的文章。 它還涉及其他主題,如合成等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM