Добавить нечетные / четные гармоники в сигнал?

12

Как добавить нечетные или четные гармоники в сигнал с плавающей запятой?

Должен ли я использовать Тан или грех?

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

Карлос Барбоса
источник
3
Почему вы хотите добавить гармоники? Что вы пытаетесь достичь? С каким сигналом вы работаете?
Джим Клей
То, что я пытаюсь сделать, это добиться некоторых очень простых эффектов искажения, но мне трудно найти точные ссылки. Мне бы хотелось, чтобы нечто похожее на то, что делает стервятник, добавляя нечетные и четные гармоники в настройки пентодов и триодов, а значение с плавающей запятой - это один образец в потоке выборки.
Карлос Барбоза
1
@CarlosBarbosa Вы должны отредактировать эту информацию из комментариев к вашему вопросу. Укажите подробности - чем интереснее вопрос для сообщества, тем больше ответов вы можете ожидать, а также ответы лучшего качества.
Пенелопа
почему нечетные гармоники представляют большую опасность, чем четные гармоники в системе питания

Ответы:

17

Ваш блок искажений применяет нелинейную передаточную функцию к сигналу: output = function(input)или y = f(x). Вы просто применяете одну и ту же функцию к каждой отдельной входной выборке, чтобы получить соответствующую выходную выборку.

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

  • Если ваша передаточная функция имеет нечетную симметрию (ее можно повернуть на 180 ° относительно начала координат), то она будет генерировать только нечетные гармоники (1f, 3f, 5f, ...). Примером системы с нечетной симметрией является симметрично ограничивающий усилитель.
  • Если ваша передаточная функция имеет четную симметрию (может быть отражена по оси Y), то получаемые гармоники будут только гармониками четного порядка (0f, 2f, 4f, 6f, ...). Фундаментальный 1f является нечетной гармоникой, и удаляется. Примером системы с четной симметрией является двухполупериодный выпрямитель.

Так что да, если вы хотите добавить нечетные гармоники, поместите ваш сигнал через нечетно-симметричную передаточную функцию, например y = tanh(x)или y = x^3.

Если вы хотите добавить только четные гармоники, поместите свой сигнал через симметричную передаточную функцию и функцию идентификации, чтобы сохранить исходный фундамент. Что-то вроде y = x + x^4или y = x + abs(x). x +Сохраняет фундаментально , что в противном случае будет уничтожено, в то время как x^4даже симметричная и производит только четные гармоники (включая DC, которые вы , вероятно , хотите , чтобы потом удалить с фильтром верхних частот).

Четная симметрия:

Передаточная функция с четной симметрией:

у = х ^ 6 передаточная функция

Исходный сигнал серого цвета, искаженный сигнал синего цвета и спектр искаженного сигнала, показывающий только четные гармоники и не являющиеся основными:

у = х ^ 6 спектр

Странная симметрия:

Передаточная функция с нечетной симметрией:

у = х ^ 7 передаточная функция

Исходный сигнал серого цвета, искаженный сигнал синего цвета и спектр искаженного сигнала, показывающий только нечетные гармоники, включая основные:

у = х ^ 7 спектр

Четная симметрия + фундаментальность:

Передаточная функция с четной симметрией плюс тождественная функция:

у = х + х ^ 4 передаточная функция

Исходный сигнал серого цвета, искаженный сигнал синего цвета и спектр искаженного сигнала, показывающий четные гармоники плюс основной:

у = х + х ^ 4 спектр

Это то, о чем говорят люди, когда говорят, что поле искажения «добавляет странные гармоники», но это не совсем точно. Проблема в том, что гармоническое искажение существует только для синусоидального входа . Большинство людей играют на инструментах, а не на синусоидальных волнах, поэтому их входной сигнал имеет несколько синусоидальных составляющих. В этом случае вы получаете интермодуляционные искажения , а не гармонические искажения, и эти правила для нечетных и четных гармоник больше не применяются. Например, применение двухполупериодного выпрямителя (даже симметрии) для следующих сигналов:

  • синусоида (только основная нечетная гармоника) → полноволновой выпрямленный синус (только четные гармоники)
  • прямоугольная волна (только нечетные гармоники) → DC (только четная 0-я гармоника)
  • пилообразная волна (нечетные и четные гармоники) → треугольная волна (только нечетные гармоники)
  • треугольная волна (только нечетные гармоники) → 2 × треугольная волна (только нечетные гармоники)

Таким образом, выходной спектр сильно зависит от входного сигнала, а не от устройства искажения, и всякий раз, когда кто-то говорит, что « наш усилитель / эффект производит более музыкальные гармоники четного порядка », вы должны воспринимать его с недоверием .

(Есть некоторая правда в утверждении, что звуки с четными гармониками являются «более музыкальными», чем звуки с только нечетными гармониками , но эти спектры на самом деле здесь не создаются, как объяснено выше, и это утверждение действительно только в контексте В любом случае, западные масштабы. Нечетные гармонические звуки (прямоугольные волны, кларнеты и т. Д.) Более согласны с музыкальной шкалой Болена-Пирса, основанной на соотношении 3: 1 вместо 2: 1 октавы.)

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

эндолиты
источник
Обратите внимание, что примеры функций здесь делают математику простой для понимания, но обычно не используются в аудио материалах. Например, при x ^ 7 сигнал становится менее искаженным, чем больше вы увеличиваете усиление.
эндолит
8

То, что вы пытаетесь достичь, называется искажением . Этот метод используется, когда вы хотите добавить некоторые гармоники к данному сигналу. У вас есть 2 основных способа сделать это: формирование волн и кольцевая модуляция. Сначала я попытаюсь объяснить.

Waveshaping

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

 y=f(x)=d0+d1x+d2x2+d3x3++dNxN;

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

Tk+1(x)=2xTk(x)Tk1(x);

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

T0(x)=1;

T1(x)=x;

Зная их, можно определить третье и четвертое:

T2(x)=2xx1=2x21;

T3(x)=2x(2x21)x=4x33x;

Как вы можете догадаться, второе слагаемое - первая гармоника, а третье - второе и так далее.

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

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

sigrlami
источник
Хороший ответ, узнал кое-что здесь. Однако я не согласен с тем, что вы используете термин « функция перевода» . Его общее определение - это отношение «выход-вход» линейной не зависящей от времени системы в частотной области. Ваша система нелинейная. Я бы скорее назвал это характеристикой или просто функцией здесь.
Дев
@Deve Спасибо. Да , действительно я использовал неправильный термин, просто работать достаточно хорошо. Я думал написать пример линейной системы, но это довольно просто, поэтому термин остался в моих мыслях
sigrlami
Вау, спасибо за все это, я буду читать, хотя, кажется, много шансов на пример кода c? Еще раз спасибо
Карлос Барбоса
Не могли бы вы рассказать о том, как именно уравнения с , т. Д. Связаны с исходным уравнением с ? ...Т 1 ( х ) уT0(x)T1(x)y
Spacey
@ Мохаммед, они точно не связаны, это просто простое описание полиномиальной функции, если автор темы не знает об этом.
Сигрлами