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

Музыка по e-mail<BR>(Записки мечтателя)

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

Можно ли получить хороший звук, имея в распоряжении далеко не самый мощный компьютер и уж совсем недорогую звуковую карту? Закрываем глаза и начинаем мечтать, мечтать... Вот дискета... весь нужный софт уместился на ней вместе с руководством по применению и примерами. Работать можно с чистой совестью... это freeware... Ах, какое блаженство! Остановись, мгновение, ты... "Стоп, стоп! - говорит Строгий Гражданин. - Что за мечты в реконструктивный период? Вы что, с ума сошли?" Отойдите, Строгий Гражданин! Или не известно вам, что в потаенном уголке Вселенной любая, даже самая невероятная мечта имеет осязаемое воплощение? И почему, скажем, на этот раз таким уголком не мог оказаться симпатичный городок Бат, что на реке Эйвон в Англии, близ Бристольского залива? (Рис. 1.) Не прерывайте же сладкой грезы, дайте как следует вглядеться в ее очертания. Может, высмотрим что-нибудь достойное...

Рис. 1

Строгий Гражданин держит паузу, смягчается и дает шанс вглядеться и доложить, но велит говорить конкретно, по сути и без тумана. Что ж, попробуем.

Хороший Звук

Надо бы условиться, что именно мы будем называть Хорошим Звуком. Кто-то скажет по этому поводу: "Стэйнвей" или "фон Караян", а кто-то - "24 бита и 96 килогерц". Все это и впрямь имеет отношение к Хорошему Звуку, но затрагивает разные его стороны, эстетическую и техническую. Рассуждения об эстетике - дело, в общем-то, бесполезное (хотя и не всегда неблагодарное), однако, несомненно, приятное. Вот некоторые плоды подобного праздномыслия. Эстетическая оценка обычно связана с мерой соответствия каким-то уже известным образцам. А набор этих образцов у каждого свой. Многие скажут, что им нравится звук "красивый", "сочный", "чистый", "богатый" и т. д., и кто знает, что именно они имели в виду. Если же вы, допустим, являетесь композитором-минималистом, вам может потребоваться звук с волной простой синусоидальной формы, в то время как сердцу концептуалиста окажется мила запись пения в ванной под аккомпанемент душа и коротковолновых радиопомех, и непременно с оцифровкой 11 кГц, 4 бит, моно.

Тем не менее, некоторые эстетические предпочтения предопределены психофизиологическими особенностями нашего восприятия. И в силу этих особенностей для нас более приемлем звук с большим количеством частотных составляющих спектра. Это придает тембру внятность, "читаемость". Кроме того, неплохо было бы, чтобы с этим звуком с течением времени что-то происходило: менялась бы амплитуда, тембровая окраска и т. д. То есть наша подкорка требует, чтобы через звук передавалась некая информация (Лейбниц называл музыку наслаждением души, которая "вычисляет, сама того не ведая"). И наоборот, отсутствие такой информации в звуке угнетающе действует на психику и организм в целом (вспомним пытку "музыкальной шкатулкой", которую терпел герой Михаила Ножкина в фильме "Ошибка резидента").

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

Получается, что мы можем взять звук, подвергнуть его любому анализу и получить гору данных, только они ничего нам не скажут о его информационно-эстетической ценности. Единственной надежной оценкой, как ни странно, здесь остается сугубо индивидуальное суждение по шкале "нравится - не нравится". Или, более широко, - "подходит - не подходит", так как сюда кроме эмоциональной оценки добавляются критерии, скажем, производственного характера (например, нужно, чтобы звук ярко выделялся среди других инструментов оркестра или чтобы "читался" при прослушивании через аудиосистемы невысокого класса). Измерения физических характеристик, конечно, при этом учитываются, но решающими остаются субъективные впечатления. Простой пример: если кажется, что гитара звучит фальшиво, кому интересно, что ее настраивали с помощью тюнера?

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

Есть еще технический аспект Хорошего Звука, он связан с решением задачи: как сохранять и передавать звук, по возможности, без потерь и искажений.

Звук и компьютер

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

MIDI сродни механическому пианино: взгляните на окошко "Key Editor" типичного MIDI-редактора - ну чем не бумажная лента с прорезями, экспонат Политехнического музея? (Рис. 2.) "MIDI-прорези" несут абстрактную музыкальную информацию (когда и с какой силой нажали и когда отпустили ту или иную клавишу) и ничего не сообщают об инструменте, который должен это играть, кроме его номера в некоем стандартном наборе (скажем, General MIDI). При этом от звуковой карты будут целиком зависеть обе характеристики: и информационная (эстетическая), и техническая. Увы, кроме нот и выбора инструментов мы здесь ничем управлять не в силах. Совсем другое дело оцифрованный звук. Ведь для компьютера это такой же набор данных, как и прочие, и мы можем делать с ним все, что захотим, - создавать, уничтожать или трансформировать, имея для этого специальные программы, разумеется. Выходит, что, располагая надлежащим софтом, мы "на отдельно взятом компьютере" теоретически можем получить любой звук. Обеспечив каким-либо образом наличие в памяти компьютера (оперативной или дисковой) нужного нам звукового файла, решаем информационно-эстетическую часть проблемы. Остается только решить проблему техническую - воспроизвести оцифрованный звук.

Рис. 2

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

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

  1. Звук воспринимается микрофоном, преобразуется в цифровой сигнал с помощью аудиокарты и записывается на жесткий диск. Компьютер работает как цифровой магнитофон. Такой вариант ценен с информационной точки зрения, но связан с большими техническими проблемами. Или, правильнее будет сказать, - с финансовыми. Ведь денег, необходимых для покупки одного (!) студийного микрофона фирмы Neumann, с запасом хватит на Pentium II, укомплектованный по последней моде. Не говоря уже о помещении, профессиональной звуковой карте и прочем.
  2. Оцифрованный звук копируется "цифра в цифру" с внешнего источника информации (CD-ROM, DAT-магнитофон, другой компьютер, Интернет). Это очень хороший способ получить качественные аудиофрагменты для дальнейшей работы.

