Megosztás a következőn keresztül:


XAudio2 Audio Graph

A hangfeldolgozási gráfnak nevezzük az összes hangkészletet a bennük található effektusokkal és azok összekapcsolásaival együtt. A gráf bemenetként az ügyféltől származó hangstreameket veszi fel, feldolgozza őket, és a végeredményt egy hangeszközre továbbítja. Minden hangfeldolgozás egy külön szálon történik, a gráf kvantumja által meghatározott periodikussággal (jelenleg 10 ezredmásodperc a Microsoft Windowson, és 5 1/3 ezredmásodperc az Xbox 360-on). Minden kvantum ezredmásodpercben a szál felébreszti és eloszlatja a hangadatok kvantum ezredmásodpercét a teljes gráfon keresztül. Egy egyszerű hanggráf készítésére példa: Útmutató: Alapszintű hangfeldolgozási gráf létrehozása.

Egy egyszerű hanggráf:

egyszerű hanggráf

Az ügyfél dinamikusan szabályozhatja a gráf állapotát futás közben. A vezérlőműveletek közé tartozhatnak a bemenetek és kimenetek hozzáadása és eltávolítása, a belső hatások és az összekapcsolások módosítása, a hatások paramétereinek beállítása, a gráf egyes részeinek engedélyezése és letiltása stb. A hanggráfok dinamikus módosítására példa: Hanggráfok dinamikus hozzáadása vagy eltávolítása hanggráfból.

A gráf feldolgozása

A gráf bármely objektumát érintő metódushívás gráfállapot-módosítást eredményez. A gráfállapot változásai a következőket tartalmazzák:

  • Hangok létrehozása és megsemmisítése
  • Hangok indítása vagy leállítása
  • Hang célhelyének módosítása
  • Effektusláncok módosítása
  • Effektusok engedélyezése vagy letiltása
  • Paraméterek beállítása a hatásokra vagy a beépített SPC-kre, szűrőkre, kötetekre és keverőkre

A gráfállapot bármilyen módosítása kombinálható és végrehajtható atomi tranzakcióként. Ezeket az atomi műveleteket műveleti halmazoknak nevezzük. Ezeket az XAudio2-műveletkészletek áttekintésében tárgyaljuk.

Belső adatábrázolás

Az XAudio2 gráfon belüli hangadatok tárolása és feldolgozása mindig 32 bites lebegőpontos PCM-formátumban történik. A csatornaszám és a mintasebesség azonban a gráfon belül változhat. Az adott hangfolyamatok hangformátumát a hangtípus és a hang létrehozásához használt paraméterek határozzák meg.

Hangtípus Paraméterek
IXAudio2SourceVoice Azoknak a hangoknak a csatornaszáma és mintasebessége, amelyekre a forráshang hangokat küld.
IXAudio2SubmixVoice és IXAudio2MasteringVoice Az InputChannels és InputSampleRate argumentumok, amelyeket az almix/mastering hang létrehozásához használnak.

 

Konvertálás formázása

Az XAudio2 kezeli a hang egyik hangról a másikra történő átviteléhez szükséges mintavételi arányokat vagy csatornakonverziókat az alábbi korlátozásokkal:

  • Egy adott hang összes célhangjának azonos mintasebességen kell futnia
  • Az effektuslánc effektusai megváltoztathatják a hang csatornaszámát, de a mintasebességét nem.
  • Az effektuslánc kimeneti csatornáinak számának meg kell egyeznie azoknak a hangoknak a számával, amelyekre a hangokat küldi
  • Nem végezhető olyan dinamikus gráfmódosítás, amely megszegné a fenti szabályokat

A bemeneti oldalon a forráshangok bármilyen érvényes PCM-formátumban vagy az XAudio2 által támogatott tömörített formátumokban olvashatják az adatokat. Ha a bemeneti adatok tömörítve vannak, a rendszer a további feldolgozás előtt dekódolja a lebegőpontos PCM-hez.

A kimeneti oldalon a hangok elsajátítása csak PCM-adatokat képes előállítani. Ezek az adatok mindig megfelelnek a bemeneti PCM-adatokra vonatkozó fent leírt korlátozásoknak.

Hanggráfok

XAudio2 programozási útmutató

Útmutató: Alapszintű hangfeldolgozási gráf

Útmutató: Hangok dinamikus hozzáadása vagy eltávolítása hanggráfból

Útmutató: A Submix Voices használata

Útmutató: Effektuslánc létrehozása