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

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

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

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

Еще я пробую:

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

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

Спасибо


person Kill KRT    schedule 10.04.2011    source источник
comment
Вы можете рассмотреть только аудио функции и реализовать MIDI отдельно. MIDI не слишком сложен, а задержка настолько мала, насколько это возможно.   -  person Brad    schedule 10.04.2011
comment
OpenAL очень хорош, когда дело касается мультиплатформенности. У него нет MIDI, хотя не должно возникнуть проблем с использованием отдельной библиотеки только для MIDI.   -  person edA-qa mort-ora-y    schedule 10.04.2011
comment
К вашему сведению, сообщество Portaudio очень активно через свой список рассылки, и они очень открыты для обратной связи и вопросов.   -  person Nick Haddad    schedule 08.04.2012


Ответы (4)


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

person bgporter    schedule 10.04.2011

Я создал звуковую библиотеку C ++ под названием «Перекрестные помехи».

Перекрестные помехи - это звуковой движок 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

РЕДАКТИРОВАТЬ (12.01.2012):

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

person Adapt Audio    schedule 07.04.2012

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

Удачи, Аудиодроид

person AudioDroid    schedule 03.05.2011

В этой серии руководств есть сообщение о реагирует на данные MIDI. Он также охватывает другие темы, такие как синтез и т. Д.

person basteln    schedule 05.10.2013
comment
Отличное руководство по разработке VST / AU! На самом деле мой вопрос был связан с другой темой ... В любом случае, спасибо, он кажется очень интересным и хорошо написанным! - person Kill KRT; 06.10.2013