Перейдем к программным средствам создания звука. Вот уж где простор! Благословенна будь, о цифровая стихия, воистину компьютерная Вселенная с немыслимыми, неисчислимыми возможностями! ...Та-а-ак, Строгий Гражданин, уже было задремавший, приоткрыл один глаз. Ладно, пока поговорим о звуковых картах.

Звуковые карты

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

Программно реализуемые источники звука

Строгий Гражданин, кажется, опять задремал, и можно понемногу переходить к основной теме.

Поговорим о программах, которые требуют от звуковой карты лишь одного: умения воспроизводить аудиофайлы. В первую очередь, это, конечно же, S-YXG50 Soft Synthesizer фирмы Yamaha. Об этой замечательной программе "Компьютерра" уже писала ("Волны гасят кризис", #41[269]). Хотелось бы добавить, что фирма не только включила в синтезатор большое число инструментов стандарта XG (более шестисот), но и предусмотрена возможность их редактирования. Для этого служит программа XGEDIT, которую можно сгрузить с сайта компании Yamaha (www.yamaha.co.uk/xg/html/software/s_xgedit.htm).

Спору нет, S-YXG50 - великая программа, и с ее помощью, наверное, можно сделать неплохую демо-запись. Однако при этом неизбежно придется пользоваться аудиоканалом звуковой карты, что, как говорится, "не способствует"... Да и не всякому компьютеру под силу проиграть на ней достаточно "плотный" midi-файл. Еще больше ресурсов (Pentium 233, AMD-K6 или Pentium II) жаждет программа Sondius XG SoftSynthesizer , разработанная Yamaha совместно со специалистами Стэнфордского университета (www.yamaha.co.uk/xg/html/midplug/m_mid9.htm). Она сочетает в себе принципы S-YXG50 и технологию физического моделирования звуковых явлений, происходящих в реальных музыкальных инструментах (рис. 3). Демо-версия программы через Интернет не распространяется, но имеются образцы звучания, записанные в эксклюзивном сжатом формате Sound VQ с коэффициентом сжатия 20:1 (!). Кстати, очень может быть, что эта технология сжатия заслуживает более пристального внимания. Подробности на www.yamaha.co.uk/xg/html/midplug/m_mid11.htm.

Рис. 3

Ахиллес или черепаха?

Вообразив, какую работу должен успевать проделывать процессор для проигрывания нескольких midi-треков, можно придти к выводу: чтобы при данной технологии синтеза добиться качества (как технического, так и информационного), неизбежно придется радикально увеличивать производительность системы. Или так: располагая системой определенной конфигурации, придется смириться с теми ограничениями качества звучания, которые возможностями этой системы обусловлены. И какой бы мощностью компьютер ни обладал, всегда можно вообразить нечто такое, чего он не потянет. Проблема эта не умозрительная, ибо мы здесь рассматриваем материи, относящиеся к творчеству, в процессе которого, говорят, случается время от времени вообразить "нечто такое"...

А если освободить компьютер от тяжелой задачи выдавать результат в реальном времени? Пусть себе спокойно считает все, что нужно, и сколько нужно, пусть не торопится - лишь бы было качественно, а результат пишет в wav-файл. И все! Это называется словом "rendering" (термин наверняка знаком тем, кто имел дело с графическими программами).

Идея рендеринга лежит в основе программы WAVmaker (www.polyhedric.com/software/index.html), созданной Томми Андербергом (Tommy Anderberg). Как можно догадаться по названию, она превращает midi-файлы в wav-файлы, интерпретируя инструменты стандартного набора General MIDI посредством неких собственных заготовок ("пэтчей"). Проигрыватель midi-файлов MIDInight Express использует тот же принцип (воспроизводится некий "отрендеренный" буфер). Инструменты-"пэтчи" можно изготовлять из любых wav-файлов. Для этого Андерберг создал программу Mellosoftron - настоящий виртуальный сэмплер! (Реальные сэмплеры принято относить к элитному классу источников звука.) Mellosoftron позволяет работать с MIDI-клавиатурой, а если установить в систему виртуальный MIDI-драйвер Hubi's Loopback Device, то и с программой-секвенсором типа Cubase. (Hubi's Loopback Device - полезное изобретение, позволяющее программам в среде Windows обмениваться MIDI-сообщениями.Файлик mdlbk251.zip можно взять по адресу: ftp.cs.ruu.nl/pub/MIDI/PROGRAMS/MSWINDOWS.)

Кстати, о сэмплерах. В августе сего года появился виртуальный сэмплер Signum 1100 DX (www.signum.it/1100/1100.htm) (рис. 4), сделанный по образу и подобию реального S3200XL фирмы Akai. Характерно, что вместо help'а предлагается скачать с фирменного сайта Akai руководство по использованию S3200XL. Но это так, к слову. Ведь данный продукт - чистой воды "Ахиллес" со всеми вытекающими отсюда последствиями. Так что вернемся к милым нашим черепахам.

Рис. 4

