Основы FM-синтеза
Louis Gorenfeld (louis.gorenfeld / gmail)
Перевёл и дополнил Пётр Советов (peter@sovietov.com)
Исходная версия статьи обновлена 10/10/08.

Текст от переводчика выделен курсивом.

Содержание
1. Цель этой статьи
Большинство сайтов и статей по FM подробно останавливаются на математической составляющей и вопросах реализации этого удивительного метода синтеза. Тем не менее, мне оказалось трудно найти хорошее практическое введение в предмет. Прозанимавшись OPL2-музыкой около пяти лет, я решил написать эту статью в надежде, что она представит FM-программирование в менее пугающем свете.
2. О чём пойдёт речь?
FM является очень гибкой и простой техникой синтеза, изобретённой Джоном Чоунингом (John Chowning) и запатентованной некой компанией. Под некой компанией подразумевается Yamaha. Кстати говоря, патент на FM-синтез уже истёк. FM-синтез осуществляется путём быстрого изменения высоты звука одного осциллятора сигналом с выхода другого осциллятора. FM в Yamaha-стиле это, на самом деле, не частотная, а фазовая модуляция: похожие звуки производятся путём изменения позиции чтения в одном осцилляторе с помощью выхода другого осциллятора. Этот вариант реализован в большинстве FM-синтезаторов, так как он наиболее «музыкален».

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

Пришло время для некоторой терминологии: волна, которая создаёт модулирующие колебания, называется …как ни странно …модулятором. Волна, которая подвергается модуляции, называется несущей. Осцилляторы, как правило, называют операторами.

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

2.1. Программы для FM
3. Итак, приступим
Давайте начнём всего с двух операторов. Это позволит довольно легко изучить основные возможности FM.

Замечание №1: Понять, как использовать несколько различных волновых форм легче, чем понять, как работают различные алгоритмы: любой музыкант имеет представление о разнообразных формах волн, исходя из опыта работы с какими-то другими синтезаторами. Вот только эти безумные цифровые синтезаторы имеют дело именно с различными алгоритмами. Речь, разумеется, о FM-синтезаторах. Кроме того, очень тяжело понять, что происходит, когда какой-либо параметр меняется, при том, что у вас есть шесть или более операторов, и все они связаны друг с другом.

Алгоритмом называется конкретный вид соединения операторов между собой. Алгоритмы могут быть жёстко заданы. Например, Yamaha DX7 имеет 32 различных алгоритма. Некоторые FM-синтезаторы позволяют свободно устанавливать связи между различными операторами.

Но сейчас мы не будем использовать ничего сложнее синусоиды. Для этого подойдёт любой заурядный FM синтезатор.

4. Коэффициенты модуляции
Настраивается модуляция, по крайней мере на OPL2, с помощью умножителя. Он умножает частоту ноты, какой бы она ни была, на соответствующее число. Таким образом, если вы играете тон на 100 Гц, множитель 2 приведёт к 200 Гц, а для 3 будет 300 Гц. На основе этого возможны трюки — если мы просто сложим сигналы операторов, вместо использования FM-модуляции между ними, то сможем создавать аккорды, используя только один голос. Во-первых, обратите внимание на соотношение между 200 Гц и 300 Гц. Поскольку 300 Гц находится на полпути между 200 Гц и 400 Гц, этот тон образует интервал чистой квинты. Это очень полезно при формировании аккордов, когда осталось мало свободных каналов. Если два таких интервала перекрываются, то можно получить септаккорды, используя только два канала! Например, До с квинтой и Ми с квинтой при наложении формируют большой мажорный септаккорд от До. С увеличением значений коэффициентов модуляции получаемые интервалы становятся уже.

Здесь и далее автор называет коэффициентом модуляции значение обычного умножителя частоты, который присутствует, например, и в осцилляторе субтрактивного синтезатора. Для FM-синтеза существенным является соотношение значений умножителей частоты несущей и модулятора. Что же касается образования интервала квинты при умножителе частоты равном 3, то следует учитывать, что это будет квинта через октаву от основного тона. При умножителе частоты равном 5 получим терцевый обертон через две октавы, и т.д.

5. Наш первый голос: бас
FM позволяет сделать хороший электрический бас на удивление легко. Даже если вы не владеете толком этой техникой синтеза, то в состоянии хотя бы делать отличные басы. Начнём!

Установите атаки (attack) обоих осцилляторов мгновенными и спады (decay) сделайте средними или медленными, как вы и ожидаете от баса. Хорошо. Теперь установите несущую на полную громкость, и начните с нулевой громкости модулятора. Когда вы начнёте играть, то должны услышать хороший синус-бас. Может оказаться несколько сложновато его расслышать, если у вас нет хорошего НЧ-динамика или сабвуфера. Если вы совсем ничего не слышите, то это, вероятно, из-за того, что громкость не того осциллятора установлена в нуль.

