Архивы: по дате | по разделам | по авторам

Любовь и бедность (народная бразильская песня)

Архив
автор : СЕРГЕЙ БАТОВ    12.04.1999

Шаг. Остановка.
Другой. Остановка.
Вот до балкона
Добрался он ловко.
Через железный
Барьер перелез,
Двери открыл -
И в квартире исчез...

С. Я. Маршак.
"Рассказ о неизвестном герое"



Так, так, а что же дальше-то с ним было? Ага, "...ищут пожарные, ищет милиция", - ну, все ясно! А как же иначе? Все по справедливости: напакостил, милок, - изволь ответ держать. Только вот, вроде, так и не нашли его, парня-то этого. А как найдешь? У них ведь все схвачено: мобильные телефоны, рации, компьютеры, да и подмазано где надо... Беспредел, ох и беспредел... Да нет, парень, кажется, ничего такого... наоборот даже, - девочку спас, выходит, что герой. Ну конечно! Стихотворение и называется "Рассказ о неизвестном герое", там все хорошо заканчивается, вот только героя не наградили, потому что не сумели разыскать. Такая, значит, история.


...Как бы то ни было, а стишок этот сам приходит на ум, когда ковыляешь по декабрьскому, кое-где разъеденному солью льду по необъятным просторам ВВЦ, пытаясь держать курс на павильон "Вычислительная техника": "...Еле стоит На карнизе нога, А до балкона - Четыре шага".

Что за прихоть пасмурным зимним днем, когда смеркается раньше, чем рассветает, ступать на коварный лед с риском грохнуться и нанести урон опорно-двигательному аппарату? ("Видели люди, Смотревшие снизу, Как осторожно Он шел по карнизу".) Что за необоримая сила гонит человека идти осматривать малолюдные и притихшие павильоны Выставки Достижений Китайского, Корейского, Тайваньского и прочих Хозяйств? Жажда знаний? Природное любопытство? Как бы не так! Гонит его природная жадность, неуемная алчность и предвкушение возможной поживы. Сценарий таков: в результате строгой экономии и крупных финансовых махинаций обнаруживается возможность истратить 25 долларов. Вообще-то, в планах был картридж для струйника ценою в 27. Но тут ведь что открылось? Карта! Звуковая! Царский XG-формат у синтезатора - а как же иначе, ведь на самом что ни на есть ямаховском чипе YMF724A все построено. Да еще цифровой выход SPDIF - мечта аранжировщика-надомника. И все это богатство за 23 доллара? (Да какой там картридж, - писать да рисовать карандашами-фломастерами можно, так оно даже красивее выйдет.) И это еще не все!

Приходило ли вам на ум попробовать LSD? Ни в коем случае этого не делайте! А вот что касается DLS (DownLoadable Sounds), то здесь не только нет противопоказаний, а даже и наоборот, польза может быть. И вот поддержку этого самого DLS в добавление к вышеперечисленному обещают производители карты с романтическим названием Harmony, о которой идет здесь речь.

Человеческая память с годами начинает походить на шерсть собаки, совершившей лесную прогулку. Разного рода трех- и четырехбуквенные слова и аббревиатуры цепки, как репей. Проникнув в наш "разум возмущенный", они определяют цели, руководят поступками и вообще - не дают расслабляться, делая жизнь "интересной и наполненной". Колючку "DLS", например, довелось подцепить в Help'е к программе Awave, и нету от нее покоя. За больное место кусает: очень уж хочется от звуковых карт того, чего они никак не хотят давать, хотя по идее - могут, точно могут! О чем идет речь? Да всего-то о возможности делать новые инструменты.

