Звуковое программирование низкого уровня

Я думаю; аудио-программы, такие как Cubase и Audacity, используют вызовы PlaySound??

Где я могу узнать о низкоуровневом аудио программировании? Насколько я нашел информацию в Интернете, MCI кажется аудио API самого низкого уровня в Windows...

Спасибо

Изменить: я не запрашиваю информацию, относящуюся только к Windows.


person Midas    schedule 14.11.2010    source источник


Ответы (3)


Есть несколько аудио API на выбор. Самым старым и наиболее широко поддерживаемым является API waveOut — ищите функции, начинающиеся с waveOut, в MSDN. Немного более новым является DirectSound, который больше ориентирован на игры, но его главная особенность по сравнению с waveOut — это позиционный 3D-звук, который не используется профессиональным звуковым программным обеспечением (предполагалось, что он также будет иметь меньшую задержку, чем waveOut, но это так и не материализовалось). Для звука с малой задержкой используется ASIO. Профессиональные звуковые приложения поддерживают этот API, но не все драйверы (это стандартная функция для профессиональных звуковых карт, но не для игр или встроенного оборудования). ASIO может обеспечить гораздо меньшую задержку, чем waveOut или DirectSound. Наконец, есть интерфейс потоковой передачи ядра, который является аудиоинтерфейсом самого низкого уровня, все еще доступным из кода пользовательского режима. Это прямой канал во внутренний микшер Windows, который объединяет выходные данные всех приложений, которые в данный момент воспроизводят звук, в сигнал, который отправляется на звуковую карту. Хотя это почти не задокументировано. Существует драйвер под названием ASIO4ALL (просто погуглите), который обеспечивает поддержку ASIO на звуковых картах без драйверов ASIO, реализуя ASIO API поверх потокового интерфейса ядра.

person Fabian Giesen    schedule 14.11.2010
comment
Это именно та информация, которую я искал, спасибо! - person Midas; 14.11.2010
comment
Вы забыли упомянуть «новый» API CoreAudio, представленный в Vista. Он обеспечивает низкоуровневый доступ к аудиоинтерфейсу и должным образом документирован. (msdn.microsoft.com/en-us/library/ dd370802(VS.85).aspx) - person Han; 14.11.2010

Я немного опоздал, но на прошлой неделе я опубликовал историю Windows API, которая может добавить немного больше контекста. Выбор API действительно зависит от ваших потребностей. Если вы хотите избежать сторонних библиотек, это действительно сводится только к MME, XAudio2 и Core Audio (WASAPI).

Краткая история API Windows Audio

Надеюсь это поможет!

person Shane Kirk    schedule 19.10.2015

На самом деле, если вы ищете больше, чем поддержку вывода только для Windows, то лучший способ начать — это просмотреть PortAudio< Фила Берка. /a>, доступный на момент написания этой статьи по адресу http://www.portaudio.com/ .

ASIO — это интерфейс хорошего качества, но он проприетарный и принадлежит Steinberg.

В современной Windows существует много интерфейсов более низкого уровня для вывода звука, чем MCI. К ним относятся как минимум DirectSound, XAudio и WASAPI.

Я рекомендую по возможности избегать Windows API и вместо этого изучать PortAudio.

person johnwbyrd    schedule 20.09.2015