Теперь увеличьте громкость модулятора и продолжайте играть ноты. Вы услышите, что звук стал несколько звенящим. По сути, при усилении действия модулятора появляется яркость тона. Здесь пара модулятор-несущая функционирует подобно осциллятору с фильтром низкой частоты в обычном субтрактивном синтезаторе. Умножитель частоты модулятора меняет в определённой степени «тип фильтра», а его громкость отвечает за «частоту среза». Включите модулятор слишком сильно, и вы начнёте слышать те самые «blargh!» звуки, которые Вы слышите у каждого несведущего музыканта, который создаёт музыку для видеоигр с помощью FM-системы. Под FM-системой подразумевается специальная звуковая микросхема, реализующая FM-синтез.

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

Поменяем коэффициент модуляции модулятора с 1 на 2. Теперь звук должен стать несколько ближе к прямоугольному сигналу, чем это было ранее, при 1.

Ниже приведены формы волн и спектров для соотношений несущей к модулятору 1:1 и 1:2 FM-тонов с модулятором умеренной громкости.

Автор позабыл привести эти графики. Собственно говоря, они в любом случае мало что объясняют.

11_500.png

Рис. 1. Форма волны при 1:1.
11s_500.png

Рис. 2. Спектр при 1:1.
12_500.png

Рис. 3. Форма волны при 1:2.
12s_500.png

Рис. 4. Спектр при 1:2.
Теперь мы попробуем что-то новое.
6. Создание неприятных звенящих звуков
Сейчас, после того, как мы сделали звук, который можно использовать, давайте посмотрим, сможем ли мы напугать своими манипуляциями кота. Продолжайте увеличивать значение коэффициента модуляции, и в звуке будет слышится все более и более высокий звон. Кроме того, звук должен стать немного тоньше. Начните увеличивать или уменьшать громкость модулятора и тогда громкость (но не высота) звенящего компонента изменится. Если мы оставим спады обоих операторов довольно длительными и понизим громкость модулятора до соответствующего уровня, то это создаст колоколоподобный тон. Если вы проиграете ещё один тон колокола вместе с исходным с небольшой расстройкой частоты, то звук получится намного лучше. Использование достаточно высокого коэффициента модуляции на модуляторе с коротким спадом на обоих операторах (со спадом, более коротким на модуляторе, чем на несущей) создаёт хороший звук маримбы.

Замечание №2: Громкость модулятора и коэффициент модуляции влияют на яркость звука, хотя и не обязательно напрямую ей соответствуют. Коэффициент модуляции модулятора в паре из двух операторов частично отвечает за присутствие высоких частот в звуке, а громкость модулятора описывает в целом, насколько они будут сильны. Для любителей науки: если вы хотите увидеть, что происходит с частотами в FM, то обратитесь к функциям Бесселя. Они описывают данный феномен. Это покажет вам амплитуду боковой полосы (добавленных частот) при различных коэффициентах модуляции.

7. FM-труба и кларнет
Теперь, когда у нас есть общее ощущение того, к какому результату приводит использование всего нескольких параметров, мы можем воссоздать некоторые классические FM-звуки. Ещё раз выставим громкость модулятора примерно на половине и установим оба коэффициента модуляции в 1. При исполнении в нижнем регистре это звучит как наш исходный бас. Теперь давайте уменьшим атаку на обоих осцилляторах, чтобы сымитировать атаку настоящей трубы. Если мы затем проиграем результат повыше, то звук действительно напомнит трубу. Это не очень хороший звук трубы, но он всё-таки напоминает этот инструмент. Попробуйте поиграть и с другими соотношениями. 2:3 считается звуком кларнета. Я думаю, любой, кто попытается воспользоваться этими примерами классического FM в надежде получить звук, пригодный для своей музыки, будет разочарован довольно быстро — они являются скорее доказательством универсальности FM, чем приятными звуками инструментов.
8. Обратная связь в FM
Обратная связь получается, когда выходной сигнал осциллятора подаётся назад и используется в качестве сигнала от модулятора. Я уверен, что в FM-синтезаторах от Yamaha, таких как OPL2, обратная связь принимает последний сэмпл с выхода пары операторов и добавляет его к сигналу модуляции оператора несущей. Здесь, очевидно, опечатка. В паре операторов сэмпл обычно берётся с выхода модулятора и направляется на его же вход. То есть модулятор модулирует сам себя. Обратная связь стремится сделать звук более резким (ближе к традиционным пилообразной или прямоугольной формам волны), и, если уровень громкости модулятора оказался достаточно высоким, превратить звук в шум. На самом деле, лучше звучащая FM труба, чем в классическом примере, может быть создана, используя только пару FM-операторов с обратной связью. Звуки, подобные прямоугольному сигналу, могут быть сделаны с помощью использования соответствующей 2-операторной конфигурации (2х→1x) и увеличения обратной связи, пока звучание не станет достаточно резким. Пилообразные тоны могут быть сделаны тем же путём, но с обоими операторами на одинаковой частоте. Когда звук модулятора затихает, резкость обратной связи тоже спадает. Этот факт может быть использован при создании звуков, отдалённо напоминающих классические аналоговые синтезаторы, и отлично подходит для добавления «приправы» лиду или басу.

