Что такое стандартный синтезатор windows

Программный синтез звука на ранних персональных компьютерах. Часть 1

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

Введение

Во второй половине 90-х я увлеченно знакомился с компьютерной музыкой на PC и пытался сочинять свои композиции в популярных тогда программах-трекерах, таких как Fast Tracker II и EdLib. Но наибольшее впечатление на меня в те времена произвел аудиоязык Csound, о котором я узнал, благодаря статье 1998 года из журнала «Компьютерра». Для работы с Csound нужен только текстовый редактор. Быстродействие компьютера, наличие библиотек сэмплированных звуков или качество звуковой карты не имели особого значения. Это был программный синтез звука в чистейшей его форме.

На современных персональных компьютерах не составляет труда реализовать впечатлившие меня когда-то музыкальные примеры для Csound уже в реальном времени. Сегодня специализированные аппаратные решения для задач синтеза звука используются музыкантами все реже, и наибольшую популярность приобрели аудиоплагины. Так дело, разумеется, обстояло далеко не всегда. Какими были первые попытки создания программного синтеза на ранних персональных компьютерах? Что это были за компьютеры? Наконец, каковы детали реализации ранних методов программного синтеза? На эти вопросы я постараюсь ответить далее.

Практика

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

Мы будем работать в духе пионеров компьютерной музыки 60-х, которые использовали в своих исследованиях серию аудиоязыков MUSIC N, разработанную Максом Мэтьюсом (Max Mathews). Csound, о котором шла выше речь, является одним из многочисленных потомков MUSIC N. Разумеется, у нас есть определенные преимущества перед первопроходцами: не нужно ждать компиляции кода долгими часами, не нужно записывать результат на магнитную ленту, а затем отправляться с ней в другой город, чтобы на еще одном компьютере перевести полученные данные в звук.

Примеры синтеза звука будут даны на языке Питон (Python). Одним из важных плюсов этого языка является схожесть его синтаксиса с псевдокодом, чтение которого не должно вызвать особенных трудностей даже у читателей, не знакомых с Питоном. Предлагаемые в статье программы служат чисто иллюстративным целям и призваны сподвигнуть читателя экспериментировать со звуковыми алгоритмами. Каждый пример является отдельной программой для 2 и 3 версий языка и зависит только от стандартных библиотек. Запуск примеров заканчивается формированием wav-файла. Использование PyPy позволит ускорить вычисления в несколько раз.

Для сохранения результата в wav-файл я применяю стандартный модуль wave. Все дальнейшие примеры предваряются кодом, который показан ниже.

Вот простой пример, в котором используются лишь пары синусоид.

Здесь генерируется звук тонального набора для фиктивного телефонного номера 3115552368. Цифры номера в формате DTMF закодированы с помощью пар синусоид, частоты которых заданы в массиве DTMF. Обратите внимание на характерные щелчки в звучании, которые являются результатом резких перепадов амплитуды. Избавиться от подобных щелчков можно с помощью амплитудной огибающей или НЧ-фильтра. Об использовании огибающих и фильтров подробнее будет рассказано далее.

TWANG

И они, на самом деле, показали мне три вещи. Но я оказался настолько поражен первой из этих вещей, что не обратил внимание на остальные. Помимо прочего они показали мне объектно-ориентированное программирование, на что я не обратил внимание. Еще они показали мне вычислительную сеть… в которую были объединены больше сотни компьютеров Alto, там была электронная почта и т.д., и т.д. Всего этого я не заметил, поскольку оказался полностью ослеплен первым, что мне было показано — графическим интерфейсом пользователя.

Так, спустя время, Стив Джобс вспоминал о своем визите в научно-исследовательский центр Xerox PARC в 1979 году. Компьютер Xerox Alto, который был создан еще в 1973 году, во многом предвосхитил облик персональных компьютеров следующих десятилетий. Автором концепции Alto является ученый Алан Кэй (Alan Kay), который не чужд и музыке: в молодости он успел побывать джазовым гитаристом, а в зрелых годах освоил и церковный орган. Возможно, по этой причине Alto имел не только выдающиеся для своего времени графические возможности, но и хорошую поддержку звука.

