Я создал аудио-движок C ++ под названием "Crosstalk".
Несмотря на то, что это называется «механизмом обработки звука», на самом деле это просто механизм обработки данных C ++ (с плавающей запятой) в реальном времени. Crosstalk позволяет создавать и маршрутизировать системы в режиме разработки и в режиме реального времени. По сути, механизм заботится обо всей маршрутизации данных и предоставляет вам простую платформу для создания компонентов, с помощью которых обрабатываются данные (например, ваш компонент «Аудио-канал» подключен параллельно с компонентом «Видео-канал»). Пока ваши ветви имеют одинаковую общую длину буфера, они будут идеально синхронизированы.
Это очень удобно. Вот пример того, как настроить систему для воспроизведения 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):
Crosstalk был заменен проектом с открытым исходным кодом под названием " DSPatch ". DSPatch - это, по сути, обновленная версия механизма маршрутизации за Crosstalk, который больше не ограничивается только обработкой аудио. DSPatch позволяет создавать и маршрутизировать практически любые типы цепочек процессов, какие только можно вообразить, и бесплатно для личного и частного использования:)