Наблюдение №3: Операторы с обратной связью помогают производить как резкие тоны, так и шумы.

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

9. Моделирование ударных с помощью FM
9.1. Малый барабан
Изначально большинство людей пытаются создать звук малого барабана, используя для этого только шум. Это не срабатывает так уж хорошо, поскольку результату не хватает звукового объёма (тона). В самом деле, больше похоже, словно кто-то плюётся. Таким образом, чтобы создать убедительный малый барабан, вам нужны три вещи: шум, тон, и звук удара. Одно из преимуществ FM синтеза в том, что вы можете придать с его помощью звуку малого барабана больше отчётливости, чем с помощью обычного аддитивного синтеза. Во-первых, установим алгоритм следующим образом.
drums.png

Рис. 5. Схема алгоритма для моделирования рабочего барабана.
Как видите, у нас есть две модулирующих пары (1 и 2, 3 и 4). Их выходы затем складываются (микшируются) для создания конечного звука. Если вы используете что-то, столь же незамысловатое, как OPL2, которая работает только с двумя операторами, то вы можете использовать два канала, вместо четырёх операторов: один канал на тон, и один — на шум. Давайте будем называть операторы 1 и 2 шумовой парой, а 3 и 4 — тоновой парой.

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

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

Теперь сыграйте результат так, чтобы тон малого барабана оказался в среднем диапазоне, около 300 Гц. Возможно, вам придётся несколько убавить шумовую составляющую, чтобы результат получился более цельным, но если все сделано правильно, то это создаст убедительный звук малого барабана.

9.2. Хай-хэт
Большую часть остальных барабанов в действительности можно сделать с помощью всего лишь пары операторов. Давайте попробуем создать хай-хэт. Во-первых, установите высокое значение коэффициента модуляции для модулятора и поднимите громкость на полную. Установите спады в соответствии с тем, чего ожидаете от спадов у настоящего хай-хэта. Открытый хай-хэт может быть сделан с бОльшим спадом. Теперь поднимите уровень обратной связи до максимума. Медленно уменьшайте громкость модулятора, пока не услышите приятный звенящий звук. FM-синтез хорош ещё и тем, что, поскольку шум порождается из синуса, то легко можно создавать подобного вида циклические шумовые эффекты.
9.3. Большой барабан
В случае обычного аддитивного большого барабана, вы бы, вероятно, использовали два компонента. Одним из них была бы синусоида, скользящая по частоте вниз очень быстро, чтобы обеспечить глубокий удар барабана. Другим, как и в случае малого барабана, был бы хлопок, который привлекает внимание слушателя к началу звука. Опять же, FM-барабаны хороши глубоким звуком хлопка, который они могут производить. Таким образом, для быстрого скольжения по частоте вам понадобится начать на уровне около 200 Гц и двигаться вниз примерно до 60. Хорошо иметь звук большого барабана, который скользит вниз до всё ещё слышимого звукового уровня и затихает там. Экспериментируйте с высотой большого барабана, пока вам не понравится результат. Теперь, чтобы добавить хлопок, мы добавим модулирующий осциллятор с половинной громкостью. Этот хлопок должен затихать ещё быстрее, чем у малого барабана. Мы, вообще говоря, не хотим чтобы слушатель заметил этот хлопок, однако он должен быть достаточно длительным, чтобы добавить удару плотности. Продолжая изменять коэффициент модуляции для волны модулятора можно достичь лучших результатов.

Для того, чтобы звук оператора скользил по частоте нужно использовать связанный с ним генератор огибающей частоты (pitch envelope generator).

