Автор Тема: MatcherCL - программа для создания подгоночных импульсов  (Прочитано 71151 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн deLuther Автор темы

  • Живу на форуме
  • *******
  • Сообщений: 34194
  • Репутация: +3353/-40
  • alderman of morning star
    • Malefice
В продолжение тем
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 КБ - загружено 110 раз.)
Командная строка для MPT
MatcherCL.exe -mptcl inputName outputName
MatcherCL version 0.29
* MatcherCL_v0.29.zip (221.33 КБ - загружено 212 раз.)
Сохранение в 24 бита для MPT.
MatcherCL version 0.28
* MatcherCL_v0.28.zip (265.09 КБ - загружено 49 раз.)
Добавлен режим MPT, изменено окно анализа, приложение теперь x64.
MatcherCL version 0.27
* MatcherCL_v0.27.zip (220.8 КБ - загружено 224 раз.)
Возможно создание многоканальных импульсов если количество каналов у source и target одинаково, в противном случае моно с осреднением каналов.
MatcherCL version 0.26
* MatcherCL_v0.26.zip (193.02 КБ - загружено 116 раз.)
Свёртка из командной строки
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 КБ - загружено 345 раз.)
Нормализация для сохранения в 24 бита
MatcherCL version 0.23
Добавлена возможность сохранения в 24 бита, используя ключ -24
MatcherCL version 0.22
* MatcherCL_v0.22.rar (54.19 КБ - загружено 610 раз.)
Исправление ошибки с большими размерами блока анализа, больше 17, т.е. 2^18 итд.
MatcherCL version 0.21
Исправление ошибки в многоканальной свёртке (стерео и далее)
Спасибо Teutos что навёл на неё.
MatcherCL version 0.2
Изменена работа с параметрами командной строки, введены дополнительные параметры.
MatcherCL version 0.12
Некоторые исправления, рекомендовано для обновления.
* MatcherCL.rar (55.37 КБ - загружено 611 раз.)
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

Предлагаю высказываться по теме, сообщать об ошибках, высказываться о функциональной доработке, делиться матчинговыми импульсами и примерами.
« Последнее редактирование: Октября 02, 2023, 19:55:47 от deLuther »

Оффлайн guitarjfet

  • Ветеран форума
  • ******
  • Сообщений: 6105
  • Репутация: +1513/-496
О, вот это действительно классная штука  :crazy:

Оффлайн Mozzg

  • Эксперт
  • *****
  • Сообщений: 2255
  • Репутация: +269/-1
deLuther, Гениально. :)

Оффлайн golbol1

  • Живу на форуме
  • *******
  • Сообщений: 15987
  • Репутация: +2320/-16
  • .... УХ ---ТЫ ....
 :yahoo: :dance2: :good:deLuther, Привет ... Блин --глыбако завернул ... ;) :alc: :alc: :alc:+1 за труды ...

Оффлайн Flamma

  • Частый посетитель
  • **
  • Сообщений: 132
  • Репутация: +0/-1
Спасибо за труды, такой вопрос, куда вешать импульс, на чистый сигнал(вначале цепи) или после обработки(после каба)?

Оффлайн deLuther Автор темы

  • Живу на форуме
  • *******
  • Сообщений: 34194
  • Репутация: +3353/-40
  • alderman of morning star
    • Malefice
Flamma,
Так тут как раз можно сгенерить импульс вместо кабсимуляции. Можно конечно и подгоночный при снятии микрофоном, чтобы исправить некоторые недостатки, тогда после каба.

Вобще данным инструментом импульс можно получить следующим образом:
снимаем сигнал с сенда усилка и миком, потом один подгоняем к другому (сенд к снятому миком), получаем импульс который можно будет впоследствии использовать для сигнала с сенда усилка. Можно просто что-то побренчать на хайгейне (желательно), а не прогонять сигнал с компа, чтобы шума было меньше.

Оффлайн Teutos

  • Завсегдатай
  • ***
  • Сообщений: 300
  • Репутация: +29/-0
deLuther, При попытке запустить экзешник появляется командная строка и почти сразу исчезает ???
Скорее всего, я тупой и ничего не умею делать, но всё же хотелось бы разобраться, в чём дело

Оффлайн guitarjfet

  • Ветеран форума
  • ******
  • Сообщений: 6105
  • Репутация: +1513/-496
deLuther, При попытке запустить экзешник появляется командная строка и почти сразу исчезает ???
Скорее всего, я тупой и ничего не умею делать, но всё же хотелось бы разобраться, в чём дело
Задавай имя файла, спектр которого хочешь подогнать и имя файла, под который подгоняешь и все получится  :)

Оффлайн deLuther Автор темы

  • Живу на форуме
  • *******
  • Сообщений: 34194
  • Репутация: +3353/-40
  • alderman of morning star
    • Malefice
Teutos,
Когда запускаешь без аргументов просто вылазит короткая подсказка.
Я же описал процедуру в первом сообщении... или, как всегда, перестарался с заумью?  :crazy:

Оффлайн Teutos

  • Завсегдатай
  • ***
  • Сообщений: 300
  • Репутация: +29/-0
deLuther, Да процедура вроде как более-менее понятна, за исключением начала. Мне нужно просто указать путь к экзешнику Matcher-а, а после этого уже указывать sourse и target, так?

... и добавил:

Стыдно, но объяснять мне, похоже, надо, как ребёнку

Оффлайн deLuther Автор темы

  • Живу на форуме
  • *******
  • Сообщений: 34194
  • Репутация: +3353/-40
  • alderman of morning star
    • Malefice
Teutos,
Ну возьми какой-нибудь FAR или подобное, закинь экзешник к файлам или наоборот, там в командной строке файлы можно добавить через Ctrl-J, чтобы не печатать (Ctrl-F полный путь).
Так-то, если всё в разных папках, придётся указывать полные пути для того, что не лежит в текущей папке.
1068319-0
Да простит меня Santjago за "кошек" ;D
« Последнее редактирование: Сентября 26, 2014, 23:15:43 от deLuther »

Оффлайн Green Day

  • Эксперт
  • *****
  • Сообщений: 1323
  • Репутация: +72/-0
 :typing_on_guitarplayer: программист

Оффлайн deLuther Автор темы

  • Живу на форуме
  • *******
  • Сообщений: 34194
  • Репутация: +3353/-40
  • alderman of morning star
    • Malefice
Ну... не совсем, скорее математик  ;D

Оффлайн Teutos

  • Завсегдатай
  • ***
  • Сообщений: 300
  • Репутация: +29/-0
deLuther, Я немного ещё потупил, но вот дело сделано) Заветный файлик получен, спасибо. Скилаб я в своё время, к своему стыду, так и не смог победить

Оффлайн deLuther Автор темы

  • Живу на форуме
  • *******
  • Сообщений: 34194
  • Репутация: +3353/-40
  • alderman of morning star
    • Malefice
Скилаб я в своё время, к своему стыду, так и не смог победить
Ну то не победить, стыдиться нечего, это было одной из причин написания данного инструмента (помимо отработки технологий). Там хоть головой побейся, а с чтением файлов относительно "большого" размера уже проблема, в моей проге всё просто с диска читается и анализируется, таких ограничений нет. До этого я вообще-то пользовался инструментарием в Mathematica, там хоть большие файлы читались, с неё и переносил алгоритм (там он тоже самописный был у меня).
« Последнее редактирование: Сентября 26, 2014, 23:53:55 от deLuther »