Audio Compositor 3.1, созданный Скоттом Митчеллом (Scott Mitchell), удачно сочетает в себе функции всех трех программ Томми Андерберга (проигрывание-рендеринг, создание и редактирование инструментов) (рис. 5). Помимо инструментов оригинального формата ACP для рендеринга здесь можно использовать распространенный формат SF2 (превращая, таким образом, вашу карту в AWE 64), а также форматы DLS (Downloadable Sounds Level 1) и KRZ с K25 (Kurzweil). Незарегистрированная версия вполне работоспособна, позволяет составить полное представление о программе и освоить все ее функции, ограничения касаются только частоты сэмплирования (22,05 кГц) и числа каналов (моно). Найти Audio Compositor можно по адресу: www.eden.com/~mitchell.

Рис. 5

...Тепло, тепло, еще теплее

Сколько же вокруг хороших игрушек, и все такие нарядные! Вот и тянутся к ним ручонки. А если у кого наряд не то что скромнее, а и вовсе, пардон, отсутствует? Стоит он себе за дверью и тихо ждет, стесняется. Придется взять его за руку, ввести в залу и представить. Итак, леди и джентльмены... Csound!!!

Csound

Часто самые важные и ценные вещи находятся случайно. Как-то раз невод, заброшенный в глубины WWW с заклинанием "midi+soft", принес в числе прочего малоприметную рыбку по имени Midi2Cs. Страничка по адресу www.snafu.de/~rubo/songlab/midi2cs оказалась весьма симпатичной, с подробными инструкциями, ссылками, FAQ, Tutorial и пр. Предлагаемая программа (freeware) трансформирует midi- в wav-файлы, используя средства Csound. Необходимы только образцы звучания (сэмплы) используемых в midi-файле инструментов в формате aiff. (Любой wav-файл легко трансформируется в aiff-формат программой SOX, доступной по адресу www.spies.com/sox.) Произвело впечатление уверенное высказывание автора Midi2Cs: "Csound is the world leading software based audio processing system and it is for FREE!" А по поводу рекомендуемых звуковых карт сказано просто: "NO soundcard is professional". Дальше говорилось, что лучше всего иметь карту с цифровым выходом, чтобы переписывать результат работы с жесткого диска прямо на DAT-магнитофон. Кроме того, в руководстве по использованию программы было очень много ссылок на Csound Manual, и... первое свидание состоялось!

Что же это такое?

В первую очередь, пожалуй, Csound - это язык для описания алгоритмов синтеза звука. Во-вторых, конечно, это программы, реализующие вышеупомянутые алгоритмы. А в-третьих, это чистой воды магия. Потому что такая сложная, неосязаемая и труднообъяснимая сущность, как звук, возникает из такой наглядной и очевидной вещи, как текстовый файл. Точнее, из двух текстовых файлов: name.orc (orchestra) и name.sco (score). Запускается программа - и вот он, звуковой файл. В точности такой, каким вы его задумали и описали. Формат? Выбирайте: wav, aiff, IRCAM, raw. А хотите 32 бита вместо 16? Этого мало? Есть и floats! (Хотя спартанские 8 бит также доступны.) Частота сэмплирования? Впишите любую, какая вас устроит. (Такую фразу, как правило, произносят в старых американских фильмах богачи, выписывая чек главному герою.)

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

  1. зайти на ftp.maths.bath.ac.uk/pub/dream/newest ("зеркало" на ftp.musique.umontreal.ca/pub/mirrors/dream/ newest) и скачать оттуда файл csound_win.zip (680 Кбайт) (тем, кто предпочитает работать в DOS, потребуется файл csound_new.zip, находящийся по тому же адресу);
  2. по адресу ftp.maths.bath.ac.uk/pub/dream/platforms/pc/ orchestras+scores/instruments/kung.0 взять xanadu.orc и xanadu.sco (вместе около 9 Кбайт). Лучше всего сразу запастись архивом OrcsAndScos.zip (ftp.maths.bath.ac.uk/pub/dream/platforms/pc, 873 Кбайт), содержащим сотни примеров, вместо того чтобы выуживать их по всему серверу. Теперь распакуйте архив csound_win.zip - там будут файлы winsound.exe и csound.hlp. Запустив winsound.exe, вы увидите панель c окошками и кнопками. Слева от самого верхнего окошка находится кнопка "O", нажав которую надлежит разыскать и открыть файл xanadu.orc (рис. 6); аналогично с помощью кнопки "S" во втором окне прописывается xanadu.sco. В третьем окне указывается полное, включая путь, имя wav-файла, который и будет результатом работы программы. Прочие установки таковы: Format =Wav, Size =16 bit, и Graphics пусть для начала будет Full. Нажимаем кнопку "Render" - и процесс пошел. (Для приверженцев DOS приготовления будут такие. В той же директории, где находятся csound.exe и Dos4gw.exe из архива csound_new.zip, создается с помощью текстового редактора файл cs.bat из одной строки:

csound -d -H -W -o %1.wav %1.orc %1.sco

Затем туда же копируются файлы xanadu.orc и xanadu.sco, после чего из командной строки запускается "cs xanadu".)

Рис. 6

Время выполнения программы, естественно, зависит от мощности компьютера, но больше - от сложности партитуры и инструментов. Wav-файл в нашем примере займет около 10 Мбайт (1 минута звука, 16 бит, 44,1 кГц).

Итак, насладившись звучанием xanadu, что произносится как "зэнэду", а означает "волшебство", можете аналогичным образом сгенерировать и послушать пьесу mars, если только вы потрудились сгрузить вышеупомянутый архив OrcsAndScos.zip (эта пьеса лежит в папке Compositions\bergeman\faceonma).

Язык Csound подробно описан в Csound.hlp, находящемся в том же архиве csound_win.zip. Это руководство доступно также в форматах txt, htm и pdf. Однако там содержится точное формальное описание языка, а не методическое пособие по его освоению. Тем, кто решится на его изучение, могут на первых порах оказаться полезными следующие сведения.

