Как стать автором
Обновить

Комментарии 33

мы проверяем работоспособность всей предложенной цепочки действий

А можно узнать, почему такая цепочка была выбрана? Почему не написать программу, которая и на входе берет WAV или mp3, обрабатывает и выдает тоже WAV или mp3? Заодно можно сделать кнопку "Play" и прямо на ходу слушать результат обработки. А еще можно сделать кнопку "Bypass", чтобы можно было прямо во время воспроизведения включать/выключать обработку, разницу можно будет сразу оценить.

попробовать многоканальную систему наподобие Aphex Aural Exciter

Зачем здесь многоканальность? И как Вы собираетесь попробовать эту систему в предложенной цепочке действий?

написать можно и их много уже написано, но я не нашел именно с возведением в квадрат. Кроме того декодинг мп3 да и wav не такая простая задача, надо готовые либы использовать, и так как использовался корпоративный комп под лимитированным юзером (в ночные смены сисадмином когда все тихо) возникли бы проблемы с лицензиями и безопасностью). А може и не возникли - но надо разбираться.

Плюсы - Эксель уже был установлен, легальный. Аудасити - легальный, фрии, опен сорс, админских прав при установке не требует.

Эксель - не требует компиляции, не нужна Visual Studio, скорость обработки сравнительно хорошая, не С++ конечно, но норм. Работает норм под лимитированным юзером на корп. ПК.

Лекго модифицировать различные алгоритмы без перекомпиляции, есть операции с комплексными числами, много нелеинейных и линейных ф-й из коробки, легко визуализировать графики, много типов, разнобразные. В целом удобная среда быстрой проверки математических идей.

---

Зачем здесь многоканальность? И как Вы собираетесь попробовать эту систему в предложенной цепочке действий?

В Аурал Эксайтер - звук делится на НЧ, СЧ, ВЧ - по всем трем каналам применяются разные нелинейные обработки, и фильтры разные. Все это можно реализовать в Эксель - ФНЧ, ФСЧ, ФВЧ, разные виды нелинейностей, пост фильтрацию. В целом это экспериментальная методология и цепочка для быстрой проверки множества и возможно сложных математических алгоритмов возможно с визуализацией промежуточных результатов

Тогда это не многоканальность, а многополосность. В целом идея понятна, просто никогда раньше не видел, чтобы на VBA делали DSP. Можно, конечно. Просто я больше 20 лет назад на c++ всякие фильтры для звука писал, и приходилось стараться, чтобы на каком-нибудь Pentium 100 это в реальном времени успевало звук обрабатывать.

БПФ скажем 256 точек тянуло?

И куда больше тянуло. FIR equalizer на 10000 точек в стерео, например.

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

разница в звуке есть, некоторый подъем средних частот. Но это малозаметное явление, в реальных ламповых усилителях эффект реально ощущается намного сильнее

Конечно Python подойдет для таких целей лучше, но и Excel - интересное нестандартное применение. Предлагаю попробовать логарифм о смещением и фильтр низких частот после.

Согласен, и Python уже установил - он тоже поставился без адмиских прав, но вот за библиотеками в инет - это оказалось политиками безопасности корпоративной сети запрещено, пока пробую уговорить дать таковые. Но Excel все же довольно удобен, в частности сохранение сэмплов в виде столбца таблицы позволяет легко редактировать куски данных, конечно это есть и в Аудасити, но на мой вкус в Excel удобней. И еще автоматический пересчет и модификация графиков по всей (или части) цепочке если в ней несколько обработчиков - удобно. В Аудасити нет сохранения промежуточных результатов из коробки - надо в проекте плодить типа "дорожки", которые не дороки, а результаты работы предыдущих обработчиков.

Для либ админ-права не нужны, нужен pip и интернет доступ к репу https://pypi.org/

Нажмите Win+R Enter Введите cmd Enter В консоли выполните pip check Enter - если ошибка, значит Python встал криво (забыли поставить флаг Add Path) или без pip (пакетный менеджер). Тогда качаем в папку с Python вот это https://bootstrap.pypa.io/get-pip.py и запускаем в консоли этот файл: python get-pip.py Повторяем pip check Enter

Если ошибок нет - ставим нужные либы: pip install <libname>

столкнулся с тем что имеется выборочная блокировка некоторых бибилиотек при попытке загрузки через интеренет (pip install <libname> ) - в частности NumPi установился, а одна из бибилиотек по дереву решений - не смогла скачаться. Подскажите плиз у Питона только через интернет возможна установка библиотек - нет возможности как то отдельно скачать и установить? С флэшки? С сетевого диска?

