Вывод звука через M-Audio ProFire 610

Я получил задание создать систему, которая сможет направлять звук на разные выходные каналы нашей звуковой карты. Мы используем M-Audio ProFire 610 с 8-канальным выходом. и подключается через FireWire. Мы также используем Mac Mini в качестве нашего хост-сервера, и я собираюсь работать в Xcode.

Это схема того, что я создаю:

диаграмма http://img121.imageshack.us/img121/7865/diagramy.png

Сначала я подумал, что Java будет достаточно для этого проекта, однако позже я обнаружил, что Java не может передавать звук в каналы вывода звуковой карты, отличные от стандартных, поэтому я решил переключиться на C ++. Проблема в том, что я веб-разработчик и у меня нет никакого опыта владения этим языком, поэтому мне нужна помощь более опытных разработчиков.

Я нашел Core Audio Primer для ios4, но не уверен, сколько его я могу использовать для своего проект. Я тоже нахожу это немного запутанным.

Что мне нужно сделать, чтобы выполнить это задание? Какие фреймворки мне следует использовать? Есть примеры кода? Я ищу любую помощь, подсказки, советы - ну, все, что поможет мне завершить этот проект.


person rkrv.    schedule 14.02.2011    source источник
comment
+1 за осторожный вопрос, который показывает, что вы пытались ответить на него сами.   -  person Donal Fellows    schedule 14.02.2011


Ответы (2)


Если вы просто ищете сквозной звук, вы можете посмотреть что-то, что уже создано, например Jack, которое создает программное аудиоустройство, которое выглядит и работает так же, как настоящее (вы можете установить его в качестве вывода по умолчанию для своего приложения), а затем позволяет маршрутизировать каждый канал куда угодно (в том числе в другие приложения).

Если вы хотите / вам нужно сделать свой собственный, определенно переходите на C ++, для которого существует множество руководств (я узнал на cplusplus.com). CoreAudio - это низкоуровневый интерфейс C / C ++, как упоминал Джастин, но его действительно сложно изучить и использовать. Гораздо более простой API предоставляет PortAudio, для которого я немного поработал над реализацией Mac. Посмотрите там руководства, сделайте что-то подобное для ввода и вывода по умолчанию, а затем для сопоставления каналов используйте PaMacCore_SetupChannelMap, который описан здесь. Вам нужно будет вызвать его дважды, один раз для входного потока и один раз для выходного потока. Присоединяйтесь к списку рассылки PortAudio, если вам нужен еще совет! Удачи!

person btown    schedule 14.02.2011
comment
PortAudio выглядит очень многообещающе. Это действительно проще, чем Core Audio, и документация кажется более полной. Я изучу их руководства и, надеюсь, смогу использовать этот API в своем проекте. Вопрос, который я задал, - это лишь небольшая часть всей системы, которую я создаю, поэтому я думаю, что буду использовать PortAudio вместо Джека, что меня немного сбивает с толку. Кроме того, всегда веселее работать над собственной реализацией API, не так ли? Большое спасибо за ваш отзыв, он был чрезвычайно полезен. - person rkrv.; 14.02.2011

основные API находятся на CoreAudio/AudioHardware.h

большая часть примеров / вспомогательного кода, предоставляемого Apple, написана на C ++. однако API полностью написаны на C (не знаю, помогает это вам или нет).

вы захотите получить доступ к уровню аппаратной абстракции (он же HAL), подробнее в этом документе:

http://developer.apple.com/documentation/MusicAudio/Conceptual/CoreAudioOverview/CoreAudioOverview.pdf

для (довольно значительного количества) дополнительных образцов / использования см. $DEVELOPER_DIR/Extras/CoreAudio/

person justin    schedule 14.02.2011
comment
Теперь, когда я работал с C ++ пару дней, я наконец могу понять, что происходит в файлах примеров Core Audio. Похоже на действительно мощную библиотеку. Спасибо за ответ, это было очень полезно. - person rkrv.; 16.02.2011
comment
@rkrv. добро пожаловать - рад, что это было полезно. Удачи с вашим проектом! - person justin; 16.02.2011