El comando haimgs no es completamente correcto. De forma clásica, la panorámica se reduce al reducir el volumen de un solo canal. Eso significa que si quiere que su señal se quede en un 80%, el canal izquierdo mantiene el volumen original, mientras que el canal derecho solo obtiene el 20% del volumen original. Al menos, eso es lo que hizo el código de desplazamiento de sox (y lo que Alan Blumlein parece haber propuesto al inventar el estéreo).
También su comando puede acortarse usando la opción de remix.
Por lo tanto el comando corregido y acortado es:
sox left.wav right.wav stereo.ogg remix 1,2v0.2 1v0.2,2
editar en respuesta al comentario de haimgs:
Sox te avisará si se produce clipping. Pero sí, es posible. Con la opción de remezcla, el volumen de cada canal se escala con el factor 1 / n, donde n es el número de canales de entrada. Pero eso solo se usa si NO se especifica VULME OPCIÓN para el canal de salida (por lo que su 100% + 20% es correcto).
sox también tiene una opción para escalar cualquier canal sin información explícita de volumen, solo agregue "-a" después de "remix" (como "remix -a 1,2v0.2 1v0.2,2") y los volúmenes serán como 50 % + 20% = 70%. Es bastante confuso y ahora no estoy seguro de si también tiene que escalar el volumen de los canales panorámicos en 1 / n, lo que daría como resultado "remix -a 1,2v0.1 1v0.1,2", o 50% + 10% = 60%. Tendré que investigar más en esta dirección. Mientras tanto, puedes leer la sección de remixes en la página man de sox (también disponible en página de inicio de sox ).
Editar después de reflexionar más:
Después de pensarlo, estoy bastante seguro de que también tiene que escalar los volúmenes panorámicos en 1 / n.
Sobre el tema del clipping: dividiendo TODOS Los volúmenes por el número de canales, este problema no puede ocurrir. Pero eso no conserva La potencia original de la señal, porque la potencia de una señal es logarítmica, no lineal. Cuantos más canales mezcle, más silenciosa debe ser la señal. Es por eso que sox también tiene opciones para eso, donde los volúmenes se escalan en 1 / sqrt (n). Para usar esto, simplemente tome una "p" en lugar de una "v" en la parte de remix y ajuste los valores en consecuencia, y también agregue una opción "-p" después de la declaración de remix. Puede ver la diferencia de escalado por 1 / n y por 1 / sqrt (n) aquí .
Lo siguiente es cómo pienso calcular los valores de potencia correctos: para cada canal tiene que resolver 20 * log_10 (factor). Un factor de 2 resultará en ~ 6 (dB), un factor de 0.5 resultará en ~ -6 (dB). Eso es exactamente lo que dice el manual de sox, así que supongo que esto es correcto.
Entonces, finalmente, el comando en tu caso debe ser:
sox left.wav right.wav stereo.ogg remix -p -a 1,2p-6 1p-6,2
No tengo sox en esta máquina, así que no puedo probar la sintaxis correcta de este comando, así que dígame si hay algún problema. Probaré toda esta teoría tan pronto como tenga la oportunidad de hacerlo, porque me enfrentaré a un problema similar, pero tendré que mezclar muchos más canales que solo 2, y es por eso que se me ocurrió esa potencia de señal.