Библиотека аудио / MIDI C ++ для приложений реального времени - PullRequest
16 голосов
/ 10 апреля 2011

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

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

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

Я также даю попытку:

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

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

Спасибо

Ответы [ 4 ]

6 голосов
/ 07 апреля 2012

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

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

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

6 голосов
/ 10 апреля 2011

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

4 голосов
/ 03 мая 2011

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

Удачи, Audiodroid

1 голос
/ 05 октября 2013

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

...