2016-05-25 2 views
0

Я использую SoX для создания белого шума. Я после того, как способ модуляции громкости по всей дорожке таким образом, что позволит создать картину, подобную этой:Конверт в SoX (Sound eXchange) или ffmpeg

White noise envelope effect

Я экспериментировал с замиранием, но выцветает до объема 100% и исчезает до 0% объема, что является просто болью в этом случае.

Эффект тремоло не совсем то, что я получаю после того, как частота паттерна будет меняться со временем.

Единственная альтернатива - разделить файл белого шума на отдельные файлы, применить затухание, а затем нанести на любой конец триммер, чтобы он не исчезал полностью, но это похоже на ненужную обработку.

Я проверил этот пример Using SoX to change the volume level of a range of time in an audio file, но я не думаю, что это совсем то, что мне нужно.

Я использую командную строку в Ubuntu с помощью SoX, но я открыт для предложений с помощью ffmpeg или любого другого решения командной строки на базе Linux.

ответ

1

С FFmpeg, можно использовать объемный фильтр

ffmpeg -i input.wav -af \ 
"volume='if(lt(mod(t\,5)/5\,0.5), 0.2+0.8*mod(2*t\,5)/5\, 1.0-0.8*mod(t-(5/2)\,5)/(5/2))':eval=frame" \ 
    output.wav 

Выражение в приведенном выше фильтра, увеличивает объем от 0,2 до 1,0 в течение Т = 0 до Т = 2,5 секунды, а затем постепенно обратно вниз до 0,2 при t = 5 секунд. Период конверта составляет 5 секунд.

+0

Простой и элегантный ответ. Это сработало отлично. Мне интересно, хотя, если бы я хотел использовать кучу разных конвертов по всей аудиодорожке, как бы я это сделал? Большое спасибо! :) – pJay

+0

Затем вы должны использовать несколько томов, каждый из которых имеет выражение, чтобы их приложения не перекрывались, т. Е. Если один фильтр создает конверт между 30 и 50, тогда никакой другой фильтр не изменяет громкость в этом диапазоне (если вы этого не хотите) , Вы так называете: '-af" volume = ..., volume = ..., volume = ... "' – Mulvya

+0

Блестящий. Это заставило меня двигаться в правильном направлении, хотя я не мог заставить работать цепочку, как вы это предлагали, но мне удалось включить инструкции if-else в инструкции if-else, т. Е. '' Volume = 'if (x, y, if (x, y, if (x, y, z))) – pJay

 Смежные вопросы

  • Нет связанных вопросов^_^