Поделиться через


Звуковые эффекты XAudio2

Звуковой эффект — это объект, который принимает входящие звуковые данные и выполняет некоторые операции с данными перед передачей. Вы можете использовать эффект для выполнения различных задач, включая добавление реверб в аудиопоток и мониторинг пиковых уровней громкости.

Цепочки эффектов

Любой голос XAudio2 может размещать цепочку звуковых эффектов. Массив структур XAUDIO2_EFFECT_DESCRIPTOR можно использовать для указания цепочек эффектов. Каждый дескриптор содержит указатель на объект эффекта, предоставляемый клиентом. Эти объекты должны реализовывать интерфейсы объекта обработки звука (APO). Дополнительные сведения о модели APO см. в обзоре XAPO.

Цепочки эффектов могут быть динамически изменены клиентом (в то время как подсистема XAudio2 работает), эффекты можно включить или отключить по отдельности, а параметры эффекта можно изменить без прерывания звука. Всякий раз, когда любой аспект графа эффектов изменяется, XAudio2 оптимизирует граф снова, чтобы избежать ненужных обработки. См. IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffect, а также IXAudio2Voice::SetEffectParameters.

После присоединения эффекта к голосу XAudio2 XAudio2 XAudio2 управляет эффектом, и клиент не должен делать никаких дальнейших вызовов к нему. Самый простой способ обеспечить это — освободить все указатели на эффект.

Эффекты в заданной цепочке эффектов голоса XAudio2 должны использовать и производить звук с плавающей запятой при обработке выборки голоса. Единственным аспектом формата звука, который они могут изменить, является число каналов (например, эффект ревервербации может преобразовать моно данные в 5.1). Клиент может использовать XAUDIO2_EFFECT_DESCRIPTOR.поле OutputChannels, чтобы указать количество каналов, которые должны производиться каждым эффектом. Цепочка эффектов завершается ошибкой, если какой-либо из эффектов не может выполнить эти требования, или если эффект создает ряд каналов, которые следующий эффект не может обрабатывать. Все IXAudio2Voice::EnableEffect или IXAudio2Voice::D isableEffect вызовы, которые вызывают цепочку эффектов, чтобы прекратить выполнение этих требований, завершится ошибкой.

Интерфейсы APO, используемые в XAudio2, должны быть разрушительными. Это означает, что они всегда перезаписывают все данные, которые они находят в их выходных буферах. В противном случае полученный звук может быть неверным, так как XAudio2 не гарантирует, что эти буферы были инициализированы ранее с молчанием.

Встроенные эффекты XAudio2

В следующей таблице перечислены набор встроенных звуковых эффектов, предоставляемых XAudio2 и их методами создания.

Эффект Метод создания
Реверберации XAudio2CreateReverb
Измерение громкости XAudio2CreateVolumeMeter

 

Пример создания и использования экземпляра звукового эффекта см. в разделе Практическое руководство. Созданиецепочки эффектов.

Пользовательские эффекты в XAudio2

API XAPO предоставляет платформу для создания пользовательских звуковых эффектов, которые можно использовать в XAudio2. Пример создания пользовательского эффекта с помощью XAPO см. в разделе Практическое руководство. СозданиеXAPO.

Библиотека эффектов XAPO (XAPOFX)

XAPOFX предоставляет дополнительную библиотеку XAPOs и общий механизм их создания. Пример использования XAPOFX с XAudio2 см. в разделе Практическое руководство. Использование XAPOFX в XAudio2.

звуковых эффектов

Руководство по программированию XAudio2