2010-11-14 2 views
1

Интересно; использует ли звуковое ПО, например Cubase и Audacity, звонки PlaySound?Программирование звука низкого уровня

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

Благодаря

Edit: Я не запрашивать информацию специфичны для Windows, только ,

ответ

5

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

+0

Это именно то, что я искал, спасибо! – Midas

+0

Вы забыли упомянуть «новый» API CoreAudio, который был представлен с Vista. Он обеспечивает низкий уровень доступа к аудиоинтерфейсу и правильно документирован. (Http://msdn.microsoft.com/en-us/library/dd370802(VS.85).aspx) – Han

1

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

ASIO - это интерфейс хорошего качества, но он является собственностью и принадлежит Steinberg.

Существует много интерфейсов нижнего уровня для аудиовыхода, чем MCI в современных Windows. К ним относятся, по меньшей мере, DirectSound, XAudio и WASAPI.

Я рекомендую как можно больше избегать API Windows и изучать PortAudio.

1

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

A Brief History of Windows Audio APIs

Надеется, что это помогает!

Смежные вопросы