2

Я пытаюсь воспроизвести 3 дорожных звука, используя один звуковой файл платных звонков в bash. Я хочу, чтобы звук перекрывал друг друга.

Длительность звонка - 4 секунды.

Я хочу чтобы:

  • первая пошлина начинается
  • пока воспроизводится первый сбор, через 1 секунду после старта начинается второй сбор, перекрывая первый, т. е. второй сбор не останавливает первый
  • в то время как первый и второй игровые сборы, через 1 секунду после начала второго, начинаются третьи, перекрывая первый и второй, не останавливая их.

я пытаюсь

for i in 1 2 3; do mpg123 "single_toll.mp3" & sleep 1 ; done;

Я понял, что первая дорожка воспроизводится полностью, и слышен нечеткий звук, когда следует слышать, что 2-я и 3-я дорожки накладываются на первую.

Что мне не хватает?

1 ответ1

2

На самом деле sox решает (вдохновлено https://stackoverflow.com/questions/14634036/how-to-merge-several-audio-files-using-sox и изменено в соответствии с man-страницей sox):

sox single_toll.mp3 -p pad 1 0 | \
sox - -m single_toll.mp3 -p pad 1 0 remix v2 | \
play - -m single_toll.mp3 remix v2

Параметр remix v2 должен использоваться, потому что когда sox remixes он уменьшает громкость на 1/2, как объясняет man-страница.

Для произвольного количества звонков вторая строка может повторяться столько раз, сколько необходимо, фактически N-2 раза

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .