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.
Kapcsolódó témakörök
-
Útmutató: Hangok dinamikus hozzáadása vagy eltávolítása hanggráfból
-
Útmutató: A Submix Voices használata