1. Файл с расширением orc действительно описывает "оркестр", состоящий из "инструментов". Каждый "инструмент" задается блоком, заключенным между выражениями instr j (где j=1, 2, 3, ..., 200) и endin. Файл с расширением sco является "партитурой" для этого "оркестра", определяющей, когда, что и как будет играть каждый "инструмент". Кстати, ограничение числа инструментов j=200 не является принципиальным, при необходимости это число можно увеличить.

2. В языке Csound рассматриваются четыре вида величин, в зависимости от характера их обновления: setup only, i-rate, k-rate и a-rate. Имя переменной начинается с буквы, символизирующей тот тип обновления, которому эта переменная принадлежит, то есть s, i, k или a. С setup only все ясно, переменные типа i-rate ("инициализируемые") обновляются с появлением очередной музыкальной ноты, или, скорее, даже не ноты, а "события", которое может быть шире и сложнее привычного понятия "ноты". Во всяком случае, с помощью таких переменных можно задавать высоту тона, длительность, громкость и прочие атрибуты нот. Переменные типа k-rate ("контролируемые" переменные) обновляются с частотой kr, заданной в начале файла orc, и соответствуют не слишком "быстро" и "сложно" меняющимся величинам. Дело в том, что такие характеристики звука, как вибрато, форма амплитудной огибающей и другие, допускают более грубую дискретизацию, чем аудиосигнал, поэтому можно не тратить вычислительные ресурсы на их детальное отображение и ускорить программу. (При необходимости можно отказаться от ускорения и детализировать характер поведения k-rate-величин наравне с аудиосигналом.)

И, наконец, тип a-rate относится к переменным, описывающим аудиосигнал, а частота их обновления равняется sr.

Поэтому orc-файл начинается с такого заголовка:

sr=44100 ; audio sampling rate is 44,10 kHz

kr=441 ; control rate is 441 Hz

ksmps=100 ; number of samples in a control period (sr/kr)

nchnls=2 ; number of channels of audio output

nchnls задает число каналов для выходного аудиосигнала: 1 (моно), 2 (стерео) или 4 (квадро). Параметр ksmps=sr/kr явно несет избыточную информацию, однако дело в том, что sr обязательно должно быть кратно kr. Возможно, ksmp ввели, чтобы обеспечить это условие наверняка.

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

Рис. 7

Синтаксис языка Csound не так уж нагляден, особенно поначалу (рис. 7). Поэтому давайте попробуем разобрать простой пример. Ниже приведены файлы toot1.orc и toot1.sco. Если запустить winsound.exe, как было описано выше, и в нужных окошках указать эти файлы, мы получим звуковой файл с волной синусоидальной формы и частотой 440 герц (нота "ля"). При желании его можно использовать в качестве камертона.

Файл toot1.orc:

; toot1.orc

sr = 44100

kr = 4410

ksmps = 10

nchnls = 1

instr 1

a1 oscil 10000, 440, 1

out a1

endin

; end of toot1.orc

Файл toot1.sco:

; toot1.sco

f1 0 4096 10 1 ; use GEN10 to compute a sine wave

; instrument start duration

i1 0 4

e

; end of toot1.sco

(Текст, идущий после ";" до конца строки, является комментарием.) Файл toot1.orc состоит из заголовка, о котором уже шла речь, и блока инструментов. В данном случае инструмент всего один - это instr 1.

Строка

a1 oscil 10000, 440, 1

является примером стиля "оркестровых" операторов языка Csound: "результат" "действие" "перечень параметров". В данном случае аудиосигнал "a1" будет результатом работы генератора oscil. "10000" - это амплитуда, выраженная... гм, в "условных единицах". Для 16-битного звука значения амплитуды лежат в диапазоне от -32768 до +32767 (в некоторых пособиях по Csound рекомендуют величины между 15000 и 32000).

Число "440" - знаменитая частота колебаний в герцах для ноты "ля". Цифра "1" означает, что наш генератор oscil будет вырабатывать сигнал синусоидальной формы, а вот о том, как именно она это означает, будет сказано чуть позже. Строка "out a1" особенно радует душу: это наш аудиосигнал "a1" направляется на выход программы. Обычно этим выходом является wav-файл, но при желании можно работать в real time, используя непосредственно звуковую карту. Ну и, наконец, оператор endin закрывает блок instr 1.

"Партитурный" файл toot1.sco начинается с оператора "f1 0 4096 10 1". Формат операторов здесь иной, нежели в orc-файлах. Вначале идет символ, называемый "opcode" (от open code), в данном случае это "f". Далее следуют параметры p1, p2, p3 и т. д. Данный оператор задает как раз ту самую "загружаемую таблицу", о которой говорилось выше.

Теперь подробнее о параметрах.

  • Параметр p1=1, следующий сразу за "f", является номером таблицы и служит для ее идентификации. Как раз этот номер и задается третьим параметром оператора oscil в toot1.orc.
  • Далее идет p2=0. Этот параметр определяет момент времени, к которому таблица должна быть создана. Смысл - уменьшить загруженность оперативной памяти компьютера, ведь не все такие таблицы понадобятся одновременно в процессе работы программы, какие-то из них можно создать раньше, какие-то - позже. Однако для сегодняшних компьютеров эти соображения считаются малоактуальными, поэтому почти всегда p2=0, что означает формирование и загрузку таблицы с самого начала работы программы.
  • p3=4096 - это количество элементов в таблице. Чем оно больше, тем точнее представлена функция и тем медленнее работает программа. p3 равно степени двойки либо степени двойки плюс единица.
  • p4=10 определяет подпрограмму, которая непосредственно займется вычислением значений волновой функции. В нашем случае для этого будет вызвана процедура GEN10, а последующий параметр или параметры, начиная с p5, являются директивами уже непосредственно для этой самой процедуры.

