Condividi tramite


Effetti audio di XAudio2

Un effetto audio è un oggetto che accetta dati audio in ingresso ed esegue alcune operazioni sui dati prima di passarlo. È possibile usare un effetto per eseguire un'ampia gamma di attività, tra cui l'aggiunta di riverbero a un flusso audio e il monitoraggio dei livelli di volume di picco.

Catene di effetti

Qualsiasi voce XAudio2 può ospitare una catena di effetti audio. È possibile usare una matrice di strutture XAUDIO2_EFFECT_DESCRIPTOR per specificare catene di effetti. Ogni descrittore contiene un puntatore a un oggetto effetto fornito dal client. Questi oggetti devono implementare le interfacce APO (Audio Processing Object). Per altre informazioni sul modello APO, vedere Panoramica di XAPO .

Le catene di effetti possono essere modificate dal client in modo dinamico (mentre il motore XAudio2 è in esecuzione), gli effetti possono essere abilitati o disabilitati singolarmente e i parametri dell'effetto possono essere modificati, tutto senza interruzioni dell'audio. Ogni volta che un aspetto del grafico degli effetti cambia, XAudio2 ottimizza nuovamente il grafico per evitare l'elaborazione non necessaria. Vedere IXAudio2Voice::SetEffectChain, IXAudio2Voice::EnableEffect e IXAudio2Voice::SetEffectParameters.

Dopo che un effetto è collegato a una voce XAudio2, XAudio2 assume il controllo dell'effetto e il client non deve effettuare ulteriori chiamate. Il modo più semplice per assicurarsi che ciò sia quello di rilasciare tutti i puntatori all'effetto.

Gli effetti in una determinata catena di effetti della voce XAudio2 devono utilizzare e produrre audio a virgola mobile alla frequenza di campionamento di elaborazione della voce. L'unico aspetto del formato audio che può cambiare è il conteggio dei canali (ad esempio, un effetto riverbero può convertire i dati mono in 5,1). Il client può usare il XAUDIO2_EFFECT_DESCRIPTOR. Campo OutputChannels per specificare il numero di canali che ogni effetto deve produrre. La catena di effetti ha esito negativo se uno degli effetti non può soddisfare questi requisiti o se un effetto produce un numero di canali che l'effetto successivo non può gestire. Tutte le chiamate IXAudio2Voice::EnableEffect o IXAudio2Voice::D isableEffect che causano l'interruzione di questi requisiti da parte della catena di effetti.

Le interfacce APO usate in XAudio2 devono essere distruttive. Ciò significa che sovrascrivono sempre tutti i dati che trovano nei buffer di output. In caso contrario, l'audio risultante potrebbe non essere corretto perché XAudio2 non garantisce che questi buffer siano stati inizializzati in precedenza con il silenzio.

Effetti predefiniti di XAudio2

La tabella seguente elenca il set di effetti audio predefiniti forniti da XAudio2 e i relativi metodi di creazione.

Effetto Metodo di creazione
Riverbero XAudio2CreateReverb
Contatore del volume XAudio2CreateVolumeMeter

 

Per un esempio di creazione e uso di un'istanza di un effetto audio, vedere Procedura: Creare una catena di effetti.

Effetti personalizzati in XAudio2

L'API XAPO fornisce un framework per la creazione di effetti audio personalizzati che è possibile usare in XAudio2. Per un esempio di creazione di un effetto personalizzato con XAPO, vedere Procedura: Creare un XAPO.

Libreria di effetti XAPO (XAPOFX)

XAPOFX offre una libreria aggiuntiva di XAPOs e un meccanismo comune per la creazione. Per un esempio di uso di XAPOFX con XAudio2, vedere Procedura: Usare XAPOFX in XAudio2.

Effetti audio

Guida alla programmazione di XAudio2