Freigeben über


XAudio2 Audio Graph

Die Gruppe aller Stimmen mit ihren enthaltenen Effekten und ihren Verbindungen wird als Audioverarbeitungsgraph bezeichnet. Das Diagramm verwendet eine Reihe von Audiodatenströmen vom Client als Eingabe, verarbeitet sie und übermittelt das Endergebnis an ein Audiogerät. Die gesamte Audioverarbeitung erfolgt in einem separaten Thread mit einer Durch das Quanten des Graphen definierten Periodizität (derzeit 10 Millisekunden unter Microsoft Windows und 5 1/3 Millisekunden auf Xbox 360). In jeder Quantenmisekunde wird der Thread aktiviert und verteilt Quantenmemisekunden von Audiodaten über das gesamte Diagramm. Ein Beispiel für das Erstellen eines einfachen Audiographen finden Sie unter How to: Build a Basic Audio Processing Graph.

Ein einfaches Audiodiagramm:

ein einfaches Audiodiagramm

Der Client kann den Zustand des Graphen während der Ausführung dynamisch steuern. Kontrollaktionen können das Hinzufügen und Entfernen von Ein- und Ausgaben, das Ändern der internen Effekte und Verbindungen, das Festlegen von Parametern für die Effekte, das Aktivieren und Deaktivieren von Teilen des Diagramms usw. umfassen. Ein Beispiel für die dynamische Änderung eines Audiographen finden Sie unter Vorgehensweise: Dynamisches Hinzufügen oder Entfernen von Stimmen aus einem Audiographen.

Verarbeiten des Graphen

Jeder Methodenaufruf, der sich auf ein Beliebiges Objekt im Graphen auswirkt, wird als Auswirkung auf eine Graphzustandsänderung angesehen. Diagrammzustandsänderungen umfassen Folgendes:

  • Erstellen und Zerstören von Stimmen
  • Starten oder Beenden von Stimmen
  • Ändern der Ziele einer Stimme
  • Ändern von Effektketten
  • Aktivieren oder Deaktivieren von Effekten
  • Festlegen von Parametern für die Effekte oder für die integrierten SRCs, Filter, Volumes und Mixer

Jeder Satz von Diagrammzustandsänderungen kann kombiniert und als atomare Transaktion ausgeführt werden. Diese atomaren Vorgänge werden als Vorgangssätze bezeichnet. Sie werden in der Übersicht über XAudio2-Vorgangsgruppen erläutert.

Interne Datendarstellung

Audiodaten im XAudio2-Diagramm werden immer in 32-Bit-Gleitkomma-PCM-Form gespeichert und verarbeitet. Die Kanalanzahl und die Abtastrate können jedoch innerhalb des Diagramms variieren. Das Format, in dem eine bestimmte Stimme Audio verarbeitet, wird durch den Sprachtyp und die Parameter bestimmt, die zum Erstellen der Stimme verwendet werden.

Sprachtyp Parameter
IXAudio2SourceVoice Die Kanalanzahl und die Samplerate der Stimmen, an die die Quellstimme Audio sendet.
IXAudio2SubmixVoice und IXAudio2MasteringVoice Die Argumente InputChannels und InputSampleRate , die zum Erstellen der Submix-/Masterstimme verwendet werden.

 

Formatkonvertierung

XAudio2 verarbeitet alle Samplerate- oder Kanalkonvertierungen, die erforderlich sind, wenn Audio von einer Stimme zur anderen übertragen wird, mit den folgenden Einschränkungen:

  • Alle Zielstimme für eine bestimmte Stimme müssen mit der gleichen Abtastrate ausgeführt werden.
  • Effekte in einer Effektkette können die Kanalanzahl des Audios, aber nicht die Abtastrate ändern.
  • Die Anzahl der Ausgabekanäle einer Effektkette muss mit der Anzahl der Stimmen übereinstimmen, an die sie gesendet wird.
  • Es können keine dynamischen Diagrammänderungen vorgenommen werden, die die oben genannten Regeln brechen würden.

Auf der Eingabeseite können Quellstimms Daten in jedem gültigen PCM-Format oder in einem der von XAudio2 unterstützten komprimierten Formate lesen. Wenn die Eingabedaten komprimiert werden, werden sie zu Gleitkomma-PCM decodiert, bevor die weitere Verarbeitung erfolgt.

Auf der Ausgabeseite können mastering voices nur PCM-Daten erzeugen. Diese Daten erfüllen immer die oben beschriebenen Einschränkungen für eingabe-PCM-Daten.

Audiographen

XAudio2-Programmieranleitung

So wird's gemacht: Erstellen eines grundlegenden Audioverarbeitungsdiagramms

So wird's gemacht: Dynamisches Hinzufügen und Entfernen von Stimmen zu bzw. aus einem Audiodiagramm

So wird's gemacht: Verwenden von Submixstimmen

So wird's gemacht: Erstellen einer Effektkette