Запись

i1 0 4

означает, что инструмент instr 1 из orc-файла в момент времени 0 начнет издавать звук, который продлится 4 секунды. Для оператора "i" эти три параметра являются обязательными. После них могут следовать параметры p4, p5 и т. д., с помощью которых можно передавать значения амплитуды, высоты звука или еще какие-нибудь характеристики.

Попробуем теперь понять, как это работает.

Оператор "i1 0 4" в партитуре toot1.sco активизирует instr 1 из "оркестрового" файла toot1.orc, а тот обращается к оператору oscil, который через p3=1 требует функциональную таблицу f1 из "партитуры", которая просит подпрограмму GEN10 изготовить синусоиду и дает для этого необходимые параметры, а потом создается таблица, которую берет oscil и выдает аудиосигнал... уф-ф-ф! Словом, "Дом, который построил Джек". Однако, дав себе труд осознать эту схему, мы тем самым обретаем "психологический" ключ к языковым конструкциям Csound, так как ничего принципиально более сложного среди них нет. Зато какие возможности!

 

Набор чисел p5, p6 и т. д. позволяет определить, какие гармоники основного тона и в каких пропорциях будут присутствовать в аудиосигнале. Если ограничиться p5=1, получим чистую синусоиду. Вариант "f1 0 4096 10 0 1" (p5=0, p6=1) даст синусоиду удвоенной частоты, а "f1 0 4096 10 0 0 1" (p5=0, p6=0, p7=1) - утроенной (рис. A). Если мы поставим для 11 первых гармоник "1" на нечетных местах и "0" - на четных, получим такую картину, как на рисунке B. Теперь заменим эти единицы убывающим рядом: 1, 0,33, 0,2... Тогда таблица "f1 0 4096 10 1 0 .33 0 .2 0 .14 0 .11 0 .09" даст нам волну почти прямоугольной формы (рис. C). Добавляя более высокие гармоники с более низкими коэффициентами, мы можем еще лучше аппроксимировать желаемую форму волны.


Рис. А


Рис. B


Рис. С

Возможности

Помните мультфильм "38 попугаев"? Бабушку Удава спрашивают: "А во что можно играть с присмотром?", а она отвечает: "Ребяты, - во все!" Похоже, что Csound действительно может делать все, что относится к синтезу и обработке звука. Вот неполный список доступных видов синтеза (некоторые из них описаны в "Компьютерре" от 17 ноября 1997 года): аддитивный, субтрактивный, FM-синтез, синтез на основе математического моделирования физических процессов, гранулярный синтез (представление звука в виде "облака" из мельчайших аудиофрагментов-гранул), формантный и табличный (wavetable) синтез. Кроме этого возможны такие сложные операции, как "ресинтез", когда сначала с помощью "быстрого преобразования Фурье" выясняется, из каких синусоид состоит исходный звук, чтобы потом с помощью генераторов собрать его заново. При этом можно менять высоту звука, не изменяя длительности, или менять длительность, не нарушая высоты. Этот метод дает потрясающие результаты. Кстати, следует отметить, что любой реальный синтезатор имеет ограниченное число генераторов синусоид, - здесь же ограничений практически нет! С помощью Csound можно заниматься любыми видами обработки звука - тут вам и реверберация, и хорусы, и флэнжеры, и микширование, и многое другое. Программой можно пользоваться как сэмплером и озвучивать стандартные midi-файлы. Кстати, среди специалистов и любителей Csound имеются и сторонники MIDI-технологии, и убежденные ее противники, предпочитающие максимально использовать гибкость и мощь программы для создания неповторимых звуковых миров, ибо, по мнению многих, ограничениями для творца здесь являются лишь рамки его собственного воображения.

Создатели

Автором концепции, языка и оригинальной версии программы Csound является Бэрри Верко (Barry Vercoe, Professor of Music and Professor of Media Arts and Sciences at MIT). Легендарная личность, неутомимый исследователь, удостоенный внимания Британской энциклопедии; даже в фотографиях, которые удалось достать, есть что-то ветхозаветное.

Началось все с того, что в далеком 1957 году в стенах Bell Telephone Laboratories "отец компьютерной музыки" Макс Мэтьюз (Max Mathews) произвел на свет знаменитую Music I. Это была экспериментальная программа, написанная на ассемблере. Первой программой звукового синтеза, получившей широкое распространение, была его Music IV (язык Фортран, 1962 год). Именно ее Бэрри Верко считает исходной точкой для своих собственных работ: Music 360 (ассемблер, 1968 год), Music 11 (1973 год) и появившейся летом 1986 года программы на языке Си, которая называлась бы MusicC, если бы годом ранее Ричард Мур (Richard Moore) не изготовил программу синтеза Cmusic. Во избежание возможной путаницы в названиях пришлось пожертвовать исторической традицией. С тех пор программа Csound развивается и пополняется усилиями многих и многих исследователей. К 1992 году для нее уже были доступны функции фазового вокодера, формантный синтез и совместимость с MIDI. Сегодня она лидирует среди программ подобного рода и постоянно приобретает новые возможности.

Титаническую работу по поддержанию и обновлению канонической версии Csound (а новая версия появляется примерно каждые два-три месяца) делает английский математик Джон Фитч (John Fitch). Он работает в университете города Бат (Bath), а имя свое по странной прихоти пишет как "John ffitch". Его интересы лежат в основном в сфере релятивистики, планетарной астрономии и компьютерной алгебры. К своим хобби Джон относит поддержание Csound и прием писем по e-mail, а вообще это человек с чисто английским чувством юмора, в чем можно убедиться, вступив с ним в переписку.

Программы

