25 окт в 1:25
На днях Бен Джордан на своем Youtube канале выпустил ролик с провокационным названием: “Мы доказали это: ИИ мастеринг — пустая трата денег”. Идея ролика в том, что с помощью 472 “судей” провели двойное слепое тестирование различных вариантов мастеринга трека, как с использованием систем автоматического мастеринга (включая “умные” режимы в плагинах, например в Ozone), так и с использованием настоящих мастеринговых инженеров. Первые два места заняли “живые” люди, а вот третье место досталось бесплатной системе с открытым исходным кодом “Matchering”.
Я видимо достаточно далек от темы, поскольку никогда про эту систему не слышал. Первый вопрос, который у меня возник: “Какой лимитер она использует?” Открыв исходный текст, я увидел, что используется собственный лимитер под названием “херакс” (лат. Hyrax). Мысленно поаплодировав за выбор названия, я с не меньшим удивлением обнаружил, что автор “Matchering” — Сергей Гришаков (Москва, Российская Федерация).
Далее я стал из любопытства разбирать, как этот лимитер работает, и был немного удивлен используемым решениям.
Из моего опыта общения с инженерами, я условно делю людей по способу мышления на три категории:
1. Программисты. Представляют любой процесс в виде алгоритма, то есть последовательности действий с различными условиями.
2. Схемотехники. Любой процесс представляют в виде принципиальной схемы (токи, напряжения, конденсаторы, операционники и т.д.).
3. Математики. Представляют любой процесс в виде формул (а еще любят матрицы и MatLab).
Например, берем реализацию атаки/восстановления в компрессоре. Программист: если сигнал больше сохраненного состояния, то используем атаку, иначе используем восстановление. Схемотехник: схема с диодом, резисторами и конденсатором, который заряжается и разряжается.
“Hyrax” написан математиком, и поэтому там нет переключения между атакой и восстановлением, зато есть максимум между двумя векторами. Исходный файл представляется в виде вектора чисел, над которыми производятся различные операции. Обрабатывается сразу весь файл целиком.
Самое интересное решение: для сглаживание атаки применяется простой фильтр в 6 дБ на октаву, но примененный два раза: в прямом и обратном направлении. Это дает линейную фазу и фильтр в 12 дБ на октаву с Q=0.5.
Можно ли использовать такой алгоритм в плагине? Если фильтр с бесконечной фазовой характеристикой применить в обратном направлении, то получается, что атака начинается за бесконечное время до события. Но надо ли это? Всегда возможно “обрезать” импульсную характеристику, и тем самым привести бесконечную импульсную характеристику к конечной. Что я и сделал — “обрезал” затухающую характеристику в обратном направлении в точке -120 дБ. В результате такой алгоритм может работать в плагине.
JSFX-плагин, реализующий “хиракс” лимитер, во вложении. К слову, такая атака очень интересно и необычно звучит. Для меня — отличная находка.
Для тех, кто как и я, в первый раз слышит об этом проекте, вот интервью разработчика от января прошлого года:
https://habr.com/ru/articles/709120/
vk.com