Читайте также:  Openvpn для windows 10 x64

В 1975 году 16-битный Alto, который функционировал на частоте 5.88 МГц и обладал 128 Кбайт оперативной памяти, уже имел и некоторое музыкальное ПО. В частности, для данного компьютера существовала программа TWANG, разработанная Тэдом Каэлером (Ted Kaehler) на языке Смолток (Smalltalk). В графическом виде, вполне в духе современных музыкальных MIDI-редакторов, демонстрировался поток нотных событий, которые могли быть добавлены с помощью мыши или с клавиатуры электрооргана. Звук формировался в реальном времени методом FM-синтеза, причем каждый параметр тембра, представленный в виде графика, можно было регулировать, опять же, мышью. Рисование пользователем огибающих с произвольным количеством сегментов, а также наглядное представление всех параметров FM-синтеза на едином графике не всегда можно встретить даже в современных программных синтезаторах.


Просмотр и редактирование нотных событий в TWANG

FM-синтез был открыт в конце 60-х музыкантом и ученым Джоном Чоунингом из Стэнфордского университета во время его экспериментов с одним из ранних аудиоязыков серии MUSIC N. Чоунинг заметил, что при использовании обычного эффекта вибрато (который представляет собой периодическое изменение высоты звука) на достаточно высокой частоте, тембр модулируемого сигнала начинает существенно меняться. Наибольший интерес с точки зрения слушателя представляет не статичный спектр, а различные его видоизменения, разворачивающиеся во времени. В этом смысле FM-синтез имеет большие возможности при скромных вычислительных требованиях, поскольку, управляя амплитудой и частотой модулятора, легко динамически влиять на спектр несущего сигнала.


Редактирование параметров FM-синтеза в TWANG

Кстати говоря, благодаря средствам, вырученным Стэнфордским университетом от продажи в начале 70-х лицензии на FM-синтез компании Yamaha, при университете был создан исследовательский центр CCRMA (Center for Computer Research in Music and Acoustics). С именем этого центра связаны многие важные результаты в области методов синтеза звука.

Известны параметры FM-синтеза, реализованного на Xerox Alto:

  • 5 голосов (по 2 осциллятора на каждый), работающих в реальном времени,
  • 12-битные сэмплы с частотой дискретизации 13.7 кГц,
  • Обновление параметров голосов на частоте 60 Гц.

Примечательно, что никакого специального оборудования, кроме ЦАП, для работы со звуком в Alto не использовалось. FM-синтез был реализован программно и производился одновременно с обработкой GUI и прочими задачами. Каким же образом скромный по возможностям компьютер справлялся с синтезом в реальном времени? Дело в том, что в Alto программисту позволялось прямо в процессе работы компьютера обновлять микрокод. Работа на уровне микрокода широко применялась разработчиками Xerox PARC для управления внешними устройствами, а также для виртуализации набора инструкций и создания проблемно-ориентированных команд, например, для работы с графикой. В компьютере существовала также аппаратная поддержка кооперативной многозадачности для процессов, выполнявших микрокод.

Пример работы в TWANG

Для вывода звука в TWANG использовались специальные инструкции. Соответствующий микрокод для реализации FM-синтеза были добавлен Стивом Сондерсом (Steve Saunders). Он сумел обойтись в своей реализации без операций умножения при помощи двух простых приемов: с помощью замены синуса треугольным сигналом в модуляторе, а также используя тригонометрическое тождество sin(x + a) + sin(x — a) = 2 * cos(a) * sin(x) для управления амплитудой. Интересно отметить, что компания Yamaha позже по-своему избавилась от операций умножения в своих FM-чипах с помощью log- и exp-таблиц.

Пример звучания TWANG