Существует множество версий для разных платформ (кажется, для всех мыслимых платформ), и почти все называются "Csound". Эту ситуацию Расмус Экман (Rasmus Ekman), создавший объемный help-файл к Csound, сравнил с серией кошек Энди Уорхолла, каждая из которых называется "Кошка". Человеку, впервые попавшему на ftp.maths.bath.ac.uk/pub/dream, не грех и заблудиться, потому что там хранятся даже версии для 286-х PC. Вот некоторые пояснения для работающих с платформой Wintel.

В первую очередь нас интересует раздел ftp.maths.bath.ac.uk/pub/dream/newest. Описанный выше модуль winsound.exe c help-файлом содержится в архиве csound_win.zip. Для желающих работать с DOS предназначается csound_new.zip. Здесь, помимо Csound.exe, есть утилиты, некоторые из которых, впрочем, можно вызывать и из основной программы. Csound_con.zip содержит только Csound.exe, но здесь уже это вариант для Windows, хотя запускается из командной строки. Csound является открытой системой, которую можно модифицировать по своему усмотрению. О том, как это делать, написано в руководстве, а канонический исходный текст программы находится в csound_src.zip.

Те, кто использует другие платформы, найдут все необходимое на ftp.maths.bath.ac.uk/pub/dream/platforms.

Эти версии Csound считаются официальными. Однако в последнее время заслуженной популярностью пользуется realtime-версия Габриэля Малдонадо (Gabriel Maldonado, www.agora.stm.it/G.Maldonado/download.htm). Эта программа полностью поддерживает все функции официальной версии, имеет к тому же некоторые дополнительные возможности и в основном ориентирована на работу с MIDI. Это не мешает ей, впрочем, делать полноценный рендеринг. На сайте доступны две разновидности: RTsound release 1.9 (326 Кбайт) и более поздняя DirectCsound 2.11 (277 Кбайт) для DirectX.

Пособия

Основным источником информации является руководство (manual) по Csound. В виде help-файла оно всегда имеется в csound_win.zip, однако самую свежую версию в этом формате можно получить у Расмуса Экмана по адресу hem.passagen.se/rasmuse/Csound.htm. Существуют, кроме того, варианты в текстовом и html-формате (ftp.maths.bath.ac.uk/pub/dream/documentation/ manuals или ftp.musique.umontreal.ca/pub/CsoundManual), а также в формате pdf (web2.airmail.net/dboothe). Содержание, естественно, от формата не зависит, а определяется только номером версии. В руководство включены небольшие методические пособия (tutorials). В них приведены примеры orc и sco, которые можно копировать прямо из текста, но, чтобы этим себя не утруждать, лучше скачать уже готовые файлы, собранные в один архив (ftp.maths.bath.ac.uk/pub/dream/platforms/pc/ Tutorials.zip, 218 Кбайт). Кстати, для выполнения некоторых примеров в дальнейшем могут потребоваться небольшие звуковые файлы. Они лежат на ftp.maths.bath.ac.uk/pub/dream/platforms/pc/sounds.

Одним из лучших собраний примеров для Csound является Amsterdam Catalogue of Csound Computer Instruments (ACCCI). Его можно найти на ftp.musique.umontreal.ca/pub/mirrors/accci/ index.html или wings.buffalo.edu/academic/department/AandL/ music/pub/accci/index.html.

Это довольно большой сервер, содержащий и примеры, и пояснения, и даже схемы. К сожалению, в данный момент существует только online-версия, так что есть смысл воспользоваться каким-нибудь offline-браузером. Объем информации составляет порядка полутора мегабайт.

Вот еще несколько полезных онлайновых пособий. Eastman Csound Tutorial - прекрасное подспорье для начинающих. Здесь детально (и понятно!) разъясняются многие нужные вещи (теорема Найквиста, частота сэмплирования, генераторы и т. д.) Адрес www.esm.rochester.edu/onlinedocs/allan.cs. Хочется порекомендовать также Csound Primer (www.sfu.ca/sca/Manuals/Csound/CsoundIndex.html), Csound Magazine (этот проект сейчас находится в начальной стадии; www.werewolf.net/~hljmm/Ezine) и статьи Ханса Майкельсона для более опытных: "A Csound Multi-Effects Processor" (reality.sgi.com/hpm_cfdevsun/multifx), "Modeling Classic Keyboard Instruments in Csound" (reality. sgi.com/hpm_cfdevsun/classic/classkey.html), "Mathematical Modeling: From Waveguides to Chaos" (reality.sgi.com/hpm_cfdevsun/mathmodl).

Люди (и программы)

Люди просто замечательные. Дело в том, что существует mail list для тех, кто работает с Csound. (Зайдя на Csound Front Page по адресу mitpress.mit.edu/e-books/csound/frontpage.html, можно узнать, как на него подписаться, а также массу интересного.) Здесь можно задать любой вопрос - вам ответят, да еще и припишут "Happy Csounding". Принято обсуждать технические проблемы и вопросы общего, даже философского порядка.

Многие из корреспондентов имеют профессорские звания или занимают посты, скажем, директоров студий, исследовательских центров и т. п. Есть среди них композиторы, использующие средства электроакустики. Есть также музыканты, программисты, есть и студенты, изучающие Csound в университетах (представьте себе). Кстати, некоторую информация о такого рода академических курсах можно получить из той же Leeds Csound Front Page. Похоже, что именно безграничные возможности Csound обусловили разнообразие тем, которые разрабатывают "граждане сисаундовцы". Вот несколько примеров.

