Delen via


XAudio2-audio-effecten

Een audio-effect is een object dat binnenkomende audiogegevens accepteert en een bewerking uitvoert op de gegevens voordat deze worden doorgegeven. U kunt een effect gebruiken om verschillende taken uit te voeren, waaronder het toevoegen van reverb aan een audiostream en het bewaken van piekvolumeniveaus.

Effectketens

Elke XAudio2-stem kan een keten van audio-effecten hosten. U kunt een matrix van XAUDIO2_EFFECT_DESCRIPTOR structuren gebruiken om effectketens op te geven. Elke descriptor bevat een aanwijzer naar een effectobject dat door de client wordt geleverd. Deze objecten moeten de APO-interfaces (Audio Processing Object) implementeren. Zie het XAPO-overzicht voor meer informatie over het APO-model.

Effectketens kunnen dynamisch door de client worden gewijzigd (terwijl de XAudio2-engine wordt uitgevoerd), effecten kunnen afzonderlijk worden ingeschakeld of uitgeschakeld en effectparameters kunnen worden gewijzigd, allemaal zonder onderbreking van de audio. Wanneer een aspect van de effectgrafiek verandert, optimaliseert XAudio2 de grafiek opnieuw om onnodige verwerking te voorkomen. Zie IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffecten IXAudio2Voice::SetEffectParameters.

Nadat een effect is gekoppeld aan een XAudio2-stem, neemt XAudio2 de controle over het effect en mag de client er geen verdere aanroepen naar doen. De eenvoudigste manier om ervoor te zorgen dat dit alle aanwijzers op het effect loslaat.

De effecten in een bepaalde XAudio2-effectketen moeten drijvendekommage audio verbruiken en produceren bij de verwerkingsfrequentie van die stem. Het enige aspect van de audio-indeling die ze kunnen wijzigen, is het aantal kanalen (een reverb-effect kan bijvoorbeeld monogegevens converteren naar 5.1). De client kan de XAUDIO2_EFFECT_DESCRIPTORgebruiken.veld OutputChannels om het aantal kanalen op te geven dat elk effect moet produceren. De effectketen mislukt als een van de effecten niet aan deze vereisten kan voldoen of als een effect een aantal kanalen produceert die het volgende effect niet kan verwerken. Alle IXAudio2Voice::EnableEffect of IXAudio2Voice::D isableEffect aanroepen waardoor de effectketen niet meer aan deze vereisten voldoet, mislukt.

APO-interfaces die in XAudio2 worden gebruikt, moeten destructievezijn. Dit betekent dat ze altijd alle gegevens die ze vinden in hun uitvoerbuffers overschrijven. Anders kan de resulterende audio onjuist zijn omdat XAudio2 geen garantie geeft dat deze buffers eerder met stilte zijn geïnitialiseerd.

Ingebouwde XAudio2-effecten

De volgende tabel bevat de set ingebouwde audio-effecten die worden geleverd door XAudio2 en hun creatiemethoden.

Effect Methode voor maken
Reverb XAudio2CreateReverb
Volumemeter XAudio2CreateVolumeMeter

 

Zie How to: Create an Effect Chainvoor een voorbeeld van het maken en gebruiken van een exemplaar van een audio-effect.

Aangepaste effecten in XAudio2

De XAPO-API biedt een framework voor het maken van aangepaste audio-effecten die u kunt gebruiken in XAudio2. Zie Procedure: Een XAPO-maken voor een voorbeeld van het maken van een aangepast effect met XAPO.

XAPO-effectbibliotheek (XAPOFX)

XAPOFX- biedt een extra bibliotheek met XAPO's en een gemeenschappelijk mechanisme voor het maken ervan. Zie voor een voorbeeld van het gebruik van XAPOFX met XAudio2 : XAPOFX gebruiken in XAudio2.

audio-effecten

XAudio2 Programming Guide