Controllo volume e inclinazione di XAudio2
Questo argomento descrive il volume e il controllo pitch di XAudio2.
Controllo volume
I livelli di volume sono espressi come moltiplicatori di ampiezza a virgola mobile tra -XAUDIO2_MAX_VOLUME_LEVEL e XAUDIO2_MAX_VOLUME_LEVEL (da-224 a 224), con un guadagno massimo di 144,5 dB. Un volume pari a 1,0 indica che non c'è alcuna attenuazione o guadagno; 0 significa silenzio; e i livelli negativi possono essere usati per invertire la fase dell'audio. In XAudio2.h vengono fornite due funzioni inline per la conversione tra unità di volume: XAudio2DecibelsToAmplitudeRatio e XAudio2AmplitudeRatioToDecibels.
È possibile applicare un livello di volume all'audio in diversi punti man mano che scorre il grafico XAudio2:
- Tutti i tipi di voce applicano un livello di volume complessivo all'input, che controllano usando il metodo IXAudio2Voice::SetVolume . Nelle voci di submix e mastering, il livello di volume complessivo viene applicato immediatamente prima della catena di filtri e effetti incorporata della voce. Nelle voci di origine, il livello di volume complessivo viene applicato dopo la catena di filtri e effetti predefinita della voce.
- Le voci applicano un livello di volume per canale all'output, che controllano usando il metodo IXAudio2Voice::SetChannelVolumes . Il livello di volume per canale viene applicato subito dopo la conversione della frequenza di campionamento finale della voce e prima che venga inviato ad altre voci.
- Ogni connessione tra una voce e un'altra ha una tabella di livelli usata per inviare audio da ogni canale di origine a ogni canale di destinazione, controllato tramite il metodo IXAudio2Voice::SetOutputMatrix .
Tutti i volumi complessivi e i volumi di canale inizialmente sono 1.0. Per impostazione predefinita, tutte le matrici a livello di invio sono valori appropriati che mantengono la potenza del segnale e il posizionamento del canale nel modo più accurato possibile. Per informazioni dettagliate, vedere panoramica del mapping dei canali predefinito di XAudio2 .
Nota
XAudio2 regola automaticamente i livelli di volume in base alle impostazioni dell'altoparlante dell'utente per mantenere un livello di volume coerente tra le configurazioni. Se le impostazioni dell'utente non corrispondono alla configurazione fisica, il volume sarà troppo forte o troppo morbido rispetto a un sistema con impostazioni accurate. Ad esempio, un sistema configurato per altoparlanti audio surround 5.1 che ha solo due altoparlanti collegati sarà troppo morbido. XAudio2 non è in grado di rilevare se le impostazioni dell'altoparlante dell'utente corrispondono correttamente alla configurazione fisica.
Controllo inclinazione
Le piazzole sono espresse come rapporti di velocità di input/velocità di output compresi tra 1/1.024 e 1.024/1, inclusi. Un rapporto di 1/1.024 abbassa il passo di 10 ottave, mentre un rapporto di 1.024/1 lo solleva di 10 ottaves. È possibile usare solo il metodo IXAudio2SourceVoice::SetFrequencyRatio per applicare le regolazioni del passo alle voci di origine e solo se non sono state create con il flag XAUDIO2_VOICE_NOPITCH. Il rapporto di frequenza predefinito è 1/1, ovvero nessun cambiamento di passo. In XAudio2.h vengono fornite due funzioni inline per la conversione tra rapporti di frequenza e semitoni: XAudio2FrequencyRatioToSemitones e XAudio2SemitonesToFrequencyRatio.
Argomenti correlati