Программа TWANG дальнейшего развития не получила. Сондерс в начале 80-х приложил руку к разработке звукового чипа Atari Amy. Данный чип представлял собой достаточно мощный аддитивный синтезатор для микрокомпьютеров, опережающий по качеству звучания типичные звуковые генераторы того времени, но неурядицы в компании Atari не позволили Amy увидеть свет.

Читайте также:  Не работает windows интересное 2020

Практика

Сразу уточню, что далее речь пойдет о фазовой (PM), а не частотной модуляции, хотя использоваться будет второе именование. Именно вариант с модуляцией фазы реализован фирмой Yamaha в своих FM-синтезаторах.

В примерах этого раздела будет удобно использовать форму описания генератора синусоиды в виде объекта, который хранит текущую фазу и имеет метод next для выдачи очередного сэмпла. Здесь не используется явно параметр t, как это было в примере с DTMF-сигналами, и значение фазы меняется в пределах периода функции sin.

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

В данном примере осциллятор om («модулятор») управляет звучанием основного осциллятора oc («несущей»). За характерный тембр колокола отвечают следующие параметры:

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

Довольно сложно дать краткий рецепт по выбору параметров для синтезирования FM-тембров. Теоретические сведения на этот счет можно почерпнуть в книге FM Theory & Applications. Но, зачастую, важнее оказываются интуиция и практика. В целом, в звуковом дизайне базовым подходом является декомпозиция сложного тембра, разбиение его на отдельные слои и элементы таким образом, чтобы над ними можно было работать практически независимо.

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

Огибающая определяется с помощью массива линейных сегментов. Координата x обычно задает время, а координата y может трактоваться по-разному, например, как амплитуда или частота.

Следующий пример на тему FM-синтеза и огибающих связан с моделированием ударных. Здесь реализованы тембры бас-бочки (kick) и рабочего барабана (snare). Обратите внимание, что в коде синтеза рабочего барабана используется соединение осцилляторов с обратной связью (переменная fb). Использование обратной связи в FM-синтезе (это было изобретение компании Yamaha) позволяет создавать большое разнообразие тембров простыми усилиями. С ее помощью возможно генерирование шума, как в данном случае, а также создание пилообразной и прямоугольной звуковых волн. Многочисленные генераторы огибающей используются в данном примере не только для контроля амплитуды, но и частоты осцилляторов.

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

В конце 70-х популярность начали приобретать специальные чипы для синтеза речи. Среди первых была микросхема TMS5100, которая использовалась в популярной детской игрушке Speak & Spell. Разработка данной микросхемы потребовала от инженеров Texas Instruments недюжинных усилий и ее появление на свет считается важной вехой в развитии процессоров для цифровой обработки сигналов. На этом фоне кажется особенно удивительной история S.A.M. (Software Automatic Mouth) — полностью программного синтезатора речи, который появился на свет еще в 1979 году и к началу 80-х был реализован на простейших 8-битных микрокомпьютерах компаний Apple, Atari и Commodore.


Реклама SAM

SAM представлял собой набор программ без какого-либо графического интерфейса. C помощью этих программ можно было сразу переводить произвольный текст в речь или, с использованием фонетического алфавита, предварительно описать в деталях способ озвучивания текстов синтезатором. Разборчивость фраз, на мой взгляд, у SAM не уступает чипам от Texas Instruments. Более того, в варианте формантного синтеза, реализованного в SAM, возможно на лету менять тембр и интонацию голоса, которым произносятся пользовательские фразы.

Читайте также:  Windows cmd просмотр файлов

Что такое формантный синтез? Самым основательным подходом к синтезу голоса являются решения на основе физического моделирования, отличающиеся как вычислительной сложностью, так и сложностью настройки. Более простой способ состоит в использовании генераторов тоновых и шумовых звуков, которые обрабатываются набором полосовых фильтров, имитирующих форманты (пики в спектре сигнала, которые определяют звуки речи). В случае Speak & Spell готовые фразы были закодированы на основе линейного предсказания (LPC). Соответствующие параметры определяют работу тонового и шумового генератора, а также общего для них цифрового фильтра 10-го порядка.

