Виртуальный полифонический аналоговый синтезатор




Скачать 282.94 Kb.
Дата 05.10.2016
Размер 282.94 Kb.
Правительство Российской Федерации
Федеральное государственное автономное образовательное учреждение

высшего профессионального образования
«Национальный исследовательский университет
«Высшая школа экономики»

Факультет Бизнес-информатика

Отделение Программной инженерии

Кафедра Управление разработкой программного обеспечения

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

На тему: Виртуальный полифонический аналоговый синтезатор

Листов 35


Руководитель работы: доцент каф. УРПО

__________________ /Ахметсафина Р. З./

«____»_____________________ 2013 г.


Исполнитель: студент группы 471 ПИ

___________________ /Яковлев Д.С. /

«____»_____________________ 2013 г.



Москва 2013 г


Аннотация


Тема данной выпускной квалификационной работы – виртуальный полифонический аналоговый синтезатор. Результатом работы является реализация такого синтезатора с полным заявленным функционалом: имитация работы основных модулей аналогового синтезатора, 16-голосная полифония, панель звуковых эффектов, запись музыкальных фрагментов в WAV-файл, система шаблонов настроек синтезатора, элемент управления тоном, поддержка MIDI-клавиатур.

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


Содержание


Аннотация 3

1.Введение 4

2.Виртуальные аналоговые синтезаторы 7

2.1Обзор аналогов 7

2.2Основные особенности разрабатываемого синтезатора 11

2.3Методы реализации аналоговых синтезаторов 13

2.3.1Аддитивный синтез 13

2.3.2FM-синтез 14

2.3.3Субтрактивный синтез 15

3.Описание работы модулей синтезатора 17

3.1Управляемый напряжением осциллятор 18

3.2Управляемый напряжением фильтр 20

3.3Генератор ADSR-огибающих 22

3.4Генератор низкочастотных колебаний 23

3.5Звуковой эффект “Delay” 24

3.6Звуковой эффект “Phaser” 25

3.7Звуковой эффект “Реверберация” 27

4.Особенности реализации программы 30

4.1Выбор средств реализации синтезатора 30

4.2Диаграмма классов 30

4.3Полифония 31

4.4Запись в WAV-файл. 32

4.5Загрузка и запись шаблонов настроек синтезатора 33

4.6Работа с MIDI-устройствами 33

4.7Панель звуковых эффектов 33

4.8Графический пользовательский интерфейс программы 34

5.Заключение 36

Список использованных источников 37



  1. Введение

История создания аналоговых синтезаторов берёт своё начало в конце XIX века, когда была изобретена самая ранняя версия звукового синтезатора – динамофон. Он весил практически 200 тонн, обладал модифицированной фортепианной клавиатурой и был предназначен для проигрывания музыки по телефонным линиям [1]. Другим не менее важным предшественником современных аналоговых синтезаторов был траутониум. Этот монофонический электронный музыкальный инструмент был изобретён в 1930 году, и его размеры были намного меньше относительно размеров динамофона. Принцип работы траутониума заключался в следующем: звук генерировался нажатием на провод резистора [2].

В течение первой половины ХХ века было создано большое количество экспериментальных изобретений, которые повлияли на будущее аналоговых синтезаторов. Но главным шагом к стандартному, общепринятому виду аналоговых синтезаторов было изобретение Робертом А. Мугом первого модульного управляемого напряжением синтезатора в 1964 году. Управляемый напряжением осциллятор (VCO), управляемый напряжением усилитель (VCA), генераторы огибающих, а так же управляемые напряжением фильтры (VCF) – все эти модули были реализованы в синтезаторе Муга. В наше время они являются стандартными, незаменимыми модулями большинства аналоговых синтезаторов.

Позднее, в 1970 году, Муг представил свой новый синтезатор – Minimoog. Эта модель представляла собой компактный монофонический аналоговый синтезатор, который состоял из трёх основных модулей: 3 управляемых напряжением осциллятора, управляемый напряжением фильтр и управляемый напряжением усилитель [3]. В семидесятые годы ХХ века этот музыкальный инструмент был признан одним из самых популярных электронных клавишных инструментов среди музыкантов. И, несмотря на то, что в следующем десятилетии с изобретением цифровых синтезаторов и сэмплеров популярность аналоговых синтезаторов начала падать, Minimoog всё ещё был популярен среди музыкантов, пишущих электронную музыку, благодаря его уникальному звучанию.