В самом деле, а почему бы и нет? Wavetable-синтез основан на проигрывании заранее записанных аудиофрагментов (сэмплов). Содержимое сэмплов, собственно, и определяет характер звучания wavetable-инструментов. Awave позволяет строить инструменты из сэмплов, но, к сожалению, далеко не для всех звуковых карт. Как минимум, у карты должна быть оперативная память для загрузки таких инструментов. При этом у каждой карты свои особенности, свой формат инструментов. На этом фоне DLS, постоянно упоминаемый в Help'е к Awave, представлялся чрезвычайно удобным, исключительно универсальным (аппаратно-независимым!), одним словом - заветным форматом для MIDI-инструментов. Сообщения в прессе о новых PCI-аудиокартах, которые шутя работают с наборами DLS, загружая их непосредственно в оперативную память компьютера, подогревали интерес. DLS тут, DLS там... Ну, так где же он?

О том, как широко простирает "Компьютерра" "руки свои в дела человеческие"
...Уже не один павильон обшарен, а этой самой Harmony что-то не видно. ("Нет, - Отвечают Пожарные Дружно: - Девочка в здании Не обнаружена".) Вот, наконец, и "Вычислительная техника". Где ж она, карточка-то эта? Здесь тоже что-то не видно, не иначе как раскупили. Не мудрено... еще дольше бы деньги копил да собирался. Ладно уж, спросить, что ли, вот у этого продавца, - и ему, глядишь, повеселее будет, чем так-то сидеть.

" Harmony? Нет, не было. И почему именно "Harmony"? Да с такими названиями карт-то, наверное, сотни". "Ну как же, - говорю, - она ведь на ямаховском чипе и SPDIF у нее..."

Тут на мое счастье приблизился человек с коробкой в руках. ("Рыжий от ржавчины, Весь в синяках, Девочку Крепко Держал он в руках".) Видно, услыхал мои оправдания и решил оказать услугу. Он такую карту только что приобрел. Где? Да вон там, в двух шагах... Карта, правда, называлась по-другому, но, по его словам, продавцы уверяли, будто это она самая и есть. Двинувшись было в указанном направлении, вдруг замечаю на стене некую прокламацию. Что это? Ба, ксерокопия компьютерровской страницы со статьей Александра Яковлева о той самой карточке! Нужные места помечены фломастером, а ниже крупная надпись: "YamahaYMF724 здесь!" и стрелка. Пройдя в каком-то сомнамбулическом состоянии коридор, попадаю в очередной закуток, откуда выхожу минут через пять, прижимая к груди заветную коробку...

О том, кто и как поддерживает DLS
Установив карту ("Дочка заплакала, Мать обнимая"...) и вкусив сполна ее прелестей (XG-формат синтезатора), можно было поинтересоваться и десертом (DLS). Однако вскоре выяснилось, что заявленная в руководстве пользователя "поддержка DLS" является исключительно моральной. В CD-ROM'е на эту тему больше ничего не было, а ответ представителя фирмы (по e-mail) внес окончательную ясность: "...this function can't be use in this time".

