Skip to content Skip to sidebar Skip to footer

Come evitare che AudioClip identici riprodotti nello stesso istante distorcano il volume finale in Unity

Durante lo sviluppo di un applicativo o un videogioco in Unity può capitare di incorrere in un classico problema dovuto alle forme d’onda dei suoni stessi: eseguendo due o più suoni identici nello stesso istante si ottiene un fastidioso effetto di aumento del volume incontrollato. C’è da dire che questo effetto è del tutto corretto in ambito sonoro anche se ovviamente, come impatto sulla giocabilità ed esperienza utente, crea non pochi problemi.

Per risolvere, o comunque aggirare e mitigare, il problema esistono 4 possibili approcci.

1. Non eseguire suoni identici nello stesso istante

Potrà sembrare la soluzione più ovvia ma per evitare il fastidioso problema è possibile implementare, a livello di struttura/codice, un sistema che eviti la riproduzione dello stesso suono contemporaneamente. Ad esempio è possibile riconoscere se un clip sta già suonando quindi escludere tutti gli altri identici che devono essere riprodotti. Oppure è possibile fare in modo che il generatore del suono sia unico e non differente per ogni suono. Infine se si sa per certo quali oggetti riprodurranno lo stesso suono contemporaneamente è possibile disabilitare tutte le fonti audio associate lasciandone una soltanto.

2. Dividere il volume di ciascuno clip per il numero di clip riprodotti

Riproducendo 4 suoni identici nello stesso istante la forma d’onda risultante risulta 4 volte più ampia e quindi con un volume 4 volte più alto. Per questo motivo si può intervenire sul volume di ciascun suono e dividerlo per il numero di clip riprodotti; in questo caso si dovrebbe ridurre ciascun suono di 3/4 del volume.

3. Aggiungere una variazione alla forma d’onda dei clip riprodotti contemporanei

Se il problema è dato dalla sovrapposizione di forme d’onda identiche, è possibile introdurre una perturbazione/variazione delle forma d’onda modificando di poco i valori di Pitch e Volume di ogni singolo clip audio. Questo presuppone quindi che il singolo clip sia riprodotto attraverso un AudioSource dedicato, in quanto solo così è possibile definire pitch e volume a livello specifico.

4. Aggiungere al mixer di riproduzione un effetto di compressione

L’ultima soluzione prevede di operare sul mixer associato agli AudioSource con lo stesso suono. In questo caso è possibile aggiungere un effetto di compressione (Compressor). Il compressore di Unity è di fatto un Limiter che permette di gestire i picchi di volume oltre i 0db.

Conclusioni

Il consiglio è quello di provare ad implementare le strade possibili e individuare quale è più adatta a risolvere il proprio problema. Non si esclude che tutte le soluzioni proposte possano essere implementare contemporaneamente al fine di ridurre al minimo, se non eliminare, l’indesiderato effetto.