Частотная модуляция (FM) - PullRequest
       0

Частотная модуляция (FM)

2 голосов
/ 28 декабря 2011

Я пытаюсь частотно модулировать звуковой сигнал. Я могу успешно FM синусоидальной волны (несущей) с другой синусоидальной волной (модулятором), используя следующее уравнение y = cos (Fc + sin (Fm)), однако я не уверен, что делать с FM-аудиосигналом потому что, очевидно, я не могу использовать вышеупомянутую формулу. Мой вопрос: как мне объединить входные данные с модулирующим сигналом, чтобы получить сигнал FM?

Ответы [ 3 ]

1 голос
/ 03 января 2012

К сожалению, я не смог заставить метод Пола работать, но у меня есть рабочее решение для FM-синтеза аудиосигналов. Я много тестировал в Excel и понял, как это сделать. Вот алгоритм

    for (i = 0; i < N; i++)     {
    // increase the frequency with increasing amlitudes (fc + fm)
    if (input[i] < input[i+1])
        out[i] =   cos(acos(input[i]) + A * sin(2 * pi * mf * i));
    else  //decrease the frequency with decreasing amplitudes (fc - fm)
        out[i] =  cos(acos(input[i]) - A *  sin(2 * pi * mf * i));
                } 

Он работает хорошо, но генерирует некоторые нежелательные гармоники (возможно, из-за ошибок округления), поэтому вам, возможно, придется использовать какой-то фильтр (скользящее среднее может хорошо справиться с уменьшением этих нежелательных гармоник). При применении к аудиосигналу вам, вероятно, придется взять огибающую аудио и умножить ее на модулирующий сигнал, чтобы не применять FM к тихим частям звука и т. Д.

0 голосов
/ 29 декабря 2011

Просто замените свое уравнение несущей, cos (t), на f (t) для вашего входного сигнала, где t может быть масштабировано на частоту дискретизации для выборочных данных.Затем модулируйте dt, как и раньше.

Обратите внимание, что для дискретизированных данных и в зависимости от полосы пропускания вашего входного сигнала, чтобы сделать это f (t) звучащим «хорошо», вам может понадобиться использовать метод интерполяции более высокого порядка в сочетаниис фильтром нижних частот (таким как оконная свертка Синка), а не просто с использованием ближайшей выборки или линейной интерполяции между двумя выборками, что может сильно ухудшить псевдоним в частотной области.

0 голосов
/ 28 декабря 2011

Вы можете думать о FM как о динамически изменяющейся скорости воспроизведения, где изменение скорости воспроизведения пропорционально вашему модулирующему сигналу. Таким образом, для нормального воспроизведения ваша частота воспроизведения равна частоте дискретизации Fs. Для FM-версии вашего аудиосигнала частота воспроизведения будет Fs * (1 + A * f(t)), где A - амплитуда модуляции, а f(t) - модулирующий сигнал. Для реализации этого вам потребуется сохранить фазовый аккумулятор с действительным и дробным компонентом, а затем обновить фазовый аккумулятор в соответствии с текущей (модулированной) частотой дискретизации. Используйте целочисленную часть фазового аккумулятора для определения индекса выборки, n и дробную часть, чтобы дать вам возможность интерполировать, например, между образцами n и n + 1.

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

...