10. Другие формы волн
Иногда чистый синус просто не в состоянии дать вам тон, который вы ищете. Но в FM и другие формы волн не содержат в себе, как правило, полного спектра частот (в отличие от субтрактивного синтезатора). Так, например, FM-синтезатор может иметь синус и, кроме того, набор производных от синуса волновых форм. В синтезаторе, который я пишу, имеется прямоугольная форма волны, но это тускло звучащий прямоугольник, поскольку полноценный прямоугольник при модуляции бы создавал неприятно звучащие высокие частоты. Использование волн, которые не связаны с синусом, обычно делает звучание более синтетическим. Например, если я сделаю модулятором пилу, то звучание получит пилообразный окрас (в менее предсказуемой манере, чем у субтрактивного синтезатора). Некоторые FM-синтезаторы, такие как DX7, используют только синусоидальные волны, но зато включают в себя шесть операторов. Эти операторы могут быть объединены в манере аддитивного синтеза для того, чтобы создать новую форму волны, которая будет использоваться в качестве модулятора или несущей для FM.

Замечание №4: Слабо различимые и сложные формы волн довольно-таки ощутимо влияют на конечный результат в FM.

11. Важность использования эффекта хора
Итак, к настоящему времени, вы, вероятно, говорите себе: «Хорошо, FM создаёт множество разных звучаний, однако половина из них настолько тонкие!». Но ведь при работе с синтезатором не стоит забывать о небольшой расстройке частот (detuning)! Так что, для получения более качественных FM-тембров удвойте выходной сигнал и используйте небольшую расстройку. Не обязательно даже брать тот же самый тон — более мягко звучащий вариант исходного звука (или даже с использованием меньшего количества осцилляторов) тоже позволит трюку сработать. Это помогает создавать все виды убедительно звучащих оркестров. Например, приличный звук духового оркестра может быть создан с помощью небольшого числа гудящих FM-тонов с атакой как у трубы. На некоторых синтезаторах модулятор может быть расстроен относительно несущей. Это создаёт более грубое звучание, полезное, если надо добавить шероховатости в слишком чётко звучащие тембры, например, для духовых инструментов.

Замечание №5: Не забывайте о слоях и расстройке, как и в случае с синтезаторами других типов.

12. Расстройка модуляторов
Во многих FM-синтезаторах модуляторы могут также подвергаться расстройке. Это делает звучание более непредсказуемым, но приводит к добавлению все большего негармоничного звона к звуку. Начните с базовой 2-операторной конфигурации с обоими операторами на одной частоте и с модулятором на удобной громкости. Теперь увеличьте значение точной расстройки (fine detune на Yamaha). Вы заметите, что это добавляет звуку малозаметный циклический эффект. Теперь увеличьте значение грубой расстройки (coarse detuning). Это создаст в результате плотный гонг-подобный тон. С модулятором на 2х и расстройкой могут быть созданы более глубокие, чем обычно, звучания мелодической перкуссии. Расстройка модулятора хороша для добавления некоторого количества пульсации к неизменному звуку, для более глубоких колокольных и перкуссионных (особенно для инструментов, где играют палочками) тонов, или чтобы добавить немного шероховатости там, где это необходимо.
13. Конфигурации из 3+ операторов
13.1. Каскадирование
cascade.png

Рис. 6. Схема алгоритма с каскадированием операторов.
Каскадирование операторов может быть использовано для создания гораздо более сложных тембров, чем это было возможно при любой 2-операторной конфигурации. Я всегда думаю о подобной конфигурации, если мне требуются струнно-подобные тоны. Например, первый модулятор может быть использован для создания звука щипка, который изменяет звучание всей последующей пары операторов. Богатые тембры, такие как слэп-басы, могут быть созданы с помощью именно такой конфигурации. Для слэп-баса, например, начните со стандартного звука FM-баса, как это было описано выше. Теперь мы можем добавить нужный слэп-тон, используя для этого второй модулятор (показан выше как оператор 1). Для создания хорошего звука шлепка по струнам вам понадобится сделать частоту этого оператора довольно высокой — скажем, около 9x исходной частоты. Убедитесь, что оператор имеет мгновенную атаку и быстро затихает. Понижайте его громкость, пока результат не зазвучит приятно, и в результате все готово! Также хорошо иногда добавить (незаметный) 4-й модулятор, который подведён к оператору 3 или 2, специально для достижения некоторой дополнительной глубины звучания.
13.2. Двойной модулятор
double.png

Рис. 7. Схема алгоритма с двойным модулятором.
На OPL2/3 или Yamaha TX81z, у нас есть роскошь использовать несколько видов волновых форм. Однако, на многих других синтезаторах, таких как FB-01 или знаменитый DX7, имеются в наличии только синусоидальные волны. Это, однако, не обязательно приводит к затруднениям, поскольку несколько волн могут быть сложены друг с другом до их использования в качестве модулятора! Суть процесса в том, что «дополнительный спектр накладывается на исходный» ([2], стр.330).

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

