XAudio2 音量和音调控制
本主题介绍 XAudio2 音量和音调控制。
音量控制
音量级别表示为 -XAUDIO2_MAX_VOLUME_LEVEL 到 XAUDIO2_MAX_VOLUME_LEVEL (-224 到 224) 之间的浮点振幅乘数,最大增益为 144.5 dB。 音量为 1.0 表示没有衰减或增益;0 表示沉默;和负级别可用于反转音频的相位。 XAudio2.h 中提供了两个内联函数,用于在卷单位之间进行转换: XAudio2DecibelsToAmplitudeRatio 和 XAudio2AmplitudeRatioToDecibels。
可以在音频流经 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 中提供了两个内联函数,用于在频率比和半音之间转换: XAudio2FrequencyRatioToSemitones 和 XAudio2SemitonesToFrequencyRatio。
相关主题