Новый расцвет популярности аналоговых синтезаторов начался приблизительно в девяностые годы ХХ века с появлением виртуальных аналоговых синтезаторов. Такие синтезаторы имитируют механику реальных аналоговых синтезаторов, используя методы цифровой обработки сигналов и компьютерные алгоритмы. Это даёт им некоторые преимущества относительно настоящих моделей: более высокая надёжность, поддержка MIDI-стандарта, менее ограниченная полифония.

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

Целью данной выпускной квалификационной работы является разработка виртуального аналогового синтезатора, который содержит не только стандартные модули аналогового синтезатора, но и обеспечивает некоторые дополнительные функции. Основные задачи работы:


  • Разработка имитации основных модулей: управляемые напряжением осцилляторы, управляемый напряжением фильтр, управляемый напряжением усилитель;

  • Разработка дополнительных модулей: звуковые эффекты, запись музыкальных фрагментов в WAV-файл;

  • Реализация полифонии;

  • Разработка удобного графического пользовательского интерфейса.


  1. Виртуальные аналоговые синтезаторы

    1. Обзор аналогов

В наши дни значительная часть виртуальных аналоговых синтезаторов разрабатывается в форме плагинов для цифровых звуковых рабочих станций – комплексных программных систем для цифровой обработки звука. Такие рабочие станции чаще всего являются коммерческими продуктами, и их средняя цена варьируется приблизительно от $150 до $350, в зависимости от версии продукта (согласно информации, представленной на официальных вебсайтах данных программных продуктов от 30 января 2013 года). “Ableton Live”, “Cakewalk SONAR”, “Reason”, “Steinberg Cubase”, “FL Studio”, “ACID Pro” и “Logic Pro” – эти цифровые звуковые рабочие станции считаются самыми популярными, и все они относятся к разряду коммерческих систем. Также, данные программные продукты требуют серьёзного обучения для работы с ними, в связи со своей комплексностью. К тому же цифровые звуковые рабочие станции неудобны для простого использования их встроенных виртуальных аналоговых синтезаторов, особенно для живых выступлений. По этим причинам данные плагины не должны рассматриваться в качестве аналогов разрабатываемого синтезатора.

