Аудио/MIDI-библиотека С++ для приложения реального времени

Как я уже сказал в другом потоке, я работаю над проектом, связанным с графическим программированием в реальном времени для аудио ( что-то вроде Pure Data, Max/MSP, Reaktor).

Я провел день исследований в Интернете, ища хорошую (поддерживаемую, хорошо документированную и очень портативную) библиотеку С++ для взаимодействия на низком уровне с аудио и MIDI, но я до сих пор не могу решить, что такое библиотека.

Я рассматриваю PortAudio + PortMIDI (PortMedia), но у них отсутствует документация (особенно PortMIDI), и нет официального сообщества, просто списка рассылки (и я думаю, что форумы сообщества очень важны!), то же (или худшая) ситуация с RTAudio и RTMidi.

Я также пытаюсь:

  • STK, мне не нравится его файловая организация.
  • Juce, я думаю, что это слишком много для меня, мне нужна только простая аппаратная интеграция
  • OpenAL, я не понял его архитектуры, он полагается на ASIO/ALSA/CoreAudio...? Могу ли я получить доступ к порту MIDI?

Итак... Мой вопрос: есть ли у вас опыт работы с аудио /MIDI в реальном времени? Какую библиотеку вы мне рекомендуете?

Спасибо

Ответы

Ответ 1

Я использовал как PortAudio/PortMidi, так и Juce с отличными результатами для обоих. Я в процессе переключения проекта из PortMidi в Juce, потому что для моего использования все, что другие приложения Framework, становятся невероятно полезными (и, по моему опыту, он потрясает.). YMMV.

Ответ 2

Я создал аудио-библиотеку С++ под названием "Crosstalk".

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):

Перекрестные помехи были заменены проектом с открытым исходным кодом под названием " DSPatch". DSPatch - это, по сути, обновленная версия движка маршрутизации Crosstalk, которая больше не ограничивается только обработкой звука. DSPatch позволяет вам создавать и направлять практически любые типы цепочек процессов, которые можно вообразить, и бесплатно для личного и частного использования:)

Ответ 3

Я бы также рекомендовал openFramworks: http://www.openframeworks.cc/ Он предназначен для всех видов медиа, взаимодействия,... и он имеет очень простой в использовании/понятный API, который также хорошо документирован. Просто перейдите по ссылке выше и проверьте ее.

Удачи, Audiodroid