Как добавить нечетные или четные гармоники в сигнал с плавающей запятой?
Должен ли я использовать Тан или грех?
Я пытаюсь добиться очень простых эффектов искажения, но мне трудно найти точные ссылки. То, что я хотел бы, - это что-то похожее на то, что делает Культурный гриф , добавляя нечетные и четные гармоники в настройках пентоды и триода. Значение с плавающей запятой - это одна выборка в потоке выборки.
audio
signal-detection
c
distortion
Карлос Барбоса
источник
источник
Ответы:
Ваш блок искажений применяет нелинейную передаточную функцию к сигналу:
output = function(input)
илиy = f(x)
. Вы просто применяете одну и ту же функцию к каждой отдельной входной выборке, чтобы получить соответствующую выходную выборку.Когда ваш входной сигнал представляет собой синусоидальную волну, генерируется определенный тип искажения, называемый гармоническим искажением . Все новые тона, созданные искажением, являются идеальными гармониками входного сигнала:
Так что да, если вы хотите добавить нечетные гармоники, поместите ваш сигнал через нечетно-симметричную передаточную функцию, например
y = tanh(x)
илиy = x^3
.Если вы хотите добавить только четные гармоники, поместите свой сигнал через симметричную передаточную функцию и функцию идентификации, чтобы сохранить исходный фундамент. Что-то вроде
y = x + x^4
илиy = x + abs(x)
.x +
Сохраняет фундаментально , что в противном случае будет уничтожено, в то время какx^4
даже симметричная и производит только четные гармоники (включая DC, которые вы , вероятно , хотите , чтобы потом удалить с фильтром верхних частот).Четная симметрия:
Передаточная функция с четной симметрией:
Исходный сигнал серого цвета, искаженный сигнал синего цвета и спектр искаженного сигнала, показывающий только четные гармоники и не являющиеся основными:
Странная симметрия:
Передаточная функция с нечетной симметрией:
Исходный сигнал серого цвета, искаженный сигнал синего цвета и спектр искаженного сигнала, показывающий только нечетные гармоники, включая основные:
Четная симметрия + фундаментальность:
Передаточная функция с четной симметрией плюс тождественная функция:
Исходный сигнал серого цвета, искаженный сигнал синего цвета и спектр искаженного сигнала, показывающий четные гармоники плюс основной:
Это то, о чем говорят люди, когда говорят, что поле искажения «добавляет странные гармоники», но это не совсем точно. Проблема в том, что гармоническое искажение существует только для синусоидального входа . Большинство людей играют на инструментах, а не на синусоидальных волнах, поэтому их входной сигнал имеет несколько синусоидальных составляющих. В этом случае вы получаете интермодуляционные искажения , а не гармонические искажения, и эти правила для нечетных и четных гармоник больше не применяются. Например, применение двухполупериодного выпрямителя (даже симметрии) для следующих сигналов:
Таким образом, выходной спектр сильно зависит от входного сигнала, а не от устройства искажения, и всякий раз, когда кто-то говорит, что « наш усилитель / эффект производит более музыкальные гармоники четного порядка », вы должны воспринимать его с недоверием .
(Есть некоторая правда в утверждении, что звуки с четными гармониками являются «более музыкальными», чем звуки с только нечетными гармониками , но эти спектры на самом деле здесь не создаются, как объяснено выше, и это утверждение действительно только в контексте В любом случае, западные масштабы. Нечетные гармонические звуки (прямоугольные волны, кларнеты и т. Д.) Более согласны с музыкальной шкалой Болена-Пирса, основанной на соотношении 3: 1 вместо 2: 1 октавы.)
Следует также помнить, что цифровые нелинейные процессы могут вызывать алиасы, которые могут быть плохо слышны. См. Есть ли такая вещь как нелинейное искажение с ограничением по полосе?
источник
То, что вы пытаетесь достичь, называется искажением . Этот метод используется, когда вы хотите добавить некоторые гармоники к данному сигналу. У вас есть 2 основных способа сделать это: формирование волн и кольцевая модуляция. Сначала я попытаюсь объяснить.
Waveshaping
Формирование волны позволяет искажать изображение с помощью специально выбранной функции . Одним из полезных методов являются полиномы Чебышева . Они имеют очень важное свойство: при подаче через них гармонического сигнала с единичной амплитудой (например, синусоиды) мы получаем тот же сигнал, только в несколько раз выше. Множитель частоты будет зависеть от порядка многочлена. Все полиномы выглядят так:
В нашем случае каждый элемент генерирует гармонику, а затем все они складываются. Вид каждого члена определяется следующим рекуррентным отношением:
В нем каждый член определяется на основе предыдущего, все начинается с нуля, в нашем случае он равен единице, а первый, который равен x (но вы можете изменить его, конечно)
Зная их, можно определить третье и четвертое:
Как вы можете догадаться, второе слагаемое - первая гармоника, а третье - второе и так далее.
Еще одна особенность полиномов Чебышева, когда через них выдается сигнал, амплитуда которого меньше единицы, на выходе получается менее насыщенный звук с гармониками. Это позволяет создать эффект перегрузки.
Ведь ваш сигнал представляет собой массив плавающих точек, вы можете выбрать любую часть вашего массива и применить к ним полиномы Чебышева, что создаст дополнительные гармоники. И использование функций будет достаточно для этого.sin
источник