Работы Ханса Майкельсона (Hans Mikelson) в основном относятся к традиционным, привычным музыкальным стилям и понятиям. На его странице (www.werewolf.net/~hljmm/csound) вы найдете и алгоритмы, моделирующие звучание знаменитого органа Hammond B3 (с примером использования midi-файла), и имитацию секвенсора TB303, и звуковой процессор. Есть там интересные инструменты и даже небольшие пьесы. Ханс периодически делится своими работами с участниками mail-листа. Приятно, знаете ли, бывает получить с почтой новый музыкальный инструмент, пьесу или просто интересный звук.

Тем, кто любит старые добрые синтезаторы, возможно, будет интересно посетить страницу Джефа Харрингтона (Jeff Harrington, www.parnasse.com/dx72csnd.shtml). Ему удалось реализовать на Csound несколько сотен (!) алгоритмов синтезатора Yamaha DX7.

Дэйв Перри (Dave Perry) создал программу Visual Orchestra, которая позволяет создавать инструменты для orc-файлов, манипулируя графическими образами генераторов, фильтров и т. д. Их можно всячески комбинировать друг с другом, меняя параметры, и сразу же послушать, что из этого получается. Дистрибутив объемом 5,58 Мбайт доступен по адресу www2.hku.nl/~perry.

Программа DrawSound (www.scumby.com/~bfudge/index.html) Брайана Фуджа (Brian Fudge) создает четырехголосные партитуры для Csound из картин, которые вы рисуете на нотном листе (рис. 8). При этом каждый голос рисуется своим цветом.

Рис. 8

Интересные звучания можно получить с помощью MUsiQUE CoNCreTE, разработанной человеком по имени Люка Паван (Luca Pavan, www.friends.panservice.it/pa2278). Программа использует в качестве исходного материала звуковой файл, задает много вопросов (скажем, применять ли алеаторику при написании партитуры и т. д.), а после также создает orc- и sco-файлы.

Есть примеры "самостоятельных" программ, не использующих модуль csound.exe. GranuLab Расмуса Экмана (Rasmus Ekman, hem.passagen.se/rasmuse/Granny.htm) генерирует звук методом гранулярного синтеза (рис. 9). Программа работает в реальном времени, имеет MIDI input, может создавать wav-файлы. Объем zip-файла всего 60 Кбайт. Недавно на его страничке появилась альфа-версия занятной программы Coagula для "рисования" звука.

Рис. 9

Исследователи Csound периодически предпринимают попытки создания программных оболочек для Csound.exe (Riccardo Bianchini, www.axnet.it/edison/wcshell.zip или Roger Klaveness, notam.uio.no/pub/pc/audio_prg/csound/csedit.zip), включающих в себя редакторы orc и sco-файлов. Это вызвано желанием сделать работу более комфортной. Но здесь уже вопрос вкуса. В общем-то, для работы вполне хватает хорошего текстового редактора.

"Джентльменский набор"

Строгий Гражданин, между тем, совсем куда-то пропал. Да и был ли он вообще, или так, пригрезилось? Но не будем сильно о нем грустить, а лучше подведем некоторые итоги.

Итак, что же все-таки нужно, чтобы засучить рукава и приняться за работу?

"Малый джентльменский набор" (PC-вариант):

  1. winsound.exe, ftp.maths.bath.ac.uk/pub/dream/newest/ csound_ win.zip. (679 Кбайт);
  2. для учебы - ftp.maths.bath.ac.uk/pub/dream/platforms/ pc/Tutorials.zip (218 Кбайт);
  3. для вдохновения - xanadu.orc (4 Кбайт) и xanadu.sco (5 Кбайт) на ftp.maths.bath.ac.uk/pub/dream/platforms/pc/ orchestras+scores/instruments/kung.0.

    Итого 906 Кбайт, что и требовалось доказать (это по поводу одной дискеты). Комплект для работы достаточный, но из него не мешало бы сделать "Средний джентльменский набор", добавив:
  4. текстовый редактор Programmer's file editor (Pfe 32) (freeware): www.lancs.ac.uk/people/cpaap/pfe. Дело в том, что Csound принимает за ошибку специфические неотображаемые символы, которые вставляют в текст некоторые программы-редакторы.
  5. Обе MIDI realtime-версии Габриэля Малдонадо: DirectCsound и RTsound, www.agora.stm.it/G.Maldonado/download.htm.
  6. Инструменты: ftp.maths.bath.ac.uk/pub/dream/platforms/ pc/OrcsAndScos.zip.
  7. Виртуальный DX7: www.parnasse.com/dx72csnd.shtml.
  8. Инструменты от Ханса Майкельсона: www.werewolf.net/~hljmm/csound.
  9. Amsterdam Catalogue of Csound Computer Instruments (ACCCI). См. выше ("Пособия").
  10. Руководства: Eastman Csound Tutorial, Csound Primer, Csound Magazine ("Пособия").
  11. Может оказаться полезным набор утилит ftp.maths.bath.ac.uk/pub/dream/newest/ csound_new.zip (1,13 Мбайт).

Кажется, на первое время этого должно хватить. Если еще пошарить по Сети, подписаться на Csound mail list, то можно составить "Большой" и "Очень большой джентльменский набор". Кстати, mail list является постоянным источником интересных инструментов или звуков. Некоторые из таких "почтовых приобретений" ваш покорный слуга поместил по адресу www.the7hills.com/csound. Там же можно найти звуковые фрагменты, созданные на Csound и переведенные в формат mp3.

(традиционное) Что делать?

