Freigeben über


XAudio2-Lautstärke- und Tonhöhensteuerung

In diesem Thema wird die XAudio2-Lautstärke- und Tonhöhensteuerung beschrieben.

Lautstärkeregelung

Volumenpegel werden als Gleitkommaamplitamplitermultiplikatoren zwischen -XAUDIO2_MAX_VOLUME_LEVEL und XAUDIO2_MAX_VOLUME_LEVEL (-224 bis 224) mit einer maximalen Verstärkung von 144,5 dB ausgedrückt. Ein Volumen von 1,0 bedeutet, dass es keine Dämpfung oder Verstärkung gibt; 0 bedeutet Stille; und negative Werte können verwendet werden, um die Audiophase umzukehren. Zwei Inlinefunktionen werden in XAudio2.h bereitgestellt, um zwischen Volumeneinheiten zu konvertieren: XAudio2DecibelsToAmplitudeRatio und XAudio2AmplitudeRatioToDecibels.

Sie können eine Lautstärkestufe an mehreren Punkten auf die Audiodaten anwenden, während sie durch das XAudio2-Diagramm fließt:

  • Alle Sprachtypen wenden eine Gesamtlautstärke auf ihre Eingabe an, die sie mit der IXAudio2Voice::SetVolume-Methode steuern. Bei Submix- und Masterstimme wird die Gesamtlautstärke unmittelbar vor dem integrierten Filter und der Effektkette der Stimme angewendet. In Quellstimme wird die Gesamtlautstärke nach dem integrierten Filter und der Effektkette der Stimme angewendet.
  • Stimmen wenden eine Lautstärkestufe pro Kanal auf ihre Ausgabe an, die sie mit der IXAudio2Voice::SetChannelVolumes-Methode steuern. Die Lautstärkestufe pro Kanal wird unmittelbar nach der endgültigen Konvertierung der Abtastrate der Stimme und vor dem Senden an andere Stimmen angewendet.
  • Jede Verbindung zwischen einer Stimme und einer anderen verfügt über eine Tabelle mit Ebenen, die zum Senden von Audio von jedem Quellkanal an jeden Zielkanal verwendet werden, der mithilfe der IXAudio2Voice::SetOutputMatrix-Methode gesteuert wird.

Alle Gesamtvolumes und Kanalvolumes sind anfänglich standardmäßig 1.0. Alle Matrizen auf Sendeebene sind standardmäßig auf geeignete Werte festgelegt, die die Signalleistung und Die Kanalpositionierung so genau wie möglich beibehalten. Weitere Informationen finden Sie in der Übersicht über die XAudio2-Standardkanalzuordnung .

Hinweis

XAudio2 passt die Lautstärke automatisch basierend auf den Lautsprechereinstellungen des Benutzers an, um eine konsistente Lautstärke in allen Konfigurationen beizubehalten. Wenn die Einstellungen des Benutzers nicht mit ihrer physischen Konfiguration übereinstimmen, ist die Lautstärke im Vergleich zu einem System mit genauen Einstellungen entweder zu laut oder zu weich. Beispielsweise klingt ein System, das für 5.1-Surround-Soundlautsprecher konfiguriert ist und nur über zwei angeschlossene Lautsprecher verfügt, zu weich. XAudio2 kann nicht erkennen, ob die Einstellungen des Benutzerlautsprechers dem physischen Setup korrekt entsprechen.

 

Pitch-Steuerelement

Pitches werden als Input Rate/Output Rate Ratios zwischen 1/1.024 und 1.024/1 (einschließlich) ausgedrückt. Ein Verhältnis von 1:1.024 senkt die Tonhöhe um 10 Oktaven, während ein Verhältnis von 1.024/1 die Tonhöhe um 10 Oktaven erhöht. Sie können die IXAudio2SourceVoice::SetFrequencyRatio-Methode nur verwenden, um Tonhöhenanpassungen auf Quellstimme anzuwenden, und zwar nur, wenn sie nicht mit dem flag XAUDIO2_VOICE_NOPITCH erstellt wurden. Das Standardfrequenzverhältnis ist 1:1, d. h. keine Tonhöhenänderung. In XAudio2.h werden zwei Inlinefunktionen bereitgestellt, um zwischen Frequenzverhältnissen und Semitönen zu konvertieren: XAudio2FrequencyRatioToSemitones und XAudio2SemitonesToFrequencyRatio.

Lautstärke- und Tonhöhensteuerung

XAudio2-Programmieranleitung

Vorgehensweise: Ändern der Tonhöhe

Vorgehensweise: Ändern der Sprachlautstärke