«Загружается звук...»
АрхивРассказ о технологии DLS, призванной решить важную проблему — стандартизовать звучание MIDI-файлов. © «Компьютерра»
Для того чтобы читателю было легче понять суть проблемы, я, рискуя нарваться на редакторские ножницы (риск — благородное дело. — Ред.), сделаю маленькое лирическое отступление. Несколько лет назад я купил дочернюю плату с волновым синтезатором. Это был Ensoniq Soundscape DB, который в те времена стоил целых 100 долларов (сейчас — 12).
Надев Ensoniq на Sound Blaster 16 и вооружившись мощнейшей программой-секвенсором Cubase, я соорудил первую в жизни MIDI-композицию. И отправился к другу — владельцу настоящего Sound Blaster 32, чтобы «гордо продемонстрировать свое гениальное творение».
Открыв файл медиаплейером и нажав «пуск», я предвкушал эффект, который должна была произвести моя песенка, но... мы оба были поражены какофонией, донесшейся из колонок. Инструменты вроде бы были на месте, но звучали они иначе, некоторых вообще не было слышно, и общее впечатление было ужасным. Друг удивился, я тоже, ведь дома это звучало совсем иначе. И вот, прихватив несколько «демонстрашек», прилагавшихся к SB32, мы отправились ко мне...
Секрет Генерала Миди
Как выяснилось, виноват был не бластер (хотя его стандартный мегабайт звучал чуть менее реалистично, чем у Ensoniq'а). Да и его эффектные (при воспроизведении на нем же) демо-файлы на Ensoniq'е выглядели вяло и бесцветно. Мы столкнулись с недостатком MIDI, за который его частенько ругают (и особенно ругают сторонники так называемых трекеров [1], музыкальные файлы которых содержат в себе образцы используемых звуков — сэмплы и поэтому звучат на разных звуковых картах одинаково). Да, любое устройство, совместимое с General MIDI, получив, например, сообщение «Program Change 0», переключится на звук рояля. Однако разные рояли звучат по-разному. А разные производители записывают разные рояли. И обрабатывают их по-разному. Более того, соотношение между громкостью разных инструментов стандартом GM также не декларируется. Поэтому схожим образом на разных синтезаторах будут звучать только отдельные партии инструментов. И даже MIDI-композиция, которая будет отлично звучать на восьмидолларовой таблице волн, на 250-долларовом Roland SCD-15 может воспроизводиться из рук вон плохо. Поэтому некорректны заявления типа: «Я хочу купить такую звуковую карту, на которой мои MIDI-файлы будут звучать хорошо» — ведь MIDI-файл создается с привязкой к конкретному синтезатору.
Рис. 1.
Тот факт, что стандарт General MIDI (и его расширения GS и XG) не описывают тонкостей звучания разных инструментов, вызывает ряд неудобств. Музыкант, желающий продемонстрировать товарищу свою MIDI-композицию, если у того нет такого же синтезатора, должен записывать ее в MP3 или WAV (при этом 30 Кбайт MIDI разрастаются в 3 Мбайт MP3 или 30 Мбайт WAV). Производители компьютерных игр должны либо создавать некие средние MIDI-звуковые дорожки, которые ни на одной карте не будут звучать хорошо, но и ни на одной — очень плохо, либо создавать несколько вариантов звукового сопровождения для разных звуковых карт, либо вообще отказываться от MIDI и занимать 90 процентов компакт-диска звуковым сопровождением в формате WAV... Этот список можно долго продолжать.
Рис. 2.
DLS в теории...
И наконец ведущие производители синтезаторов, мультимедиа-устройств и другого оборудования, объединенные в Ассоциацию производителей MIDI (MIDI Manufacturers Association - MMA, www.midi.org) — ту самую, которая принимает такие стандарты, как MIDI, General MIDI и другие, — решили, что так продолжаться больше не может. И приняли единый формат хранения сэмплов для табличных синтезаторов.
Спецификация DLS-1 была утверждена довольно давно... зимой 1997 года на NAMM-шоу. Новый стандарт предназначался в первую очередь для мультимедийных приложений и Интернета, и целью его было — заставить MIDI-файлы звучать на разных звуковых платах одинаково. Ниже мы рассмотрим, какой поддержкой он пользуется сейчас, а пока — некоторые технические подробности.
DLS-файл отвечает стандарту Microsoft RIFF и содержит сэмплы в формате WAV, а также данные артикуляции [2], необходимые для синтеза звуков инструментов на основе этих сэмплов. Каждый инструмент состоит из так называемых регионов, указывающих на соответствующие сэмплы.
Для каждого региона определены номер MIDI-ноты и диапазон скорости нажатия клавиши, при которых будет звучать соответствующий сэмпл, а также артикуляционные данные, такие как огибающие и точки зацикливания. Артикуляционные данные могут быть указаны отдельно для каждого региона или для всего инструмента в целом.
Структура DLS-файла показана на рис. 1. В частности, видно, что один и тот же сэмпл может использоваться разными инструментами или регионами.
Стандарт DLS-1 определяет два вида инструментов... так называемые мелодические инструменты и наборы ударных. [3] Мелодические инструменты можно проигрывать по любому MIDI-каналу, кроме десятого; при этом мелодический инструмент может содержать до 16 регионов, но все они используют одну и ту же артикуляцию.
Набор ударных, доступ к которому можно получить лишь по десятому каналу, может содержать до 128 регионов (рис. 3), каждый для одного инструмента (которому можно поставить в соответствие одну или несколько идущих подряд нот). В данном случае каждый регион имеет собственную артикуляцию и указывает на отдельный сэмпл.
Синтезатор DLS-1 довольно прост (см. рис. 4). Он состоит из цифрового генератора колебаний, цифрового усилителя и цифро-аналогового преобразователя.
Генератор получает 16- или 8-битный сэмпл и проигрывает его, модулируя высоту в соответствии с поступающими данными артикуляции. Для сэмпла (с минимальной частотой 22,05 кГц) указан номер основной MIDI-ноты и, возможно, начальная и конечная точки зацикливания. Цифровой усилитель изменяет громкость результирующего сигнала в соответствии с артикуляцией.
Артикуляционные данные включают генератор низкой частоты (Low Frequency Oscillator, LFO), два дискретных генератора огибающей типа ADSR (Attack, Decay, Sustain, Release) и несколько входов MIDI-контроллеров. Одна из огибающих предназначена для модуляции высоты тона, вторая - громкости. Кроме того, можно изменять время атаки и спада в зависимости от номера ноты.
Генератор LFO можно использовать для управления высотой и громкостью звука, а также для установки частоты и времени задержки. Форма волны синусоидальная или треугольная. Входы MIDI-контроллеров включают: номер ноты, скорость нажатия клавиши (velocity), сдвиг высоты тона (pitch bend), громкость (volume), "выразительность" (expression), панораму (pan), модуляцию (modulation wheel), "правую педаль" (sustain), а также RPN 0, 1 и 2 (сдвиг высоты, тонкая и грубая настройка) - в соответствии с параметрами Data Entry MSB/LSB. Кроме того, поддерживаются канальные сообщения "Сброс всех контроллеров" (reset all controllers) и "Выключить все ноты" (all notes off).
В режиме DLS устройство может присваивать загруженным звукам любые значения "банк/программа", избегая таким образом конфликта с другими режимами работы (такими как GM, GS или XG), которые требуют расположения конкретных голосов по определенным адресам (банк+программа).
Устройства, совместимые с DLS, должны отвечать следующим минимальным требованиям:
...на практике...
Пока, к сожалению, стандарт DLS пользуется ограниченной поддержкой у производителей звуковых карт. Многие из них, декларируя совместимость своих устройств с новой спецификацией, соответствующие драйверы выпускать пока не спешат. К ним, в частности, относится фирма Yamaha с карточкой WF192XG. Поэтому все клоны этой платы (на чипе YMF 724), поскольку в основе их драйверов лежит код Yamaha, также не поддерживают DLS, хотя на упаковке написано: DLS Level 1 support. А вот платы на чипе Vortex 1 являются приятным исключением, драйверы для них уже давно поддерживают функцию загрузки DLS. На сайте www.ixbt.com в разделе «Мультимедиа» содержится подробная инструкция о том, как преобразовать банк от Gravis UltraSound в DLS-формат (разумеется, с некоторыми потерями).
Рис. 3.
Если обратиться к производителям к программного обеспечения, то Microsoft, например, комплектует свою Windows 98 приложением с многообещающим названием Microsoft Interactive Synthesizer. (Пользователи тех версий Windows 98, в которые этот модуль не включен, могут скачать его с сайта Microsoft.) Приложение представляет собой программный синтезатор, основная таблица волн которого составлена из звуков, лицензированных у Roland. Звуки находятся в файле GM.DLS, который лежит в каталоге \Multimedia Files\Microsoft Interactive Synthesizer, создающемся при установке приложения. Microsoft предлагает всем желающим снабжать свои Web-сайты звуковым сопровождением, помещая в специальном формате MIDI и соответствующие DLS-файлы. На сервере Microsoft есть список сайтов, зайдя на которые можно послушать, как работает Microsoft Interactive Synthesizer. Этот список, материалы, касающиеся DLS, а также образцы звучания можно найти на www.microsoft.com/music.
Рис. 4.
Посмотреть, как устроены файлы формата DLS изнутри, или создать собственный DLS-файл можно с помощью программы Audio Compositor, которая лежит на www.eden.com/~mitchell. Не лишней окажется также программа Awave.
Полную спецификацию DLS (правда, за 30 долларов) можно получить на www.midi.org/dlsspec.htm (а за 45 долларов — вместе с пакетом DLS Synth/Author).
...на слух...
Искушенный читатель уже понял, что пока DLS-синтезаторы звучат на уровне самых дешевых волновых таблиц. Так, не поддерживаются слои (layers). (У дешевых синтезаторов, если слабо нажмешь на клавишу, получишь звук той же окраски, но более тихий; как метко выразился Евгений Козловский в своем «Огороде» про рояль на синтезаторе Celviano, «с сильно уменьшенной амплитудой», никаких «умирающих аккордов». У более дорогих моделей меняются параметры высокочастотного фильтра: громкий звук получается ярче. А у самых лучших — для тихих звуков записан один сэмпл, для средних — другой, для громких — третий. Остальные могут, например, приближенно вычисляться из этих трех. Несколько сэмплов для разных уровней одного и того же звука и называются слоями.) Весьма мало количество огибающих, LFO и так далее. Нет эффектов, таких как хорус, реверберация и пр. Для целого мелодического инструмента — только одна артикуляция. В переводе на русский язык это означает, что если мы нажмем самую низкую и самую высокую ноты DLS-рояля и не будем отпускать до тех пор, пока звучание не прекратится, звуки будут отличаться лишь высотой и тембром, а время атаки, затухания и другие «тонкости» звука останутся прежними — чего на самом деле быть не может.
...и в будущем
Впрочем, готовится к выпуску следующая версия стандарта — DLS Level 2. В ее обсуждении принимают участие такие авторитеты, как Creative, MPEG и Microsoft, и другие компании. В новый вариант должны быть включены эффекты, различные фильтры, появится множественная артикуляция (чтобы каждая нота звучала точнее), альтернативные строи (например, арабский), будет повышена частота дискретизации, расширены требования к памяти, полифонии и другим характеристикам. Разработчики намерены включить в DLS Level 2 возможности формата Sound Font 2.0, и, таким образом, большинство новых звуковых плат будет совместимо по звучанию MIDI с Sound Blaster'ами всех поколений (с wavetable, естественно).
К сожалению, на сайте MMA (www.midi.org) до сих пор написано, что спецификация DLS-2 будет доступна в январе 1999 года. Январь прошел — а нам остается только ждать.
1 (обратно к тексту) Трекер — любительская программа для создания музыки (в формате MOD, XM, S3M, IT и др.). Трекер совмещает в себе нотный редактор (выглядящий довольно специфически) и сэмплер и может работать с простейшей звуковой платой без волнового синтезатора (даже с PC-спикером и Covox'ом — самодельным ЦАП на нескольких резисторах, который вешается на параллельный порт). При этом звучание получается значительно лучше, чем на FM-синтезаторе, но до таблицы волн не дотягивает.
2 (обратно к тексту) Здесь под артикуляцией мы будем понимать набор параметров, определяющих условия воспроизведения сэмпла: огибающие, LFO и так далее.
3 (обратно к тексту) Такая классификация весьма упрощена и не совсем правильна; термины получены простым переводом с английского. Но поскольку она уже получила некоторое распространение в MIDI-музыке, мы будем использовать ее, понимая под «ударными» ненастраиваемые мембранные и самозвучащие инструменты, а под «мелодическими» — все остальные.