Раз уж новая карточка не спешила проявить свои замечательные свойства в отношении DLS, оставалось надеяться на что-то программное, пригодное уже для всех карт. Такой софтверный DLS-синтезатор (Miles Sound System фирмы RAD Game Tool) вскоре удалось найти, только вот жаль, что звучит он, пожалуй, хуже самой дешевой карты. А вообще, список фирм, которые заявили о поддержке DLS, есть на сайте Ассоциации производителей MIDI (MMA, http://home.earthlink.net/~mma), учредившей этот стандарт. И здесь открылось нечто интересное: похоже, что сегодня наиболее успешно управляется с DLS "одна известная компания". На www.microsoft.com/msdownload/imusic/controller/controlsetup.htm можно получить компоненты Interactive Music Control и Microsoft Synthesizer, позволяющие создавать и прослушивать html-страницы с интерактивной музыкой. Для этого предлагаются наборы "стилей" (STY-файлы), причем все чисто и без запинок играется инструментами DLS, если установлен GM-набор в формате DLS (3,28 Мбайт) с сайта www.microsoft.com/msdownload/imusic/16bitsynth/synth16setup.htm.

Ясно, что эти STY-файлы так или иначе содержат MIDI-команды. Стало быть, задачу создания программного синтезатора на базе DLS, способного качественно проигрывать MIDI-файлы, фирма Microsoft в принципе решила уже, если не ошибаюсь, в 1997 году  [1]. А что же сегодня? А сегодня - DirectX 6.1 и DirectMusic с гибкими средствами создания музыки в среде Windows. Программа DirectMusic Producer, способная работать и со "стилями", и с обычными MIDI-файлами-плюс-DLS - тема для отдельного разговора.

О том, как в домашних условиях приготовить DLS
В списке на сайте MMA нет программы Audio Compositor, хотя она тоже поддерживает формат DLS в качестве редактора и software-синтезатора. В реальном времени программа работает не так уж хорошо, главным образом она предназначена для создания WAV-файлов на основе MIDI (non-realtime synthesis).

Таким образом, уже сейчас можно работать с DLS, не дожидаясь, когда DirectMusic "войдет в каждый дом". Вы просто открываете MIDI-файл, а в качестве instrument file указываете нужный DLS-набор. Теперь по поводу таких наборов. Пока что нет ощущения, что Сеть завалена DLS-файлами. А точнее, кроме Gm.dls, лежащего на сайте Microsoft, ничего больше обнаружить не удалось.Сам набор, изготовленный фирмой Roland, неплох, хотя особенным звучанием и не поражает. Заглянув внутрь Gm.dls с помощью программы Awave, можно убедиться, что все wave-формы имеют дискретизацию 22,05 кГц, за исключением трех по 24 кГц. Ясно также, что при общем объеме в 3,28 Мбайт и большом количестве инструментов пришлось сэкономить и на длине сэмплов. Так что возможности для улучшений вполне должны быть.

А что, может, не будем ждать милостей от... ну, не важно от кого или чего, а просто возьмем да и сделаем себе на радость хотя бы один DLS-инструмент? Вот один из рецептов.

А Программу Awave можно найти по адресу: http://hem.passagen.se/fmj/fmjsoft.html (ZIP-файл около 485 Кбайт).

Б Немного труднее с сэмплами, но есть одно местечко, так уж и быть, по блату: ftp://cecelia.media.mit.edu/pub/Csound/Samples/Bosendorfer.tar, правда, это уже около четырех мегабайт. [2]

В Архив Bosendorfer.tar совершенно спокойно "растаривается" с помощью WinZip 6.3, внутри - восемь файлов с, если не ошибаюсь, линуксовскими именами. Смело переименовываем "BOSEN mf A0 st" в "A0.aif", "BOSEN mf B4 st" - в "B4.aif", и т. д. Теперь перед нами восемь сэмплов в формате AIFF, каждый содержит одну ноту, сыгранную на фортепиано со средней громкостью (mezzo forte), стерео 44,1 кГц, 16 бит.

Г Наши сэмплы поименованы в соответствии с нотами. Однако с номерами октав здесь та самая история (см. врезку). Во избежание путаницы к каждому числу в названии файла прибавим двойку: например, "A0.aif" заменим на "A2.aif". В итоге должно получиться: A2, B6, C#6, C4, D#5, D3, F#6, F4.

Д Формат DLS Level 1 не допускает стереофонических wave-форм. В принципе, Awave при сохранении набора в этом формате все равно конвертирует стереосэмплы в моно, но, если мы хотим лучшего звучания, об этом лучше позаботиться самим. Для этого понадобится аудиоредактор, предпочтительно - Sound Forge. Еще раз повторю, что этот пункт желателен, но необязателен.

Е Запускаем Awave и в окно программы перетаскиваем все наши сэмплы. Правой кнопкой мыши для каждого сэмпла вызываем "Properties" и под закладкой "General" в окошке "Root key" выставляем в точности название нашего сэмпла.

Ж В левом окне программы правой кнопкой мыши создаем "New instrument" (можно назвать его "piano"). В нем уже есть слой (layer 1), к которому нужно добавить регион. Выполнив "Add new region", получим панель с окошками (закладка "General"). В окошке "Waveform link" надо выставить название wave-формы (сэмпла), а в двух окошках "Key range" - названия крайних нот региона.

Рекомендуемая раскладка (в обозначениях ["нижняя нота региона".."верхняя нота региона" : "wave-форма"]):
[C0..B2 : A2], [C3..F#3 : D3], [G3..D4 : C4], [D#4..A4 : F4], [A#4..G5 : D#5], [G#5..D#6 : C#6], [E6..G#6 : F#6], [A6..G10 : B6].

Таким образом, у нас получился мультисэмпл из восьми регионов. Следует отметить, что петли (loops) уже были заданы в сэмплах нашего набора. Самостоятельно это можно делать в той же Awave, а очень удобно - в Sound Forge.

З Незарегистрированная версия Awave наотрез отказывается сохранять весь набор инструментов. Можно зато сделать "Save instrument as..." и сохранить наше "piano" как полноценный DLS-файл, что вполне нас устраивает.

И Последний (и приятный) пункт рецепта. Надо раздобыть хороший фортепианный MIDI-файл - например, "Springtime Sundays" (Spr_time.mid) на www.geocities.com/BourbonStreet/6729/downl.htm. Впрочем, с этим проблем обычно не возникает.О любви
Вот пока что и вс§ о DLS. Как бы то ни было, технология представляется многообещающей. Возможно, что это начало больших грядущих изменений в области работы со звуком на компьютере, появления новых стандартов, непременно подразумевающих возможность на любом (!) ПК создавать музыку так же просто и естественно, как сегодня пишутся тексты в Word'е  [3]. Во всяком случае, это было бы закономерным ходом событий. DLS Level 1 - лишь пробный шаг, у этого стандарта еще много ограничений. Но, судя по тому, насколько серьезно за дело взялась Microsoft, многие видят здесь большие перспективы.

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

У Чехова есть рассказ "Репетитор" о гимназисте, попавшем в затруднение с математической задачей ("...вообще-то эта задача алгебраическая, ее с иксом и игрэком решать надо"), и купце, который лихо "расщелкал" задачу на своих счетах ("вот, как по-нашему-с, по-неученому-с будет"  [4]). Зачем я все это пишу? А затем, что очень хочу рассказать, как работает программа Csound в качестве того же сэмплера или wavetable-синтезатора, и ищу для этого повод. Может, и неправомерно сравнивать Csound (см. www.computerra.ru/1998/49-50/12.html), создаваемую как-никак силами научно-технической элиты, - с купцом, так ведь и купец по-своему непрост! Да и вообще, нравится мне она, и все тут!

Итак, вернемся к пункту 4 рецепта DLS домашнего приготовления. Определенности ради поместим все восемь сэмплов (как они есть, стерео и в формате AIFF) в папку С:\piano. Нам понадобится любая разновидность EXE-модуля Csound, например, Winsound.exe. Ее, как всегда бесплатно, можно взять по адресу: ftp://ftp.maths.bath.ac.uk/pub/dream/newest/csound_win.zip (около 700 Кбайт). Кроме того, MIDI-файлы должны быть в формате 0 (он отличается от формата 1 лишь тем, что все треки в нем смикшированы в один). Если нет желания возиться с секвенсором, можно скачать специальную программку (63 Кбайт) для конвертирования MIDI-файлов с адреса www.hitsquad.com/smm/programs/MIDI_File_Converter.

Теперь сделаем из Csound сэмплер. Для этого в любом текстовом редакторе создадим два текстовых файла: piano.orc и piano.sco следующего содержания.

 
; ======== piano.orc ===========
sr = 44100
kr = 441
ksmps = 100
nchnls = 2

instr 1
inum notnum
ifno table inum, 10 ;do keyboard mapping to ftables (1-9)
ibasno table ifno, 11 ;get basnot for each ftable
ibasoct = ibasno/12. + 3.
icps cpsmidi
iamp ampmidi 10000, 9
amp linenr iamp, 0, .2, .03
a1,a2 loscil amp, icps, ifno, cpsoct(ibasoct) ;read an AIFF-defined
sampled instr
outs a1, a2
endin
; ========== end of piano.orc ================

; =========== piano.sco ===================
f1 0 0 1 "C:\piano\A2.aif" 0 4 0
f2 0 0 1 "C:\piano\D3.aif" 0 4 0
f3 0 0 1 "C:\piano\C4.aif" 0 4 0
f4 0 0 1 "C:\piano\F4.aif" 0 4 0
f5 0 0 1 "C:\piano\D#5.aif" 0 4 0
f6 0 0 1 "C:\piano\C#6.aif" 0 4 0
f7 0 0 1 "C:\piano\F#6.aif" 0 4 0
f8 0 0 1 "C:\piano\B6.aif" 0 4 0

f9 0 128 5 1 128 10 ;for veloc to non-linear amp
f10 0 128 -17 0 1 36 2 43 3 51 4 58 5 68 6 76 7 81 8
;map notnum to table
f11 0 16 -2 0 33 38 48 53 63 73 78 83
;map table to basnot
f0 120 ; total time (in sec)
e
; =========== end of piano.sco =====================


(Строка с f0 в файле piano.sco задает время звучания в секундах. При желании использовать свои сэмплы нужно иметь в виду, что f10 задает регионы мультисэмпла с помощью MIDI-номеров нот, а f11 - ноты, соответствующие wave-формам (roots). В обозначениях Awave эти две строки выглядят так: [0..35 : 33], [36..42 : 38], [43..50 : 48] и т. д. Ну, и, само собой, придется подставить нужное в операторах с f1 по f8.)

Поместим эти оба файла в ту же папку С:\piano. Теперь надо запустить программу Winsound.exe, выставить в окошках Orchestra и Score "С:\piano\piano.orc" и "С:\piano\piano.sco" соответственно, а в Output File - "С:\piano\piano.wav" (без кавычек!). В графе Format надо указать "Wav", а в графе Size - "16 bit". После этого, нажав на кнопку "Extra", в окошке MIDI File аналогично выставим название MIDI-файла с полным путем. Нажатием кнопки "OK" возвращаемся в основную панель, где щелкаем по кнопке "Render". В итоге получим полноценный файл piano.wav, а если компьютер достаточно быстрый, то можно в Output File указать "devaudio". Тогда MIDI-файл будет проигрываться в реальном времени.

Если ваша карта нормально взаимодействует с DirectX (у некоторых дорогих профессиональных карт с этим проблемы), то благодаря Csound можно вообще иметь приличный сэмплер, работающий в реальном времени (старый и очень добрый P100 - верная тому гарантия). Для этого нужно будет взять специальную версию программы под названием DirectCsound на сайте www.agora.stm.it/G.Maldonado/download.htm. Исполняемый файл традиционно называется Csound.exe. Эта версия вовсе не имеет графического интерфейса и запускается командной строкой, хотя и является программой для Windows. Проще всего будет поместить в одну папку Csound.exe, файлы piano.orc и piano.sco, Spr_time.mid (например, см. п. И предыдущей главы), а также piano.bat следующего содержания:

csound.exe -FSpr_time.mid -+O -m0 -+X -+K -b512 piano.orc piano.sco

Дважды щелкнув по piano.bat, запускаем программу. Данный пример командной строки составлен с учетом того, что в системе может быть несколько устройств MIDI IN и WAVE OUT, и надо иметь возможность выбора. При таком варианте piano.bat программа работает в режиме "секвенсор+ сэмплер", то есть как MIDI-проигрыватель. Если убрать "-FSpr_time.mid", то можно просто играть на MIDI-клавиатуре звуками пианино.
 
MIDI-ноты
Ноты в MIDI-протоколе пронумерованы от 0 до 127. До, ре, ми, фа, соль, ля, си принято обозначать соответственно как C, D, E, F, G, A, B (первые буквы латинского алфавита, если начать перечисление с "ля": ля = A, си = B и т. д.).

После буквы идет номер MIDI-октавы, например: "D4", "F#6" и т. д. Нумерация октав начинается с "0" (в старых программах с "-1" или "-2"). Менее наглядна, но наиболее надежна идентификация ноты по ее MIDI-номеру. "До" первой октавы или "среднее до" ("middle C", "C5") всегда имеет номер 60.

Мультисэмплирование (multisampling)
Создать инструмент можно из единственного сэмпла. Однако транспонирование, то есть изменение высоты (pitch) записанной ноты на более чем 5-6 полутонов вверх или вниз может привести к заметным искажениям тембра. Возьмем для примера фортепианный сэмпл c записью ноты D#5. Чтобы сохранить изначальные тембровые краски инструмента, ограничим область транспонирования сверху нотой G5, а снизу - A#4.

Эту область (на рисунке она выделена зеленым цветом) обычно называют "регионом" (region), а сэмпл - wave-формой (waveform) этого региона. Ноту, соответствующую wave-форме, считают основной (root) в регионе. В обозначениях программы Awave этот регион выглядит как "[A#4..G5 : D#5]". Таким образом, всю MIDI-клавиатуру можно разбить на регионы. Совокупность регионов и соответствующих им wave-форм иногда называют "мультисэмплом".

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

При нажатии ноты проигрывается начало сэмпла до петли, затем включается петля и крутится все время, пока длится нота. Часто остаток сэмпла после петли просто отбрасывают, но иногда делают еще одну петлю, создающую послезвучие (release) конца ноты. На рисунке изображена wave-форма с продолжительностью звучания в 3 секунды, из которых чуть более секунды занимает петля. Нота, построенная с помощью этой wave-формы, может длиться бесконечно.
Используя мультисэмплирование и петли, можно создавать инструменты, требующие очень небольшой памяти. В файлах популярного формата sf2 часто встречаются инструменты, состоящие из десятка регионов и wave-форм длиною меньше секунды. Уменьшая объем памяти, отведенный для инструмента, мы неизбежно должны жертвовать какими-то характеристиками звука. Но у нас хотя бы появляется свобода выбора. Технология wavetable является весьма гибким орудием и дает возможности для компромиссов между экономией ресурсов и качеством звука.


Enjoy!
Стоит обратить внимание на "-b512". Это размер буфера, и его значение нужно подбирать для каждого конкретного компьютера. Скажем, число 512, оптимальное для P100, не годится, как оказалось, для P2 233 (подошло 1024).

Важно вот что. Приведенный пример чрезвычайно прост, даже элементарен. Здесь не обрабатываются некоторые специальные типы MIDI-сообщений, использованы далеко не все средства артикуляции, не применяются мудреные фильтры. При проигрывании MIDI-файлов верхние ноты несколько резковаты, потому что wave-форм лишь восемь, и верхний регион, порожденный одним сэмплом, растянулся аж на 47 нот. И, несмотря на все это, звучание подкупает своей естественностью. Это хочется слушать!

Но ведь в Csound можно делать не то что 16 регионов, как в DLS, а хоть все 128. А слоев? Да сколько угодно! Можно подключить какую-нибудь изысканную артикуляцию, а можно и эффекты. И это - независимо ни от каких фирм и корпораций.

А можно ничего этого и не делать. Можно вообще ничего не делать. Разве кто-то заставляет?




1 (обратно к тексту) - Судя по дате последнего обновления сайта.


2 (обратно к тексту) - Само собой, можно обойтись и другим набором сэмплов, только надо иметь в виду, что все параметры тогда придется устанавливать другие.


3 (обратно к тексту) - Речь, разумеется, не о самом творчестве, а лишь о воплощении - и в том, и в другом случае.


4 (обратно к тексту) - За точность цитат не ручаюсь.



© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.