В продолжение тем
https://guitarplayer.ru/index.php?topic=259350.0и
https://guitarplayer.ru/index.php?topic=266917.0Я решил таки собрать некоторую волю в кулак и преобразовать данные наработки в некую отдельную небольшую софтинку.
Прошу любить и жаловать:
MatcherCL version 0.30 MatcherCL_v0.30.zip (265.56 КБ - загружено 173 раз.)
Командная строка для MPT
MatcherCL.exe -mptcl inputName outputName
MatcherCL version 0.29 MatcherCL_v0.29.zip (221.33 КБ - загружено 228 раз.)
Сохранение в 24 бита для MPT.
MatcherCL version 0.28 MatcherCL_v0.28.zip (265.09 КБ - загружено 75 раз.)
Добавлен режим MPT, изменено окно анализа, приложение теперь x64.
MatcherCL version 0.27 MatcherCL_v0.27.zip (220.8 КБ - загружено 236 раз.)
Возможно создание многоканальных импульсов если количество каналов у source и target одинаково, в противном случае моно с осреднением каналов.
MatcherCL version 0.26 MatcherCL_v0.26.zip (193.02 КБ - загружено 126 раз.)
Свёртка из командной строки
MatcherCL.exe -ccl sourceName impulseName convolvedName
MatcherCL version 0.25Работа из командной строки
MatcherCL.exe -cl sourceName targetName impulseName
MatcherCL version 0.24 MatcherCL_v0.24.zip (73.3 КБ - загружено 370 раз.)
Нормализация для сохранения в 24 бита
MatcherCL version 0.23Добавлена возможность сохранения в 24 бита, используя ключ -24
MatcherCL version 0.22 MatcherCL_v0.22.rar (54.19 КБ - загружено 637 раз.)
Исправление ошибки с большими размерами блока анализа, больше 17, т.е. 2^18 итд.
MatcherCL version 0.21Исправление ошибки в многоканальной свёртке (стерео и далее)
Спасибо
Teutos что навёл на неё.
MatcherCL version 0.2 Изменена работа с параметрами командной строки, введены дополнительные параметры.
MatcherCL version 0.12Некоторые исправления, рекомендовано для обновления.
MatcherCL.rar (55.37 КБ - загружено 626 раз.)
MatcherCL version 0.11Добавлена защита от "горячих голов": программа сообщит что разные частоты сэмплирования у анализируемых файлов или у источника и импульса при свёртке не поддерживаются.
Стоит рассматривать её как некоторую альфа-версию, никаких красивостей здесь невозможно обнаружить,
просто небольшое win32 консольное приложение. 64 бита здесь вообще не нужны, метод работы очень экономный,
файлы анализируются с диска, а не читаются полностью, так что ограничений по размеру обрабатываемых файлов нет.
Приложение создавалось для отработки основных алгоритмов, чтобы можно было приступить к созданию подобного плагина, так проще.
Для многоканальных файлов подгоночный импульс берётся из осреднения первых двух каналов (правого и левого), что больше подходит для использования подгоночного импульса целиком для микса, для необходимости получать отдельно для каждого канала - пока придётся пользоваться моно-файлами (либо подкидывайте идеи по доработкам).
Способ использования.
Терминология.
Source - исходный файл который надо подогнать под осреднённую АЧХ (спектр) файла Target.
Результирующий импульс имеет длину 150 мс и короткий фейд в конце (чтобы не было резкого обрыва), задание пользовательской длины оставлю для будущих версий.
1) Для создания подгоночных импульсов.
Просто запускаем
MatcherCL.exe и выбираем файлы согласно названиям диалогов.
В конце можно сохранить исходный сигнал обработанный полученным импульсом, можно не сохранять, нажав Cancel.
Базовый алгоритм работы можно понять из видео:
MatcherCL PromoГейн импульса такой, что после конволюции средний уровень результата будет как у цели подгонки.
При использовании импульса в конволюционниках для этого надо отключить Auto gain и выставить нулевой гейн.
(касается, например, Pristine Space и SIR2).
Дополнительные параметры.
С помощью параметра
-l [длина в секундах] можно установить длину импульса (она не будет превышать размер блока анализа), пример:
MatcherCL.exe -l 0.2Длина получившегося импульса будет 200 мс, если длина блока анализа не меньше.
Для задания блока анализа есть ключ
-bsa [степень 2], пример:
MatcherCL.exe -bsa 10Длина блока анализа составит 2^10=1024.
По умолчанию длина блока (если не указано никаких аргументов) составляет следующую степень 2 после частоты сэмплирования, т.е. для 44100 это будет 2^16=65536.
Степень двойки используется для удобства, т.к. размер блока это степень двойки и указывать правильное число в сэмплах несподручно.
Кроме того, можно указать размер блока для свёртки через
-bsc [размер блока в сэмплах], пример:
MatcherCL.exe -bsc 512Следует помнить что быстрая свёртка неэффективна (хотя работать должна) при размере блока ниже 64 сэмплов.
Чем больше размер блока, тем эффективнее, но указание размера блока намного больше длины импульса нелогично. По сути этот параметр был введён для экспериментов с влиянием размера блока на свёртку.
По умолчанию программа сохраняет в формате с плавающей точкой 32 бита, но есть возможность сохранить результат в 24х битах указав ключ
-24.
Пример использования с несколькими ключами:
MatcherCL.exe -bsa 18 -l 2 -bsc 1024Что значит матчинг с блоком анализа 2^18=262144 сэмпла, обрезка импульса до 2 сек и размер блока при выполнении свёртки 1024 сэмпла.
Естественно эти параметры логично прописать в шорткате к экзешнику, если не запускать из коммандной строки...
При данных ключах будет произведён анализ Source, Target, затем получен импульс и потом проведена свёртка Source полученным импульсом.
2) Как стендалон-конвольвер.
Запускаем
MatcherCL.exe -c(можно создать шорткат для этой операции) и следуем запросам в диалогах.
Дополнительно можно поиграться с размером блока, см. информацию выше.
3) Для тестирования качества конволюционника есть генерация пульсового сигнала (один сэмпл единичной амплитуды, далее ноли):
MatcherCL.exe -piДлина те же 150 мс, частота, по умолчанию, 44100.
Другую частоту можно указать с помощью ключа
-sr [частота в герцах], например:
MatcherCL.exe -pi -sr 96000Кроме того может быть задана длина через ключ
-l.
Суть теста в том что производится свёртка с пульсовым импульсом, согласно определению на выходе должен быть исходный сигнал, т.е., в идеале, файлы должны быть идентичны.
Для выполнения минимально-фазового преобразования импульса, Minimal Phase Transform или MPT, надо использовать режим запуска с ключом
-mpt:
MatcherCL.exe -mptДалее в диалоге выбрать преобразуемый импульс и в следующем диалоге куда сохранять MPT-версию.
Ещё одно видео по использованию:
MatcherCL demo2 v1Предлагаю высказываться по теме, сообщать об ошибках, высказываться о функциональной доработке, делиться матчинговыми импульсами и примерами.