Конечно, всё есть. Скачиваете в папку с pip.exe файл либы и запускаете pip install <libname> Для других локаций - пропишите к ней путь (но проще как написано выше, положить рядом.

В выборочную блокировку не верю, разве что админ с со склонностями к саботажу. Хотя возможно прозаичное ограничение на объем скачиваемого файла (ML-либы м.б. за сотни МБ).

Что касается упрямства некоторых либ - оно проявляется в ошибках установки или при сборке из исходников или компиляции с исп. других либ. План Б на этот случай - бинарные сборки/"колеса" итп вот отсюда: https://www.lfd.uci.edu/~gohlke/pythonlibs/

А почему Вы прибавили единицу к синусам перед возведением в квадрат?

это имитация так называемого сеточного смещения на лампе. 1 не обязательно, в данном случае была выбрана 1 чтобы сигнал в сумме с 1 не становился отрицательным, для избежания "заворачивания" его вверх - после возведения в квадрат - такого эффекта в ламповых усилителях нет и он неприятно воспринимается на слух как жужжание. После возведения в квадрат вычисляется среднее или постоянная составляющая на радиолюбительском жаргоне и вычитается из сигнала. Потому на спектре нет пика в 0 Гц. В ламповых усилителях также постоянная составляющая не проходит через трасформатор на динамики.

получается, чтобы сохранить исходную гармонику.

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

Тогда, возможно, было бы правдоподобнее использовать уравнение i = k1 * u + k2 * u*u, где k2 << k1, u = A*sin(...) + A.

ну да близко... (sin(x)+1)**2=sin(x)**2 + 2*sin(x) +1 = (1-cos(2*x))/2 + 2*sin(x)+1 =

0.5-0.5*cos(2*x)+2*sin(x)+1

Но надо учесть, что реальный сигнал содержит уже изначально целый ряд гармоник (синусов) в том числе некратных частот разной амплитуды и вывод аналитического выражения от возведения в квадрат довольно громоздкий

Тогда вопрос зачем всё это делается :)

логика такая, есть лампы, ои дают классный звук, попробуем в первом приближении смоделировать лампу, известно - лампы генерят нелинейные искаджения, небольшие, в основном считается что четные гармоники, ВАХ лампы в некоторых пределах хорошо аппрокимируется x**2 - попробуем это сделать и послушаем что получилось. А ка вы предлагаете?

Ваша формула на реальных сигнала будет

i = k1 * u + k2 * u*u, -> k1*(n1*sin(b1*x) + a1 + k3*sin(b2*x)+a2 +..) + k2*((n1*sin(b1*x) + a1 + k3*sin(b2*x)+a2 +..)*((n1*sin(b1*x) + a1 + k3*sin(b2*x)+a2 +..)

моя же формула (A1 + A2)**2 = A1**2 + 2*A1*A2 + A2**2 где A2 - реальный сигнал как сумма синусов с разной частотой и амплитудой. Если константа А1 много больше A2 то А2**2 можно пренебречь и останется

конст + сам сигнал * конст

константу можн вычесть и получим сам сигнал без искажений.

В целом обе формулы эквивалентны - при малом сигнале он пройдет без искажений через нелинейность.

Как сделано у Вас - это определяет фиксированный и довольно большой уровень второй гармоники. Лампы, вероятно, дают меньший уровень, иначе применение таких усилителей (УМЗЧ) было бы весьма специфическим.

Я сомневаюсь, что ВАХ - редуцированная парабола y = K * (x - x0)^2. Есть общая форма записи: y = k0 + k1 * x + k2 * x*x, а коэффициенты по идее надо искать в справочниках по лампам.

Реалистичное моделирование в цифре - довольно-таки сложная вещь и одним квадратом здесь не обойдешься, т.к. есть динамические эффекты: при подаче входного сигнала ВАХ начинает как бы дрожать в некоторых пределах.

на счет дрожание - вы имеете ввиду емкость и индуктивность (реактивности) электродов в лампе или что-то другое? В чистой без реактивностей ВАХ ничего дрожать в принципе не может. Любой сигнал на достаточно маленьком временном интервале является константой. Итого логически делаем вывод что дрожание ВАХ должно наблюдаться на КОНСТАНТОМ входном напряжении. Вроде такого нет. Разве что тепловые шумы.

Вы правы, но не совсем, в магнитных материалах есть, например, гистерезис, т.е. в выходных трансформаторах ламповых усилителей. Эта нелинейность без реактивностей, т.е. не сводится к инерционности индуктивности, тем не менее ее форма зависит от предыдущего значения напряжения!

Согласен, интересное замечание!

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

По-поводу функции... да, похоже что квадрат без линейной части. Тогда перед синусом надо поставить множитель, т.е.:

[1+k \sin(wt + \phi)]^2

и при малом k это будет малосигнальное приближение.

обмозговав ваше предложение все же думаю надо его проверить - в текущей версии на слух искажения маленькие - можно не бояться и сделать более грубо - исходный сигнал плюс небольшая доля но более сильных искажений просто сигнал в квадрате без сеточного смещения!

Вероятно, что есть публикации/форумы на эту тему.

С другой стороны, если есть генератор сигналов, ламповый усилитель и анализатор спектра, то можно подавать на вход разные модельные сигналы и пытаться понять как формируется выходной спектр. Потом составить мат. модель. Но это довольно таки творческая и не быстрая задача и, вероятно, подобное тоже где-нибудь опубликовано.

Лампа лампой, но в усилителе может быть несколько ламп плюс схема соединения, и итоговый эффект будет несколько иной.

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

Да... Чтобы понять, надо начинать с малого.

изменил алгоритм, две частотные полосы, более сильные чётные гармоники, теперь увеличение яркости отчетливо слышно. https://disk.yandex.ru/d/y18kiOIMN7CLCA

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

О да, на телефоне заметил разницу. На предыдущем не замечаю.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории