XAudio2 hangeffektusok
A hangeffektus olyan objektum, amely a bejövő hangadatokat veszi át, és műveletet hajt végre az adatokon, mielőtt továbbadja azokat. Az effektusokkal különféle feladatokat hajthat végre, például reverb-eket adhat hozzá egy hangstreamhez, és figyelheti a maximális hangerőt.
Effektusláncok
Bármely XAudio2 hang hangeffektusok láncát üzemeltetheti. Az effektusláncok meghatározásához XAUDIO2_EFFECT_DESCRIPTOR struktúrák tömbje használható. Minden leíró tartalmaz egy mutatót az ügyfél által biztosított effektusobjektumhoz. Ezeknek az objektumoknak implementálniuk kell a Hangfeldolgozó objektum (APO) interfészeit. Az APO-modellről további információt az XAPO áttekintési talál.
Az effektusláncokat az ügyfél dinamikusan módosíthatja (miközben az XAudio2 motor fut), az effektusok egyenként engedélyezhetők vagy letilthatók, és az effektusparaméterek módosíthatók – mindezt a hang megszakítása nélkül. Amikor az effektusdiagram bármely aspektusa megváltozik, az XAudio2 újra optimalizálja a gráfot a szükségtelen feldolgozás elkerülése érdekében. Lásd: IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffectés IXAudio2Voice::SetEffectParameters.
Miután egy effektus egy XAudio2 hanghoz van csatolva, az XAudio2 átveszi az irányítást az effektus felett, és az ügyfél nem kezdeményezhet további hívásokat. Ennek legegyszerűbb módja, ha az összes mutatót az effektusra engeszteli.
Egy adott XAudio2 hangeffektuslánc effektusainak lebegőpontos hangot kell használniuk és elő kell állítaniuk az adott hang feldolgozási mintasebességén. A hangformátum egyetlen szempontja a csatornaszám (például egy reverb effektus 5.1-esre konvertálhatja a monoadatokat). Az ügyfél használhatja a XAUDIO2_EFFECT_DESCRIPTOR.OutputChannels mező határozza meg az egyes effektusok által előállított csatornák számát. Az effektuslánc meghiúsul, ha valamelyik effektus nem tudja teljesíteni ezeket a követelményeket, vagy ha egy effektus több csatornát hoz létre, amelyeket a következő effektus nem tud kezelni. Minden IXAudio2Voice::EnableEffect vagy IXAudio2Voice::D isableEffect hívások, amelyek miatt az effektuslánc nem teljesíti ezeket a követelményeket.
Az XAudio2-ben használt APO interfészeknek romboló kell lenniük. Ez azt jelenti, hogy mindig felülírják a kimeneti pufferekben talált adatokat. Ellenkező esetben előfordulhat, hogy az eredményül kapott hang helytelen, mert az XAudio2 nem garantálja, hogy ezek a pufferek korábban csendben inicializálódtak.
XAudio2 beépített effektusok
Az alábbi táblázat az XAudio2 által biztosított beépített hangeffektusokat és azok létrehozási módszereit sorolja fel.
Hatás | Létrehozási módszer |
---|---|
Reverb | XAudio2CreateReverb |
Kötetmérő | XAudio2CreateVolumeMeter |
Egy hangeffektus egy példányának létrehozására és használatára példa: Útmutató: Effektuslánc létrehozása.
Egyéni effektusok az XAudio2-ben
A XAPO API keretrendszert biztosít az XAudio2-ben használható egyéni hangeffektusok létrehozásához. Ha egyéni effektust szeretne létrehozni az XAPO-val, tekintse meg a : XAPO-létrehozása című témakört.
XAPO effektustár (XAPOFX)
XAPOFX további XAPO-kódtárat és azok létrehozásának gyakori mechanizmusát biztosítja. Az XAPOFX XAudio2-vel való használatára példa: Útmutató: Az XAPOFX használata az XAudio2-ben.
Kapcsolódó témakörök