LINUX.ORG.RU

Утилита для тембральной коррекции Timbre-Mill

 


0

1

Всем привет!

Сегодня я готов представить вам ещё одну утилиту для тембральной коррекции аудио. Утилита сделана на заказ, за деньги, и по требованиям заказчика выложена в open source.

https://github.com/sadko4u/timbre-mill

Если не совсем понятно, какие цели данная утилита предназначена решать, то есть ещё одно описание рабочего процесса:

https://web.archive.org/web/20161208055429/http://www.dariusjalexander.com/2015/08/12/ir-convolution

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

А ты проводишь какое-то тестирование, проверку насколько точно и на каком материале оно работает? Вот это крайне интересно было бы увидеть, а также увидеть методику тестирования.

James_Holden ()

Основной вопрос лично у меня - оно корректирует только тембр, или реверберацию/эхо тоже переносит?

То есть если в master есть реверберация, а в slave нету, после коррекции туда ревер добавится, или только скорректируется тембр?

James_Holden ()

не хватает примеров.

For each file group, the tool performs spectral analysis of master file and each child file. After that, it computes the raw inverse impulse responses which allow to tune tonal characteristics of the master file to match the tonal characteristics of each corresponding child file.

вообще ничего не понятно, но очень интересно. я просто не представляю, как можно вычислить ir имея только фильтрованный сигнал. что там в файлах должно быть?

anonymous ()
Ответ на: комментарий от James_Holden

Основной вопрос лично у меня - оно корректирует только тембр, или реверберацию/эхо тоже переносит?

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

Алгоритм такой:

  1. Вычисляем усреднённый спектр (АЧХ) master и child треков.
  2. Получаем корректирующий АЧХ делением одного спектра на другой.
  3. Из полученной АЧХ формируем импульсный отклик, при этом делаем его линейным по фазе (симметричным относительно центра).
  4. Обрезаем импульсный отклик и делаем фейды (при необходимости).
  5. Сворачиваем полученным импульсным откликом master-файл и экпортируем в отдельный трек.

И такую задачу выполняем для всей пачки файлов в конфигурации.

sadko4u ()
Ответ на: удаленный комментарий

Время на разработку потрачено. Работа выполнена согласно техническому заданию. Заказчик остался доволен, деньги заплатил по договорённости в полном объёме. Я не понимаю вашего недовольства.

sadko4u ()
Ответ на: комментарий от James_Holden

оно корректирует только тембр, или реверберацию/эхо тоже переносит?

Нет, долгую реверберацию не перенесёт. При длинных размерах FFT-блоков, наоборот, может сгенерировать немного ревера, что можно решить, сократив длину FFT-блока.

sadko4u ()
Ответ на: комментарий от anonymous

вообще ничего не понятно, но очень интересно. я просто не представляю, как можно вычислить ir имея только фильтрованный сигнал. что там в файлах должно быть?

Заказчик на linuxmusicians.com написал, что в ближайшее время сделает обзор утилиты и того, как ей можно пользоваться.

https://linuxmusicians.com/viewtopic.php?p=129401#p129401

sadko4u ()
Ответ на: комментарий от Harald

а почему бы не оформить это как фильтр для ffmpeg

Потому что в ТЗ заказчика этого не было. Можете сами это сделать, если вам надо, благо код есть.

anonymous ()
Ответ на: комментарий от sadko4u

Я не понимаю вашего недовольства.

Да это лоровское рагульё обычное дурачится, не обращайте внимания, их тут много, в т.ч. среди модеров.

ЗЫ: спасибо за LSP )

anonymous ()
Ответ на: комментарий от sadko4u

Нет, долгую реверберацию не перенесёт.

Да, я понял по твоему описанию алгоритма.

Вот методика усреднения спектра меня больше всего интересует, посмотрю в коде.

А так у меня такой де алгоритм, только отклик делаю минимально-фазовым.

У меня в чем проблема - с первого раза точно не корректирует, на слух бывает слышно. Если применить мой алгоритм несколько раз подряд - тогда да, спектры выравниваются. Планирую разобраться почему так да все времени нет. То ли ошибка в коде, то ли неправильно усредняю АЧХ.

James_Holden ()

Update: по дополнительной просьбе заказчика впилил параметры, позволяющие установить dry/wet баланс между обработанным и необработанным сигналом на выходе аудиофайла. С сохранением фазирования, разумеется.

sadko4u ()
Ответ на: комментарий от Korchevatel

Будешь позволять себя нагибать будут докапываться, не будешь не будут. И да они приходят только туда где популярность и бабло. Обычные люди/проекты им по барабану им нужны деньги и слава. Так что шлёшь куда подальше и живёшь в мире и покое.

anonymous ()
Ответ на: комментарий от sadko4u

Дочитал твой код, и кажется понял в чем у меня проблема. У меня немного иначе происходит усреднение спектра (вычисление average значений), и - я дубина не использую окна! Все с прямоугольным окном делаю, видимо поэтому у меня искажается спектр.

James_Holden ()
Ответ на: комментарий от sadko4u

Попробовал использовать утилиту.

Такой json файл

{
	"srate": 44100,
	"dst_path": "export/out",
	"src_path": "export/in",
	"file": "${group}/${master_name}/${file_name} - processed.wav",
	"fft_rank": 16,
	"produce": [ "ir", "audio" ],
	"dry" : -12,
	"wet" : 0,

	"ir": {
		"head_cut": 45,
		"tail_cut": 5,
		"fade_in": 2,
		"fade_out": 50,
		"file": "${group}/${master_name}/${file_name} - IR.wav",
		"raw": "${group}/${master_name}/${file_name} - Raw IR.wav"
	},

	"groups": {
		"gr1": {
			"master": "master-16-44.wav",
			"files": [
				"target.wav"
			]
		}
	}
}

При этом в папке out оказывается обработанным файл master-16-44.wav под именем target - processed.wav.

По-моему файлы местами перепутываются, или я что-то недопонял?

James_Holden ()
Ответ на: комментарий от sadko4u

Перечитал описание - да, теперь я понял. Имя файла мне по боку пока.

Корректирует классно.

Вот бы еще полученную АЧХ FIR фильтра можно было через GUI смотреть и вручную корректировать.

James_Holden ()
Ответ на: комментарий от James_Holden

Это, я думаю, хороший задел на то, чтобы сделать отдельный плагин (matching equalizer). Возможно, в ближайшее время займусь им. Пока всё же в приорритете долгострой с 1.2.0.

sadko4u ()