14. Виды волновых форм в OPL2
Волновые формы в OPL2 не являются чисто классическими, такими как прямоугольник и или пила. Они являются производными от синусоидальной волны. Например, волновые формы с номерами 1-3 создаются с помощью чтения из таблицы синусов в различном порядке. Форма волны 1 это просто половина периода синуса, с пустой второй половиной. Форма волны 2 получается с помощью проигрывания первой половины синуса дважды подряд. Наконец, форма волны 3 является четвертью периода синуса, за которым следует пустая четверть периода. Внезапное прерывание кривой в графике формы волны 3 делает её наиболее резко звучащей из всех четырёх OPL2 волн.
15. FM-форманты
Формантная группа это регион в частотном спектре, который подчёркивает конкретный тон и окружающие его частоты. Это, как правило, выглядит как горб-образная форма на графике частот, с центром на определённой частоте. В FM аналогичная форма может быть создана путём установки частоты несущей выше частоты модулятора. При увеличении коэффициента модуляции несущей центр форманты сдвигается. Например, предположим, что мы начинаем с соотношения 2:1, дающего следующие частоты:
Гармоника1234567и т.д.
Частота, Гц2625237851047130815701832и т.д.

Таблица 8. Формантные частоты
При 2:1 верхние три частоты это 262, 523 и 785. При 3:1 верхними частотами будут 785, 1047 и 1308. Когда я достигну 4:1, верхними частотами окажутся 1308, 1570 и 1832.

Итак, чем же это нам полезно? Оказывается, что если вы посмотрите на спектры инструментов или речи, то заметите, что они могут быть разбиты на формантные группы. Поэтому эти звучания могут быть синтезированы путём сложения воедино множества формантных групп!

formant.gif

Рис. 9. Аналогичный пример показан в программе SND. Модулятор зафиксирован на 1, и когда несущая ползёт от 2 вверх, то из гармоник составляются различные формантные группы.
16. Кое-что, требующее внимания: наложение частот
Недостаток FM синтеза состоит в том, что его спектр не ограничен. Это означает, что могут создаваться волны, которые содержат частоты слишком высокие для данной частоты дискретизации. Когда сигнал содержит настолько высокую частоту, это создаёт неожиданные гармоники. Данное явление называется наложением частот (aliasing). Возьмём, например, синусоидальную волну с частотой, близкой к максимально допустимой. При дальнейшем увеличении высоты звука слышимые частоты вдруг падают по высоте, словно обернувшись вокруг максимальной частоты! Альтернативным названием для такого поведения является заворачивание (foldover). Некоторые программные синтезаторы справляются с ним с помощью передискретизации, но некоторые этого не делают. Всё это означает, что максимально резкий звук не будет звучать одинаково на различных частотах дискретизации. Например, отличные циклические шумовые эффекты, такие как в хай-хэте, о котором говорилось выше, могут быть созданы с использованием модулятора высокой частоты. Однако, если этот звук воспроизводится с другой частотой дискретизации, то он, вероятно, прозвучит иначе. Это одна из причин, по которым полезно тестировать FM-композицию на разных звуковых чипах.

В завершение статьи хотелось бы слегка коснуться важных, на мой взгляд, элементов FM-синтеза, которые не были упомянуты автором. Для создания гибко звучащих, допускающих тонкую нюансировку FM-инструментов, нам потребуется контроль за чувствительностью к громкости нажатой ноты для отдельного оператора (amp velocity sens). Мы, вероятно, захотим, чтобы какая-то часть получаемого тембра была более «отзывчивой» на исполнение, чем остальные. Не менее важным параметром является настройка кривой для усиления/ослабления уровня сигнала оператора в зависимости от нажатой ноты (level scaling curve/depth). Можно сделать так, чтобы какая-то часть в нашем тембре проявляла себя более явственно, например, в нижнем регистре. Или можно устранить паразитное наложение частот, если сделать звенящий компонент практически не слышимым в верхнем регистре.

Также стоит упомянуть возможность установки модулятора на фиксированной частоте. Это может использоваться для достижения вибрато или каких-то спецэффектов. Менее известен приём с установкой несущей на нулевой или очень малой частоте. Попробуйте сами разобраться, к чему это приводит.

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

Список литературы
[1]John Chowning, David Bristow. FM Theory & Applications: By Musicians for Musicians. — Yamaha Music Foundation (October 1987).
[2]F. Richard Moore. Elements of Computer Music. — Prentice Hall (February 19, 1990).