Команда haimgs не совсем верна. Классически вы панорамируете, уменьшая громкость только одного канала. Это означает: если вы хотите, чтобы ваш сигнал оставался на 80% левым, левый канал сохраняет исходную громкость, тогда как правый канал получает только 20% от первоначальной громкости. По крайней мере, именно так поступил код панорамирования sox (и то, что Алан Блюмлейн, похоже, поддержал, изобретая стерео).
Также его команда может быть сокращена с помощью опции remix.
Поэтому исправленная и сокращенная команда:
sox left.wav right.wav stereo.ogg remix 1,2v0.2 1v0.2,2
отредактируйте в ответе на комментарий haimgs:
Сокс предупредит вас, если произойдет отсечение. Но да, это возможно. С опцией remix громкость каждого канала масштабируется с коэффициентом 1/n, где n - количество входных каналов. Но это используется, только если для выходного канала не указано NO VULME OPTION (поэтому ваши 100% + 20% верны).
У sox также есть возможность масштабировать любой канал без явной информации о томе, просто добавьте «-a» после "remix" (например, «remix -a 1,2v0.2 1v0.2,2»), и объемы будут равны 50 % + 20% = 70%. Это довольно запутанно, и сейчас я не уверен, придется ли вам масштабировать громкость панорамируемых каналов на 1/n, что приведет к "remix -a 1,2v0.1 1v0.1,2" или 50% + 10% = 60%. Мне придется продолжить расследование в этом направлении. Тем временем вы можете прочитать раздел ремиксов на странице руководства sox (также доступной на домашней странице sox).
редактировать после дальнейшего отражения:
Подумав об этом, я почти уверен, что вам придется масштабировать и объемы панорамирования на 1/n.
О проблеме отсечения: эта проблема не может возникнуть, если разделить ВСЕ объемы на количество каналов. Но это не сохраняет исходную мощность сигнала, потому что мощность сигнала является логарифмической, а не линейной. Чем больше каналов вы микшируете, тем тише должен быть сигнал. Вот почему у sox есть опции для этого, когда объемы масштабируются на 1/sqrt(n). Чтобы использовать это, просто возьмите "p" вместо "v" в remix-части и измените значения соответствующим образом, а также добавьте «-p» -опцию после оператора remix. Вы можете увидеть разницу масштабирования на 1/n и 1/sqrt(n) здесь.
Вот как я думаю вычислить правильные значения мощности: для каждого канала вы должны решить 20 * log_10(коэффициент). Коэффициент 2 приведет к ~ 6(дБ), коэффициент 0,5 приведет к ~ -6(дБ). Это именно то, что написано в руководстве по sox, так что я думаю, что это правильно.
Итак, наконец, команда в вашем случае должна быть:
sox left.wav right.wav stereo.ogg remix -p -a 1,2p-6 1p-6,2
У меня нет sox на этой машине, поэтому я не могу проверить правильность синтаксиса этой команды, поэтому, пожалуйста, сообщите мне, если есть проблема. Я протестирую всю эту теорию, как только у меня появится такая возможность, потому что я столкнусь с схожей проблемой, но мне придется смешивать гораздо больше каналов, чем просто 2, и именно поэтому я придумал эту мощь сигнала.