Sdílet prostřednictvím


Zvukové efekty XAudio2

Zvukový efekt je objekt, který přijímá příchozí zvuková data a provádí některé operace s daty před jejich předáním. Pomocí efektu můžete provádět různé úlohy, včetně přidání návratu ke zvukovému streamu a monitorování maximálních úrovní hlasitosti.

Efektové řetězy

Jakýkoli hlas XAudio2 může hostovat řetězec zvukových efektů. Pomocí pole XAUDIO2_EFFECT_DESCRIPTOR struktur můžete určit řetězy efektů. Každý popisovač obsahuje ukazatel na objekt efektu poskytnutý klientem. Tyto objekty musí implementovat rozhraní APO (Audio Processing Object). Další informace o modelu APO najdete v přehledu XAPO.

Řetězy efektů můžou klient upravovat dynamicky (zatímco je spuštěný modul XAudio2), efekty je možné povolit nebo zakázat jednotlivě a parametry efektu je možné změnit – to vše bez přerušení zvuku. Kdykoli se změní jakýkoli aspekt grafu efektu, XAudio2 graf znovu optimalizuje, aby se zabránilo zbytečnému zpracování. Viz IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffecta IXAudio2Voice::SetEffectParameters.

Po připojení efektu k hlasu XAudio2, XAudio2 převezme kontrolu nad efektem a klient by neměl provádět žádné další volání. Nejjednodušší způsob, jak to zajistit, je uvolnit všechny ukazatele na efekt.

Efekty v daném řetězci efektů XAudio2 musí spotřebovávat a produkovat zvuk s plovoucí desetinou čárkou při vzorkovací frekvenci tohoto hlasu. Jediným aspektem zvukového formátu, který můžou změnit, je počet kanálů (například efekt reverb může převést mono data na 5,1). Klient může použít XAUDIO2_EFFECT_DESCRIPTOR.výstupních kanálech pole k určení počtu kanálů, které mají jednotlivé efekty vytvořit. Řetěz efektů selže, pokud některý z efektů nemůže splnit tyto požadavky nebo pokud efekt vytvoří řadu kanálů, které další efekt nemůže zpracovat. Všechny IXAudio2Voice::EnableEffect nebo IXAudio2Voice::D isableEffect volání, která způsobí, že řetězec účinku přestane tyto požadavky plnit, selže.

Rozhraní APO používaná v XAudio2 musí být destruktivní. To znamená, že vždy přepíše všechna data, která najdou ve výstupních vyrovnávacích pamětích. Jinak může být výsledný zvuk nesprávný, protože XAudio2 neposkytuje žádnou záruku, že tyto vyrovnávací paměti byly inicializovány dříve s tichou.

Předdefinované efekty XAudio2

Následující tabulka uvádí sadu předdefinovaných zvukových efektů, které poskytuje XAudio2 a jejich metody vytváření.

Efekt Metoda vytvoření
Ozvěna XAudio2CreateReverb
Měřič svazků XAudio2CreateVolumeMeter

 

Příklad vytvoření a použití instance zvukového efektu najdete v tématu Postupy: Vytvoření řetězu efektů.

Vlastní efekty v XAudio2

Rozhraní API XAPO poskytuje architekturu pro vytváření vlastních zvukových efektů, které můžete použít v XAudio2. Příklad vytvoření vlastního efektu pomocí objektu XAPO najdete v tématu Postupy: Vytvořeníobjektu XAPO .

Knihovna efektů XAPO (XAPOFX)

XAPOFX poskytuje další knihovnu objektů XAPO a společný mechanismus jejich vytváření. Příklad použití XAPOFX s XAudio2, viz Postupy: Použití XAPOFX v XAudio2.

zvukové efekty

Průvodce programováním v XAudio2