Dela via


XAudio2-ljuddiagram

Uppsättningen av alla röster, med deras inneslutna effekter och deras sammankopplingar, kallas för ljudbearbetningsgrafen. Diagrammet tar en uppsättning ljudströmmar från klienten som indata, bearbetar dem och levererar slutresultatet till en ljudenhet. All ljudbearbetning sker i en separat tråd med en periodicitet som definieras av grafens kvant (för närvarande 10 millisekunder i Microsoft Windows och 5 1/3 millisekunder på Xbox 360). Varje kvant millisekunder vaknar tråden och sprider kvant millisekunder av ljuddata genom hela grafen. Ett exempel på hur du skapar ett grundläggande ljuddiagram finns i How to: Build a Basic Audio Processing Graph.

Ett enkelt ljuddiagram:

ett enkelt ljuddiagram

Klienten kan styra grafens tillstånd dynamiskt medan den körs. Kontrollåtgärder kan vara att lägga till och ta bort indata och utdata, ändra interna effekter och sammankopplingar, ange parametrar för effekterna, aktivera och inaktivera delar av diagrammet och så vidare. Ett exempel på hur du dynamiskt ändrar ett ljuddiagram finns i How to: Dynamically Add or Remove Voices From an Audio Graph.

Bearbeta grafen

Alla metodanrop som påverkar ett objekt i grafen anses påverka en ändring av graftillståndet. Ändringar i graftillståndet omfattar följande:

  • Skapa och förstöra röster
  • Starta eller stoppa röster
  • Ändra en rösts mål
  • Ändra effektkedjor
  • Aktivera eller inaktivera effekter
  • Ange parametrar för effekterna eller på de inbyggda SRC:erna, filter, volymer och blandare

Alla ändringar av graftillstånd kan kombineras och utföras som en atomisk transaktion. Dessa atomiska åtgärder kallas åtgärdsuppsättningar. De beskrivs i XAudio2-åtgärdsuppsättningar översikt.

Intern datarepresentation

Ljuddata i XAudio2-grafen lagras och bearbetas alltid i 32-bitars flyttals-PCM-form. Kanalantalet och exempelfrekvensen kan dock variera i diagrammet. Formatet där en viss röst bearbetar ljud bestäms av rösttypen och parametrarna som används för att skapa rösten.

Rösttyp Parametrar
IXAudio2SourceVoice Kanalantalet och exempelfrekvensen för de röster som källrösten skickar ljud till.
IXAudio2SubmixVoice och IXAudio2MasteringVoice Argumenten InputChannels och InputSampleRate som används för att skapa undermix/mastering-rösten.

 

Formatkonvertering

XAudio2 hanterar alla exempelfrekvens- eller kanalkonverteringar som krävs när ljud överförs från en röst till en annan, med följande begränsningar:

  • Alla målröster för en viss röst måste köras med samma exempelfrekvens
  • Effekter i en effektkedja kan ändra ljudets kanalantal, men inte dess exempelfrekvens
  • En effektkedjas antal utdatakanaler måste matcha antalet röster som den skickar till
  • Det går inte att göra någon dynamisk grafändring som bryter mot reglerna ovan

På indatasidan kan källröster läsa data i valfritt giltigt PCM-format eller i något av de komprimerade format som stöds av XAudio2. Om indata komprimeras avkodas de till flyttals-PCM innan någon ytterligare bearbetning görs.

På utdatasidan kan masterröster bara producera PCM-data. Dessa data uppfyller alltid samma begränsningar som beskrivs ovan för indata för PCM-data.

ljuddiagram

programmeringsguide för XAudio2

How to: Build a Basic Audio Processing Graph

Gör så här: Lägg till eller ta bort röster dynamiskt från en ljudgraf

Så här använder du

Så här skapar du en effektkedja