Учитывая это, здесь будут рассматриваться только бесплатные некоммерческие виртуальные аналоговые синтезаторы, разработанные в виде отдельных программных продуктов. Количество таких продуктов в разы меньше количества аналогичных плагинов для цифровых звуковых рабочих станцией, поэтому для обзора были выбраны всего три программы: “KOX”, “JEM SX1000” и “MYSTERION” (http://www.pianovintage.fr/fr/vst).

Синтезатор “KOX” имеет несколько важных особенностей: первая – полифония; вторая – наличие двух настраиваемых звуковых эффектов (хорус и реверберация); и третья – совместимость с MIDI-клавиатурами. Однако программа имеет и некоторые недостатки. Во-первых, данный синтезатор не предоставляет широкий спектр настроек звука. Он содержит только 10 шаблонов настроек, которые применяются к одному генератору ADSR-огибающей, одному стандартному фильтру и упомянутым выше звуковым эффектам. Таким образом, пользователь не имеет возможности настроить звук по-своему, а вынужден выбирать один из встроенных шаблонов. Другим недостатком этого виртуального аналогового синтезатора является неудобный и непродуманный дизайн пользовательского интерфейса – центральная часть интерфейса пуста и не содержит никаких элементов управления.

Второй рассмотренный синтезатор, “JEM SX1000”, оказался структурно более сложным по сравнению с предыдущей программой. Его главным отличием является широкий набор настроек для изменения звука, поэтому пользователь имеет возможность настроить желаемое звучание практически «с нуля». Единственный недостаток этой особенности в данной программе – неудобный и тяжёлый для понимания интерфейс:



Рисунок 1. Пользовательский интерфейс синтезатора “JEM SX1000”
Параметры различных модулей синтезатора отличаются друг от друга только цветом ручек, что в итоге приводит к непониманию, каким именно образом повёрнутая ручка изменит звучание. Данный виртуальный аналоговый синтезатор также содержит базу шаблонов настроек, однако, в отличие от синтезатора “KOX”, шаблоны сохраняют только различные комбинации настроек звука, делая возможным затем изменить их вручную. В дополнение к этому, пользователи могут сохранять свои собственные шаблоны. Относительно дополнительных настроек звука, данный синтезатор, как и рассмотренный ранее, имеет два настраиваемых звуковых эффекта: delay и pre-delay. Также он имеет специальный элемент управления тоном звука, который присутствует во множестве различных синтезаторов. И, подобно синтезатору “KOX”, данный синтезатор поддерживает MIDI-клавиатуры, что является сейчас важной деталью для виртуальных аналоговых синтезаторов. Единственный недостаток данного программного продукта – отсутствие полифонии.

И, наконец, последний виртуальный аналоговый синтезатор оказался лучшим среди всех трёх выбранных. “MYSTERION” собрал в себе все преимущества синтезаторов “KOX” и “JEM SX1000”. Подобно “JEM SX1000”, он предоставляет широкий набор настроек звука, но пользовательский интерфейс программы является намного более удобным. Параметры каждого модуля синтезатора расположены в отдельных выделенных частях окна, и все модули подписаны и расположены в стандартном для аналоговых синтезаторов порядке. Также данный программный продукт имеет систему шаблонов настроек, подобно второму синтезатору – все шаблоны хранят только значения представленных в синтезаторе параметров, и пользователи имеют возможность сохранять и загружать свои собственные шаблоны. Единственным недостатком системы шаблонов настроек синтезатора “MYSTERION” является относительно небольшое количество встроенных шаблонов – всего 16. Другая важная деталь данного виртуального аналогового синтезатора, которая также присутствовала в синтезаторе “JEM SX1000” – это элемент управления тоном, реализованный аналогично. В дополнение к этому, данный синтезатор является полифоническим и поддерживает MIDI-клавиатуры. Если сравнить его с “JEM SX1000”, то именно полифония будет главным его преимуществом. С другой стороны, синтезатор “MYSTERION” содержит только один звуковой эффект – delay – но этот недостаток компенсируется наличием в синтезаторе двух осцилляторов вместо одного. Считается, что такая особенность позволяет сделать звук глубже и сложнее. Таким образом, можно считать его лучшим среди всех рассмотренных в этом обзоре программ.



Однако даже последний рассмотренный синтезатор обладает меньшим количеством функций, чем его платные аналоги. Именно поэтому разрабатываемый виртуальный аналоговый синтезатор должен содержать более широкий набор настроек звука, а также несколько дополнительных полезных функций.
    1. Основные особенности разрабатываемого синтезатора





  • Полифония. Эта особенность не только является значимой частью данной выпускной квалификационной работы, но и считается одной из самых желаемых особенностей во всех виртуальных аналоговых синтезаторах.

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

  • Управляемые напряжением осцилляторы должны обладать следующими параметрами: тип формы звуковой волны, громкость, выбор октавы и параметр «расстроенности».

  • Управляемый напряжением фильтр должен обладать настраиваемыми параметрами типа фильтра, пороговой частоты и резонанса.

  • Параметрами управляемого напряжением усилителя должны быть параметры его генератора ADSR-огибающей: время атаки, время спада, уровень задержки и время затухания.

  • Параметры генератора низкочастотных колебаний – тип звуковой волны, частота и глубина.

  • Система шаблонов настроек. Подобно “JEM SX1000” и “MYSTERION”, разрабатываемый синтезатор должен обладать системой шаблонов настроек, позволяя пользователям сохранять или загружать свои собственные шаблоны или использовать встроенные.

  • Панель звуковых эффектов (phaser, delay, реверберация). Эта особенность является относительно новой для виртуальных аналоговых синтезаторов, разрабатываемых как отдельная программа. Она позволяет не только использовать различные звуковые эффекты, но также даёт пользователям возможность изменять порядок подключения этих эффектов и даже использовать в цепочке несколько одинаковых модулей. Такой подход похож на использование педалей звуковых эффектов, когда все педали соединены друг с другом, с источником звука и с выходом сигнала проводами.

  • Поддержка MIDI-клавиатур. Эта особенность считается стандартной деталью большого количества виртуальных аналоговых синтезаторов. Она необходима в подобных программных продуктах по двум причинам. Во-первых, играть на синтезаторе, используя MIDI-клавиатуру, намного удобнее, чем с обычной компьютерной клавиатурой. Во-вторых, большинство компьютерных клавиатур позволяют нажимать не более трёх клавиш одновременно, что сильно ограничивает полифонию синтезатора при возможных 16 голосах.

  • Элемент управления тоном. Возможность изменять звуковой тон специальным элементом управления является популярной и востребованной среди музыкантов, поэтому данная функция должна присутствовать в разрабатываемом синтезаторе.

  • Запись звуковых фрагментов. Функция записи музыкальных фрагментов редко встречается среди виртуальных аналоговых синтезаторов. Однако возможность настроить звук, нажать кнопку записи, сыграть музыкальный фрагмент и получить этот фрагмент записанным в формате WAV для его дальнейшего применения считается достаточно полезной.

  • Удобный графический пользовательский интерфейс. Как уже было упомянуто выше, графический пользовательский интерфейс виртуальных аналоговых синтезаторов не должен иметь пустых пространств, и все звуковые настройки должны быть сгруппированы в модули синтезатора. Также считается, что приятный внешний вид программного продукта важен для пользователей, особенно когда это касается продуктов для творчества.
    1. Методы реализации аналоговых синтезаторов

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


      1. Аддитивный синтез

В основе метода аддитивного синтеза лежит теория рядов Фурье: любая периодическая волна может быть воспроизведена сложением более простых по форме волн. Другими словами, при аддитивном синтезе для воспроизведения конечного звука складываются синусоидальные волны различных частот [4]. Этот метод был реализован в аналоговой форме в динамофоне, который был упомянут во введении. Позже, приблизительно в шестидесятых годах ХХ века, аддитивный синтез реализовывали только в цифровой форме с помощью методов цифровой обработки сигналов. Главным недостатком данного метода является его сложность для конечного пользователя. Большое количество параметров усложняет пользовательский интерфейс, что приводит к трате значительного времени на настройку звучания синтезатора. К тому же с таким интерфейсом практически невозможно быстро менять звучание непосредственно во время игры на синтезаторе.


      1. FM-синтез

Следующий метод синтеза, FM-синтез, сильно отличается от остальных основных методов синтеза, поскольку в данном методе источник звука модулируется другим источником звука. Другими словами, данный метод содержит выходной несущий сигнал, который изменяется модулирующим сигналом. В FM-синтезе модулирующий сигнал изменяет частоту несущего сигнала. Однако такие изменения никак не влияют на другой параметр несущей волны – амплитуду. Её значение остаётся неизменным:




Рисунок 2. Принцип работы частотной модуляции
Синтезаторам, реализованным на основе частотной модуляции, достаточно всего лишь двух управляемых напряжением осцилляторов, чтобы производить относительно богатое и сложное звучание (по сравнению с аддитивными синтезаторами, которым для этого необходимо большое количество осцилляторов). С другой стороны, этот метод имеет ряд серьёзных недостатков. Во-первых, двух управляемых напряжением осцилляторов обычно недостаточно для такого синтезатора. Обычно в FM-синтезатор встроено от 4 до 6 осцилляторов, каждый из которых имеет свой собственный управляемый напряжением усилитель [5]. Это приводит к большому числу параметров и определённым проблемам настройки звука, поскольку становится сложно предсказать эффект от изменения этих параметров. Другим недостатком синтеза на основе частотной модуляции является его «холодное» и «стерильное» звучание. В книге “Sound Synthesis and Sampling” Мартин Расс утверждает, что на самом деле аналоговая частотная модуляция хороша для воспроизведения различных «не аналогово» звучащих спецэффектов: сирен, колокольчиков, металлических курантов, керамической посуды и т. д. [4, с. 257]. Это означает, что FM-синтез не является хорошим выбором для воспроизведения «аналогового» звучания, которым обладает большая часть аналоговых синтезаторов.
      1. Субтрактивный синтез

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




Рисунок 3. Общая схема работы субтрактивного синтеза
Главным достоинством данного метода является его строгая и хорошо-организованная структура. Имея относительно меньший набор параметров в сравнении с аддитивным синтезом и FM-синтезом, субтрактивные синтезаторы предоставляют широкий спектр различных возможных звучаний. Более того, графический пользовательский интерфейс таких синтезаторов является наиболее удобным, потому что пользователь может предсказать эффект от изменения какого-то определённого параметра. В дополнение к этому, данный метод не требует высокой производительности компьютера [5]. Учитывая все достоинства этого метода, субтрактивный синтез был выбран в качестве основного метода для реализации виртуального аналогового синтезатора.
  1. Описание работы модулей синтезатора

Схема, представленная ниже, показывает, как устроены модули разрабатываемого синтезатора:





Рисунок 4. Схема работы разрабатываемого виртуального аналогового синтезатора

На схеме видно, что данная программа содержит все стандартные модули аналогового синтезатора: генератор низкочастотных колебаний (LFO), 3 управляемых напряжением осциллятора (VCO), управляемый напряжением фильтр (VCF) с генератором ADSR-огибающей и управляемый напряжением усилитель (VCA) с генератором ADSR-огибающей. В дополнение к этому справа, рядом с аудиовыходом, на схеме изображён модуль панели звуковых эффектов. Изначально, при нажатии клавиши на клавиатуре синтезатора значение её частоты передаётся на осцилляторы, а сигнал о нажатии/отпуске передаётся на генераторы ADSR-огибающих. Каждый осциллятор генерирует звуковую волну в зависимости от полученного значения частоты нажатой клавиши, значения частоты, полученного от генератора низкочастотных колебаний, и соответственно параметров самого осциллятора. Затем сгенерированные частоты из осцилляторов соединяются в микшере (“Mixer” на схеме) в одно значение, которое затем передаётся на фильтр. Управляемый напряжением фильтр срезает определённые частоты полученного сигнала в зависимости от параметров фильтра. Также, генератор ADSR-огибающей фильтра контролирует процент смешивания чистого входного сигнала с отфильтрованным с помощью функции атака-спад-задержка-затухание, настраиваемой пользователем с помощью параметров генератора. В дополнение к этому, точно такой же генератор ADSR-огибающей у управляемого напряжением усилителя контролирует громкость сигнала. Однако, несмотря на то, что сам усилитель присутствует на схеме, технически в виртуальном аналоговом синтезаторе он отсутствует, поскольку входной сигнал не нужно усиливать. И, наконец, с усилителя на выход сигнал (значение частоты) проходит через цепочку выбранных пользователем звуковых эффектов (phaser, delay, реверберация).


    1. Управляемый напряжением осциллятор

В виртуальных аналоговых синтезаторах управляемые напряжением осцилляторы (VCO) генерируют значение частоты по функциям простых по форме звуковых волн, которые легко можно представить в математической форме (и которые в аналоговых синтезаторах легко можно сгенерировать с помощью электрического сигнала) [4]. К таким звуковым волнам относятся: синусоидальная волна, квадратная, треугольная и пилообразная.



  • Синусоидальная звуковая волна:



,

где – значение частоты, а t – значение времени



  • Квадратная звуковая волна:






  • Пилообразная звуковая волна:






  • Треугольная звуковая волна:



Тип звуковой волны в осцилляторах разрабатываемого синтезатора управляется специальным параметром.

Также отдельными параметрами настраиваются:


  • громкость (умножение значения частоты, сгенерированного осциллятором, на коэффициент от 0 до 1),

  • октава (входное частотное значение ноты увеличивается или уменьшается в зависимости от указанного номера октавы),

  • панорамирование (умножение значения частоты, сгенерированного осциллятором, на коэффициенты от 0 до 1 для левого и правого каналов стерео в зависимости от указанного направления звука),

  • «расстроенность» звука (входное частотное значение ноты увеличивается или уменьшается на тон и меньше, в зависимости от указанного значения).
    1. Управляемый напряжением фильтр


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



Рисунок 5. Схема работы низкочастотного четырёхполюсного ступенчатого фильтра

Суть низкочастотного фильтра данного типа в том, что входной сигнал обрабатывается четыре раза по следующей формуле:



, n=4, out0 = in

,

где cutofffrequency – изменяемый пользователем параметр частоты среза, samplerate значение частоты дискретизации, in – значение входного сигнала, а outn – значение выходного сигнала

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

,

где – значение резонанса

Для получения результата обработки высокочастотным фильтром необходимо просто умножить вход и выходы каждого из уровней низкочастотного фильтра на определённый набор констант и сложить всё вместе:

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


    1. Генератор ADSR-огибающих


Генератор Attack-Decay-Sustain-Release-огибающих (ADSR) позволяет изменять какой-либо параметр во времени с помощью функции атаки-спада-задержки-затухания, которая настраивается следующими параметрами: время атаки, время спада, уровень задержки, время затухания. Проще всего описать данную функцию можно следующим изображением:



Рисунок 6. Описание функции «атака-спад-задержка-затухание»

При нажатии на клавишу синтезатора генератор ADSR-огибающей запускается, значение параметра увеличивается до максимального за время атаки, затем за время спада спускается до заданного уровня задержки и остаётся там, пока клавишу не отпустят – тогда значение параметра за время затухания падает до нуля.

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

    1. Генератор низкочастотных колебаний


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



Рисунок 7. Принцип работы амплитудной модуляции

Генератор низкочастотных колебаний (LFO) образует звуковые волны тем же образом, что и VCO. Затем на основе генерируемой волны вычисляется коэффициент, на который затем умножается значение частоты, полученное из VCO. Помимо параметра выбора типа звуковой волны, LFO имеет параметр частоты сигнала, а также параметр процента изменения им амплитуды звуковой волны, генерируемой VCO.


    1. Звуковой эффект “Delay”


Суть звукового эффекта “Delay”, также называемого эхом, заключается в затухающем периодическом повторении входного звукового сигнала. В виртуальных аналоговых синтезаторах данный эффект обычно реализован при помощи линии задержки, которая представляет собой закольцованный буфер, содержащий значения входных сигналов. Таким образом, во время работы эффекта “Delay” на выход подаётся значение из буфера под индексом, зависящим от параметра времени задержки сигнала, а в текущую ячейку для записи буфера заносится сумма текущего выходного значения и значения входного сигнала. В конце каждого шага работы данного модуля индексы считывания из буфера и записи в буфер увеличиваются на единицу. Если индекс становится больше номера последней ячейки буфера – он приравнивается к нулю, что начинает новый виток цикла работы линии задержки. Таким образом, удаётся сохранить постоянное одинаковое расстояние между считываемым значением и записываемым значением, что и приводит к эффекту задержки звука. Помимо параметра времени задержки сигнала существует параметр времени его повторения. Для этого значение выходного сигнала умножается на коэффициент отдачи (от 0 до 1) перед сложением с входным сигналом для занесения в буфер линии задержки:

,

где writeindex – индекс ячейки записи в буфер, а – коэффициент отдачи

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



Рисунок 8. Схема работы звукового эффекта “Delay

В разрабатываемом виртуальном аналоговом синтезаторе модуль звукового эффекта “Delay” имеет два параметра времени задержки сигнала – для левого и правого канала. Такой тип данного эффекта называется “ping pong delay” – повторяющийся звуковой сигнал «перескакивает» с одного канала на другой подобно мячику для пинг-понга. Помимо этого, в модуле присутствует параметр процента слияния чистого сигнала с повторяющимся сигналом.


    1. Звуковой эффект “Phaser”


Применение звукового эффекта “Phaser” приводит к плавному «переливающемуся» звучанию, которое достигается путём соединения чистого звукового сигнала с обработанным звуковым сигналом со сдвинутой фазой. Для того чтобы сдвинуть фазу входного сигнала, применяются всепропускающие фильтры (all-pass filters) [6]. Эти фильтры имеют такое название, поскольку они не изменяют частоту сигнала. Общий вид всепропускающего фильтра:

,

где (передаточная функция), а – значение входного сигнала предыдущего прохода через фильтр

Значение переменной зависит от базовой частоты фэйзера, которая является константой, и вычисляется следующим образом:

,

где – базовая частота фэйзера

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



Рисунок 9. Схема работы звукового эффекта “Phaser

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



,

где – значение частотного диапазона, а – значение частоты вращения

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

Помимо этого, модуль данного звукового эффекта содержит параметр отдачи и параметр процента смешивания чистого сигнала с изменённым сигналом, которые работают по тому же принципу, что и аналогичные параметры звукового эффекта “Delay”.


    1. Звуковой эффект “Реверберация”


Эффект реверберации представляет собой плавное затухание многократно отражающегося звука, что приводит к имитации воспроизведения этого звука в помещении определённого размера. В виртуальных аналоговых синтезаторах такой эффект чаще всего реализуется с применением нескольких линий задержки для гребенчатых и всепропускающих фильтров [6].

Суть гребенчатого фильтра состоит в добавлении к значению входного сигнала значение сигнала с определённой задержкой. В разрабатываемом синтезаторе данный эффект был реализован по принципу модифицированной реверберации Шрёдера/Мурера: сигнал проходит через 8 гребенчатых фильтров, а затем пропускается через 4 всепропускающих фильтра [7]. Каждый фильтр перед началом работы модуля настраивается, то есть буфер каждой линии задержки заполняется определёнными значениями. Для гребенчатых фильтров это:

1116, 1188, 1277, 1356, 1422, 1491, 1557, 1617

Для всепропускающих фильтров эти значения равны:

556, 441, 341, 225

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



,

где и – константы, заданные при инициализации алгоритма

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

Помимо этого, данный эффект реверберации имеет такой же параметр процента смешивания чистого сигнала с изменённым сигналом, что и предыдущие два эффекта.


  1. Особенности реализации программы

    1. Выбор средств реализации синтезатора


Для написания виртуального полифонического аналогового синтезатора был выбран объектно-ориентированный язык программирования C# и среда программирования Visual Studio 2010. Было решено использовать пакет инструментов XNA Framework 4.0, который содержит в себе библиотеки для комфортной работы с мультимедиа. Также для работы с MIDI-устройствами была использована сторонняя бесплатная библиотека “midi-dot-net” (http://code.google.com/p/midi-dot-net/).
    1. Диаграмма классов




Рисунок 10. Диаграмма классов разрабатываемого виртуального полифонического аналогового синтезатора

Главным классом программы является класс “AnalogSynthApp”. Именно в нём запускаются основные методы “Update” и “Draw”, которые в свою очередь запускают эти же методы в других классах. За все элементы интерфейса отвечает экземпляр класса “SynthGraphicUserInterface”. За вычислительную часть работы программы отвечает экземпляр класса “AnalogSynth”, который является ядром синтезатора. В данном классе хранится буфер значений частот, который преобразуется в байтовый массив и подаётся на выход уже в качестве звука (при помощи методов библиотек XNA). Также в данном классе хранится список активных голосов полифонии, которые обрабатываются в нём же. Каждый голос заполняет буфер значений частот, выполняя последовательность действий, описанных ранее в разделе «Описание работы модулей синтезатора». На изображении диаграммы классов все модули синтезатора расположены в порядке их последовательной работы сверху вниз.


    1. Полифония


В синтезаторе реализована 16-голосная полифония. Каждый голос представлен экземпляром класса “Voice”, в котором происходит работа всех основных модулей синтезатора. В классе “AnalogSynth” хранятся: стек свободных голосов, список активных голосов и словарь всех голосов с привязкой к ним номеров нот, которые они воспроизводят. Таким образом, при нажатии на клавишу из стека свободных голосов выделяется один голос. Этот голос затем добавляется в словарь с номером ноты, которая была нажата, и в список активных голосов. Также у активного голоса запускается стартовый метод.

Во время работы синтезатора список активных голосов обрабатывается в цикле – каждый голос добавляет в ячейки частотного буфера свои значения. Если же голос перестаёт быть активным, то он удаляется из этого списка и словаря нажатых нот и добавляется в стек свободных голосов.


    1. Запись в WAV-файл.


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

  • ID блока (“RIFF”);

  • Размер блока;

  • Тип данных (“WAVE”);

  • ID подблока №1 (“fmt”);

  • Размер подблока;

  • Аудиоформат (1 – без сжатия);

  • Количество каналов;

  • Частота дискретизации;

  • Байтовая частота;

  • Выравнивание блока;

  • Количество битов в сэмпле;

  • ID подблока №2 (“data”).
    1. Загрузка и запись шаблонов настроек синтезатора


Для запоминания настроек синтезатора сохраняются значения положения всех изменяемых элементов графического пользовательского интерфейса в XML-файл. Для сохранения и загрузки таких файлов используются методы XML-сериализации, встроенные в библиотеки .NET Framework. Таким образом, в файл сохраняются значения всех полей экземпляра класса “SynthGraphicUserInterface” с общим уровнем доступа, а при загрузке они образуют новый экземпляр данного класса. При запуске программы загружаются все шаблоны настроек, XML-файлы которых находятся в папке “presets” в директории программы.
    1. Работа с MIDI-устройствами


Используя методы сторонней библиотеки “midi-dot-net”, при запуске программы инициализируются все подключенные MIDI-устройства, и начинают обрабатываться сообщения о нажатии и отпускании клавишей. Данные сообщения сохраняются в списки, которые затем обрабатываются в методе “Update”. Из каждого сообщения берётся MIDI-номер клавиши, и, в зависимости от типа события, этот номер передаётся на обработку в ядро синтезатора для воспроизведения ноты. Также данная библиотека принимает сообщения от элемента управления тоном MIDI-устройства, которые затем также обрабатываются ядром синтезатора.
    1. Панель звуковых эффектов


Для данного виртуального полифонического аналогового синтезатора реализованы три звуковых эффекта: delay, phaser, реверберация. Каждый из эффектов реализован в отдельном классе, но все три класса являются наследниками абстрактного класса “Effect”. Это было сделано для того, чтобы можно было обрабатывать список всех эффектов независимо от их типа. Точно также были реализованы элементы управления эффектов. Таким образом, стало возможным легко удалять, добавлять и менять местами эффекты на панели. Однако в связи со значительным увеличением нагрузки на процессор с увеличением количества эффектов было решено оставить максимальное количество эффектов на панели равное трём.
    1. Графический пользовательский интерфейс программы


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

  • Ручки изменения параметров модулей;

  • Кнопка записи в файл;

  • Переключатели;

  • Кнопки меню шаблонов настроек, кнопки панели звуковых эффектов, и кнопки удаления модулей звуковых эффектов;

  • Модули звуковых эффектов: delay, phaser, реверберация;

  • Экран выбора шаблонов настроек;

  • Элемент управления тоном;

  • Фортепианная клавиатура.



Рисунок 11. Графический пользовательский интерфейс разрабатываемого виртуального полифонического аналогового синтезатора

  1. Заключение


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

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



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

Список использованных источников


1. Cahill, T. (1897). Art of and apparatus for generating and distributing music electrically. U.S. Patent No. 580,035.
2. Doepfer Musikelektronik. The Trautonium Project. Retrieved January 27, 2013, from Doepfer Musikelektronik website: http://www.doepfer.de/traut/traut_e.htm
3. Moog, R. A. (1969). Electronic High-pass and Low-pass Filters Employing the Base-to-Emitter Resistance of Bipolar Transistors. U.S. Patent No. 3,475,623.
4. Russ, M. (2009). Sound Synthesis and Sampling. Oxford: Focal Press.


  1. Antti Huovilainen (2010). Design of a Scalable Polyphony-MIDI Synthesizer for a Low Cost DSP. Master of Science (Technology) thesis, Aalto University School of Science and Technology, Espoo, Finland.




  1. Puckette, M. (2006). The Theory and Technique of Electronic Music. Singapore: World Scientific Publishing Co. Pte. Ltd.




  1. Smith III O. J. (2010). Physical Audio Signal Processing for Virtual Musical Instruments and Audio Effects. Stanford: W3K Publishing.


База данных защищена авторским правом ©infoeto.ru 2022
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница