XAudio2 音量和音调控制

本主题介绍 XAudio2 音量和音调控制。

音量控制

音量水平表示为 -XAUDIO2_MAX_VOLUME_LEVEL 和XAUDIO2_MAX_VOLUME_LEVEL之间的浮点振幅乘数(-224 到 224),最大增益为 144.5 dB。 卷为 1.0 意味着没有衰减或增益;0 表示沉默;和负级别可用于反转音频的阶段。 XAudio2.h 中提供了两个内联函数,用于在卷单位之间转换:XAudio2DecibelsToAmplitudeRatioXAudio2AmplitudeRatioToDecibels

在音频流经 XAudio2 图形时,可以在多个点将音量级别应用于音频:

  • 所有语音类型都对其输入应用总体音量级别,它们使用 IXAudio2Voice::SetVolume 方法进行控制。 在子混合和主语音中,在语音的内置筛选器和效果链之前应用总体音量级别。 在源语音中,在语音的内置筛选器和效果链之后应用总体音量级别。
  • 语音将每通道音量级别应用于其输出,它们使用 IXAudio2Voice::SetChannelVolumes 方法进行控制。 每个通道音量级别在语音的最终采样率转换之后应用,并在发送到其他语音之前应用。
  • 一个语音和另一个语音之间的每个连接都有一个级别表,用于将每个源通道中的音频发送到每个目标通道,该通道使用 IXAudio2Voice::SetOutputMatrix 方法进行控制。

所有整体卷和通道卷最初默认为 1.0。 所有发送级矩阵默认为适当的值,以尽可能准确地保留信号电源和通道定位。 有关详细信息,请参阅 XAudio2 默认通道映射 概述。

注意

XAudio2 根据用户的扬声器设置自动调整音量级别,以跨配置保持一致的音量级别。 如果用户的设置与其物理配置不匹配,则与具有准确设置的系统相比,音量会过大或太软。 例如,为 5.1 环绕声扬声器配置的系统只有两个连接的扬声器将听起来太软。 XAudio2 无法检测用户扬声器设置是否正确匹配其物理设置。

 

音调控件

音调表示为 1/1,024 和 1,024/1 之间的输入速率/输出速率比率,包括 1,024/1。 1/1,024 的比率将音调降低 10 个八进制,而 1,024/1 的比率将它提高 10 个八进制。 只能使用 IXAudio2SourceVoice::SetFrequencyRatio 方法将音调调整应用于源语音,并且仅当未使用XAUDIO2_VOICE_NOPITCH标志创建音调时。 默认频率比率为 1/1:即不更改音调。 XAudio2.h 中提供了两个内联函数,用于在频率比率和半通之间转换:XAudio2FrequencyRatioToSemitonesXAudio2SemitonesToFrequencyRatio

音量和音调控制

XAudio2 编程指南

如何:更改语音音调

如何:更改语音音量