Вычисление очередного значения на выходе фильтра Speak & Spell требовало 20 операций умножения, что явно находилось за пределами возможностей микрокомпьютеров того времени. Какой же трюк использовали создатели SAM? Судя по всему, этот вопрос не давал покоя исследователям долгие годы, пока, наконец, в середине 2000-х код SAM для микрокомпьютера Commodore C64 не был дизассемблирован и переведен на язык Си.

Как выяснилось, реализация синтеза речи в SAM обошлась вообще без единой операции умножения. Для порождения формант в коде фигурируют только генераторы синусоиды и прямоугольного сигнала. Вообще говоря, существует синтез синусоидальных волн, в котором формирование формант попросту заменяется синусоидами на соответствующих частотах, но этот вариант не отличается разборчивостью речи. Подход SAM иной. Его истоки находятся в теории вейвлетов и гранулярного синтеза. Существует множество разновидностей этого подхода, но основным их признаком является имитация эффекта работы полосового фильтра. Поскольку «фильтр» является фиктивным, то невозможно и подать на него какой-то сторонний сигнал. Вместо сложной реализации настоящих полосовых фильтров синтез формант осуществляется на уровне порождения «всплесков» или «гранул» волновых форм. Подобным образом имитируется работа фильтров в синтезаторах Casio CZ, Roland MT-32 и Yamaha FS1r. Одной из наиболее известных разновидностей этого подхода является FOF (Формантная Волновая Функция), которая успешно себя показала в синтезе пения.

Позволю себе небольшое отступление. Добрая треть фильма «Стив Джобс» (2015) посвящена чрезмерно драматическому изображению событий, связанных с проблемами запуска синтезатора речи во время презентации первого Macintosh, происходившей в 1984 году. О том, как дело обстояло в реальности, можно узнать из воспоминаний Энди Херцфельда (Andy Hertzfeld), одного из ключевых разработчиков Apple того времени. Стив Джобс был ценителем музыки, как классической, так и популярной. Очевидно, по этой причине, а также под впечатлением от передовых компьютеров Xerox 70-х, в Macintosh была реализована звуковая подсистема неплохого, по тем временам, качества: моно, 22 КГц, 8 бит. Джобсу было важно, чтобы на презентации компьютер проиграл торжественную мелодию из «Огненных колесниц» (Chariots of Fire) Вангелиса. Увы, время поджимало, и Херцфельд успел синтезировать тембры лишь на уровне DTMF-сигналов, которые мы с вами реализовали в первом примере. В этой ситуации команду Macintosh выручил Марк Бартон (Mark Barton), не кто иной, как автор SAM. Разумеется, Джобс был в восторге от идеи, что компьютер представит себя сам. Так оно и произошло. Вот только «Огненные колесницы» запустили во время презентации с CD-проигрывателя, а модель компьютера 128K пришлось ради синтезатора речи тайно заменить на 512K, которая была еще в разработке. Впрочем, это уже другая история.

Версия SAM для Macintosh под названием MacinTalk, в отличие от микрокомпьютерных вариантов, генерировала более качественный 8-битный звук. Компания SoftVoice, производитель SAM, со временем выпустила версии синтезаторов речи для Amiga и Windows. К настоящему моменту, судя по всему, SoftVoice больше не существует, но популярность восстановленного исходного кода SAM растет среди разработчиков встраиваемых систем, которые желают реализовать простой синтез речи на ограниченных по ресурсам микроконтроллерах.

Практика

Из изучения кода SAM видно, что данный синтезатор речи имеет лишь 4 осциллятора:
2 генератора синусоиды, генератор прямоугольного сигнала (меандра), а также генератор импульсов, имитирующий работу голосовых связок. Параметры этих осцилляторов закодированы в потоке фреймов, которые обновляются с определенной частотой, соответствующей скорости «проговаривания» фраз.

Оцените статью