Pedalboard

Материал из Абсурдопедии
Перейти к навигацииПерейти к поиску
Aquote1.png

Слушать несжатый PCM без компрессора — это как смотреть сварку без маски.

Aquote2.png
Аудиофил
Aquote1.png

Если программа падает с OOM-киллером, значит ты опять забыл про чанки, сынок.

Aquote2.png
Бородатый сисадмин

Pedalboard (он же Педалборд, спотифаевская примочка, DAW без мышки) — питоновская обертка над монструозным C++ фреймворком JUCE 6, выкатанная на мороз инженерами Spotify. Создана ради 1 цели: дать дата-саентистам и гитарным задротам возможность пакетом навешивать дилеи, компрессоры и VST3-плагины на терабайты аудио без запуска тяжелых графических секвенсоров.

Суть[править]

Обычный звукорежиссер живет в неповоротливых DAW вроде Ableton, Pro Tools или FL Studio. Там есть красивые крутилки, дорожки и кнопки. Но когда инженерам из лаборатории Spotify Audio Intelligence Lab понадобилось скормить в нейросети 1000000 треков с разной степенью искажения для обучения ИИ-диджея и автотюна, сажать толпу индусов кликать мышкой по кнопкам рендера оказалось накладно.

Существовавшие библиотеки на Питоне типа pySoX и librosa либо безбожно тормозили, либо падали при любой нестандартной ситуации. В итоге Питер Собот (Peter Sobot) сотоварищи взял стандарт индустрии — плюсовый движок JUCE 6, натянул на него `pybind11`, выкинул графический оверхед и выложил репозиторий на GitHub под лицензией GPLv3.

Матчасть[править]

Цифровой звук устроен до безобразия примитивно:

  1. Микрофон переводит колебания воздуха в электрическое напряжение.
  2. АЦП делает 44100 (или 48000) замеров амплитуды в секунду (частота дискретизации).
  3. В памяти это превращается в обычный массив чисел `float32`, где 0.0 — тишина, а 1.0 и -1.0 — предельная громкость.

Если число превышает 1.0, наступает клиппинг — цифровая перегрузка, превращающая музыку в противный скрежет.

Грабли[править]

Попытка крутить звук на голом Питоне всегда упирается в 2 классических косяка:

Тормоза[править]

1 минута стереофайла с частотой 44100 Гц содержит 5292000 значений.

  • Обычный цикл `for sample in audio:` с математикой из модуля `math` обрабатывает 1 минуту звука за 8 секунд.
  • Тот же алгоритм на C++ через Pedalboard или векторизованный NumPy выполняет операцию за 23 миллисекунды (в 338 раз быстрее).

Память[править]

Форматы MP3 и OGG жмут тишину почти в 0. Если файл `silence.ogg` весит 3.9 Мб, наивный быдлокодер попытается прочитать его целиком в память. При распаковке 12 часов сжатых нулей превратятся в 14.2 Гб несжатого массива в ОЗУ, после чего процесс моментально прибивает Linux OOM-Killer.

Правильный подход — потоковая обработка порциями по 512, 1024 или 16384 сэмпла за итерацию.

Арсенал[править]

В комплекте идет пачка встроенных обработчиков:

Динамика[править]

  • Compressor: Давит пики, поднимает тихие звуки, участвует в войне за громкость.
  • Limiter: Срезает все, что выше порога, предотвращая клиппинг.
  • Gain: Просто умножает громкость на число в дБ.
  • NoiseGate: Глушит дорожку, пока сигнал не превысит заданный уровень.

Грязь[править]

  • Distortion: Сатурация через гиперболический тангенс (tanh).
  • Clipping: Жесткое обрезание верхушек синусоиды.
  • Bitcrush: Деградация звука до 8, 4 или 2 бит под саундтреки Dendy и Game Boy.
  • GSMFullRateCompressor: Звук мобильника Nokia 3310 из 2002 года с полосой 8000 Гц.
  • MP3Compressor: Эмуляция пожатого MP3 с характерным бульканьем артефактов LAME.

Пространство[править]

Фильтры[править]

  • LadderFilter: Эмуляция 4-полюсного лестничного фильтра Муга образца 1968 года с крутизной 12 или 24 дБ на октаву.
  • HighpassFilter / LowpassFilter: Фильтры 1-го порядка со спадом 6 дБ/октава.
  • PeakFilter / HighShelfFilter / LowShelfFilter: Параметрическая эквализация.

Время[править]

VST[править]

Самый жир библиотеки — загрузка бинарников VST3 (Windows, Linux, macOS) и Audio Unit (macOS):

  • Любой параметр крутится через свойства объекта (`plugin.cutoff = 1200`).
  • Метод `plugin.show_editor()` поднимает родной графический интерфейс плагина прямо из скрипта.
  • Поддерживаются не только эффекты, но и виртуальные инструменты, принимающие на вход пачки MIDI-событий.
  • Параметр `reset=False` отключает сброс внутренних буферов между чанками, не давая обрываться хвостам реверберации.

Голос бога[править]

Практическое применение для обработки бубнежа в дешевый микрофон без покупки студийного железа вроде Shure SM7B за 500 баксов. Делает из голоса школьника вещательного диктора:

  1. HighpassFilter(70 Гц): Вырезает грохот подставки и гул вентиляторов.
  2. PeakFilter(520 Гц, -8 дБ): Вырезает коробочный резонанс (эффект ведра).
  3. PeakFilter(140 Гц, +11 дБ) + PeakFilter(110 Гц, +4 дБ): Наваливает фундаментального низа, будто диктор выкурил 2 пачки Беломора.
  4. Distortion(6 дБ): Ламповый перегруз для склейки спектра.
  5. PeakFilter(2.8 кГц, +3.5 дБ): Подъем читаемости согласных.
  6. HighShelfFilter(8 кГц, +4 дБ): Добавляет верха и воздух.
  7. Compressor(-24 дБ, 5.5:1): Жестко трамбует динамику.
  8. Limiter(-0.5 дБ): Гарантирует отсутствие перегруза.

См. также[править]