Звуковые эффекты 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