Управление громкостей и шагом XAudio2

В этом разделе описывается управление громкостями и шагами XAudio2.

Управление громкостей

Уровни громкости выражаются в виде амплитуды с плавающей запятой в диапазоне от -XAUDIO2_MAX_VOLUME_LEVEL до XAUDIO2_MAX_VOLUME_LEVEL (от -224 до 224) с максимальным увеличением 144,5 дБ. Объем 1,0 означает отсутствие затухания или усиления; 0 означает молчание; и отрицательные уровни можно использовать для инвертации фазы звука. Две встроенные функции предоставляются в XAudio2.h для преобразования между единицами тома: XAudio2DecibelsToAmplitudeRatio и XAudio2AmplitudeRatioToDecibels.

Уровень громкости можно применить к звуку в нескольких точках при прохождении через граф XAudio2:

  • Все типы голосов применяют общий уровень громкости к входным данным, которым они управляют с помощью метода IXAudio2Voice::SetVolume . В подмиксе и мастеринге голоса общий уровень громкости применяется непосредственно перед встроенной цепочкой фильтров и эффектов голоса. В исходных голосах общий уровень громкости применяется после встроенной цепочки фильтров и эффектов голоса.
  • Голоса применяют к выходным данным уровень громкости по каналу, который они контролируют с помощью метода IXAudio2Voice::SetChannelVolumes . Уровень громкости по каналу применяется сразу после окончательного преобразования частоты выборки голоса и перед отправкой на другие голоса.
  • Каждое соединение между одним голосом и другим имеет таблицу уровней, используемых для отправки звука из каждого исходного канала в каждый целевой канал, который управляется с помощью метода IXAudio2Voice::SetOutputMatrix .

Для всех общих томов и томов каналов по умолчанию изначально используется значение 1.0. Все матрицы уровня отправки по умолчанию соответствуют соответствующим значениям, которые максимально точно сохраняют мощность сигнала и расположение каналов. Дополнительные сведения см. в обзоре сопоставления каналов по умолчанию XAudio2 .

Примечание

XAudio2 автоматически настраивает уровни громкости на основе параметров динамиков пользователя, чтобы поддерживать согласованный уровень громкости в разных конфигурациях. Если параметры пользователя не соответствуют его физической конфигурации, громкость будет слишком громкой или слишком мягкой по сравнению с системой с точными параметрами. Например, система, настроенная для динамиков объемного звука 5.1 с двумя подключенными динамиками, будет звучать слишком мягко. XAudio2 не может определить, соответствуют ли параметры динамиков пользователя их физической конфигурации.

 

Управление шагом

Шаг выражается как коэффициенты скорости ввода и вывода в диапазоне от 1/1024 до 1024/1 включительно. Соотношение 1/1024 снижает шаг на 10 октав, а соотношение 1024/1 повышает его на 10 октав. Метод IXAudio2SourceVoice::SetFrequencyRatio можно использовать только для применения настроек тона к исходным голосам и только в том случае, если они не были созданы с флагом XAUDIO2_VOICE_NOPITCH. По умолчанию используется коэффициент частоты 1/1, т. е. без изменения тона. В XAudio2.h предоставляются две встроенные функции для преобразования между коэффициентами частоты и полутонами: XAudio2FrequencyRatioToSemitones и XAudio2SemitonesToFrequencyRatio.

Управление громкостей и шагом

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

Практическое руководство. Изменение тона голоса

Практическое руководство. Изменение громкости голосовой связи