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。
相关主题