2009-06-25 21 views
9

Se ho già i dati wav in due array (canale sinistro & canale destro) come si fa a convertirli in un singolo array mono?Come convertire un wav stereo in mono

Esiste una funzione f in modo che Mono [x] = f (L [x], R [x])?

+0

Se non dovessi farlo molto spesso, userei Audacity. –

+0

Ogni volta che importa l'audio nella mia applicazione – Nifle

risposta

8

Il missaggio è la media dei due canali.

f_mono = function(l, r) { 
    return (l + r)/2; 
} 
+0

Che semplice ... – Nifle

+0

Qualcosa da tenere a mente: supponiamo di avere un file stereo dove c'è un suono solo sinistro e un suono centrale, che in origine sono percepiti come avere un volume uguale . Quando aggiungi linearmente i due canali insieme, il suono centrale verrà percepito come più forte. (Esegui i calcoli di energia dell'onda sonora con due diffusori a punti e un microfono, quindi sposta i diffusori insieme.) Non ho idee brillanti su come evitarlo, comunque. – ephemient

+0

Per fortuna non è un problema. L'audio è solo un aiuto visivo per problemi di temporizzazione. Il file audio originale viene utilizzato quando si riproduce l'ausdio. Volevo solo convertire in mono per facilitare il calcolo della forma d'onda. Vedi http://stackoverflow.com/questions/1035533/how-do-i-visualize-audio-data – Nifle

4

Basta prendere una media di entrambi i valori.