Господи, да хоть что-нибудь! Говорят, чудес не бывает. Еще как бывают, только требуют они серьезных затрат. Финансов или труда. Слава Богу, выбор, кажется, есть. Любимая во все времена присказка: с материальными ресурсами, мол, беда, зато интеллектуальных и трудовых - хоть отбавляй. В данном случае: Csound распространяется бесплатно, что не означает, будто это такая штука "для бедных". Насколько можно судить, организации и отдельные персоны, им занимающиеся, "упакованы" весьма не слабо. И уж если они этим занимаются, то вовсе не по бедности. Для нас же, традиционно (или принципиально?) бедных, это уникальная возможность с пользой поместить свой хваленый интеллектуальный капитал. Кстати, о пользе. Незабываема история о том, как "лабораторные" открытия Джона Чоунинга в области частотной модуляции вовремя не оценили в Америке, а сметливые японцы использовали их для создания успешного коммерческого продукта Yamaha DX7.

Теперь конкретно. Вот, если позволите, пара рекомендаций для тех, кто решит попробовать свои силы. Модуль winsound.exe не требует инсталляции (если лень распаковывать архив, его можно запускать прямо из zip-файла). Однако лучше все-таки не пожалеть новенькой папочки (folder), а в autoexec.bat вставить несколько строчек вида "set sfdir=c:\csound\waves" - вот и вся инсталляция. В Help'е (раздел Getting Started, пункт Directory Structure) это толково разъясняется, только постарайтесь набирать строчки прописными буквами: не уверен, но Csound, кажется, case-sensitive. Приготовления несложные, а необходимы они для работы с дополнительными файлами, такими как звуковые сэмплы, протоколы анализа сэмплов с помощью преобразования Фурье, MIDI-файлы и т. д.

Язык Csound несколько походит на обычные языки программирования, а руководство по нему - это что-то вроде технической документации. Читать его от корки до корки, пожалуй, не стоит (это чтение действительно может стать захватывающим, но уже на некотором этапе). Обязательно надо прочесть Csound Introduction, а затем можно переходить к Instrument Design Tutorial (этот раздел написан знаменитым Ричардом Буланже из Berklee College of Music). Дав себе труд "с Help'ом в руках" разобрать, выполнить и прослушать (!) с десяток приведенных там примеров, можно спокойно переходить к изучению наследия корифеев или заняться собственным творчеством.

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

О передаче мыслей на расстоянии. Произведение xanadu длится одну минуту. Будучи реализованным с качеством CD (16 бит, 44,1 кГц), оно занимает 10 Мбайт. (Скачать нет желания?) Пара текстовых файлов xanadu.orc и xanadu.sco в сумме "весят" меньше 9 Кбайт, но с абсолютной точностью определяют данный звуковой фрагмент. За сколько секунд можно отправить такое письмо по e-mail?

Где взять

Вряд ли на Митинском рынке или ему подобных местах. Люди там серьезные, бизнесом занимаются, ориентируются на спрос. Откуда быть спросу на то, о чем практически никто не знает? (Хотя, конечно, бывает всякое.) Так что единственный источник - Интернет. Собственно, этот пункт для тех, кто им пока не пользуется. Если не ошибаюсь, Интернет-кафе или Интернет-салоны имеются почти в каждом городе, а чтобы скачать все необходимое (на свои дискеты), потребуется не более получаса доступа.

Куда все это потом девать. В самом деле, что делать с плодами творчества объемом в десятки или сотни мегабайт? Можно, конечно, хранить композиции в виде исходных текстовых orc и sco-файлов, но, если произведения достаточно масштабны, восстановление их всякий раз с помощью рендеринга приведет к большим потерям времени. К тому же бывает целесообразнее рендерить не все произведение целиком, а отдельные его части, монтируя их затем с помощью аудиоредактора (Sound Forge, Cool Edit и т. д.) или программ для многоканальной записи (наподобие Cubase Audio, Samplitude или "легкой" Multiquence v1.02.; www.goldwave.com/multiquence). Очень хорош способ архивации аудиофайлов на CD-ROM, но лязганье "бюджетных ножниц"... К счастью, из компьютера можно вынуть винчестер и отнести его туда, где эти ножницы лязгают не так громко. Кажется, подобные места существуют.

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

"Кто мешает тебе выдумать порох непромокаемый?", говаривал Козьма Прутков и при этом был тысячу раз прав. Одной из причин, почему до сих пор мощная толпа не ринулась работать с Csound, является, на мой взгляд, нежелание большинства иметь дело с системой, у которой практически отсутствует графический интерфейс. Как было бы здорово иметь возможность не только играть на MIDI-клавиатуре, как в realtime-версии Csound Габриэля Малдонадо (см. выше), но и в реальном же времени крутить виртуальные ручки, двигать ползунки и вообще всячески менять параметры устройств, из которых составлены инструменты. Вот взять бы да и приделать к Csound эти ручки и ползунки, а там - хоть в "шаревары" наряжай! Ведь исходные тексты распространяются свободно. А что же с авторскими правами? Снова берем Help, открываем пункт об авторских правах и смотрим, что пишет Джон Фитч: "The mixer, graphing and SoundBlaster support are probably my copyright, and I hereby give permission to use, copy, or modify this code for any purpose whatsoever. I would like my name to remain in there, but I do not insist".

...и немного пафоса

Мотивом взяться за эту статью было желание сообщить о факте существования Csound как можно большему числу потенциально заинтересованных людей в России. Признаюсь, вначале была идея подать все это как некий "эконом-класс", предложив использовать достижение западной технологической культуры, инструмент для создания high-end исключительно в "башнях из слоновой кости" в качестве способа решения здешних финансовых проблем в области аппаратного обеспечения. Однако ситуация с оборудованием быстро меняется, малодоступное еще вчера "железо" сегодня можно купить за копейки. Но это не упразднит Csound! Познав возможность свободно творить свой собственный мир образов, человек ни за что от нее не откажется.


1 Чтение "Розницы" вселяет надежду, что дешевые карты по ряду параметров все-таки будут обеспечивать хотя бы минимальный уровень качества. Что ж, давно пора.

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