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/1,024 的比率將音調降低 10 個八度,而 1,024/1 的比例則提高 10 個八度。 您只能使用 IXAudio2SourceVoice::SetFrequencyRatio 方法,將音調調整套用至來源語音,而且只有在它們不是使用 XAUDIO2_VOICE_NOPITCH 旗標建立時。 默認頻率比率為 1/1:也就是說,不會變更音調。 XAudio2.h 中提供兩個內嵌函式,以在頻率比率和半音之間轉換:XAudio2FrequencyRatioToSemitones 和 XAudio2SemitonesToFrequencyRatio。
相關主題