Юрий1963 Junior Member
13 лет назад / 31 августа 2013 01:01
9416, так когда пропускаешь через параболу (в общем случае это называется полином),
то без разницы сколько синусов.
Я пропускал записи большого симфонического оркестра. С точки зрения программиста - пофигу. Он достает из WAV-файла отсчеты PCM. Если мы говорим про формат 16 бит, то в этом файле значения отсчета лежат от числа -32767 до числа +32768
Например, очередной отсчет для левого канала имеет значение 10000. Подставляем в формулу и получаем новое значение этого отсчета, с уже добавленной гармоникой:
y = ax + bx**2 + c
a = 1 для наших целей, если не хотим усиливать сигнал. Мы в данном случае не хотим
с = 0, оно даст DC-смещение, то есть добавит постоянный ток. Нам не надо.
Коэффициент b подбирается так: берется самое большое возможное значение отсчета, хотя оно 32768, я для удобства брал 30000.
30000 + b*30000*30000 должно быть равно 30000*1.01, это если мы хотим обогатить второй гармоникой по уровню 1 %.
Получаем что коэффициент b должен быть равен 0.0000003
Далее, мы говорим: мы хотим чтобы 1% второй гармоники у нас обогащались и громкие звуки, и тихие - в одинаковой степени. Потому что при уменьшении уровня сингала на 10 дБ вторая гармоника уменьшится на 20 дБ, а 4-я вообще на 40 дБ.
Чтобы тихие звуки обогащались наравне с громкими, добавим число много большее чем 32768, например миллиард. Потом в конце вычтем его.
Тогда берем отсчет из WAV-файла 30000. Добавляем миллиард, получаем
1000030000. В формуле:
30000 + b*30000*30000 должно быть равно 30000*1.01
теперь у нас долно фигурировать не 30000 а 1000030000, коэффициент b будет другой.
И так отсчет за отсчетом - мы пишем свою версию WAV-файла, не портя оригинал. Проверяем чего получилось в спектроанализаторе SoundForge, на синусе. Он должен обогатиться второй гармоникой по заданному нами уровню.
Я, чтобы проверить что звуки разной амплитуды обогащаются второй гармоникой на один и тот же процент, использовал двухтональный сигнал, например 1 КГц -3 дб и 8КГц по уровню - 70 дб. В спектроанализаторе увидим 4 палки заданной амплитуды.
И интермодуляционные искажения, рождаемые от этих палок, они неизменно следуют за пропусканием через параболу и любые другие нелинейные полиномы. Обогатить только 2-й гармоникой, и не добавить при этом интермодуляционных искажений, не получится.
Также, наигравшись со второй гармоникой, подбираем коэффициент для 4-й. Пропускаем отсчеты через полином: y = x + bx**2 + dx**4
Я применял не +bx**2. а -bx**2 по техническим соображениям: если файл был записан под 0 дБ, то добавление второй гармоники в фазе с основным сигналом увеличивало амплитуду и приводило к перехлесту значения 32768.
На слух это слышимо так, как и ламповый звук: звук становится "теплым", голоса солистов более проникновенными, за счет ухудшения другого параметра: тихие звуки сильнее маскируются громкими звуками, при одновременном звучании и тех и других. В общем, все как в ламповом звуке. Подобрав коэффициенты полинома, и DC-смещение которое мы сначала добавляем а потом вычитаем, можно имитировать лучшие стороны лампового звука.
И даже получить лучше. Если например лампа обогащает нечетными гармониками тоже, пусть в небольшой степени, то мы - вообще этого делать не станем. Только второй и четвертой, причем четвертая много меньше второй.
-----------------
а вообще такие программы и плагины называются "гармонайзерами". Поищите в интернете, их много, надо пробовать обработать ими двухтональный сигнал, и смотреть в спектроанализаторе SoundForge какая утилита чего делает.
-----------------
Помню как я нашел подобный гармонайзер какой-то безвестной фирмы, так он четными гармониками обогащал двухтональный сигнал, а при этом комбинационные интермодуляционные составляюшие не добавлял !!! У меня челюсть отвисла, глазам своим не поверил, как это им удалось такое сделать ? Но видел сам, собственными глазами !