середа, жовтня 08, 2008

Синтез звука. Частина третя і заключна.

Модульні системи, програмування та математика

Почнемо з простого - відкриваємо підручник з алгебри, вибираємо першу формулу, що впала в око, і використовуємо її як генеруючу функцію в звуковій програмі. Звісно, не все так просто. Треба мати якесь уявлення і про математику, і про те, що ця формула означає, і про те, що ти намагаєшься досягнути в музиці таким використанням. Едуард Артем'єв - відомий сучаний композитор-електронщик - розповідав, як його запрошували у Францію, для писання якоїсь музики на якомусь з тамошніх надпотужних музичних комп'ютерів. З ним працювала жінка-математик. Він казав їй що він приблизно хоче отримати, а вона займалася виключно програмуванням. Ось так, для серйозної сучасної музики вже недостатньо бути просто обдарованим композитором. Якщо хочете побавитися (або глибоко попрацювати) - можна поставити програму GoldWave (сам не бачив), або Virtual Waves - цю спробував. Вона дозволяє генерувати звук, але грати цим звуком безпосередньо не можна. Можна зберегти звук в файл і потім використовувати в іншій програмі-семплері. Віртуал Вейвз дозволяє застосовувати будь-які обчислення і методи, об'єднувати ії в функціональні блоки, створюючи щось незвичне. В ній же реалізований досить цікавий математичний метод Celular Automata. Є така іграшка "Життя" чи "Еволюція", коли поле розкреслене на решітку квадратів, які можуть бути білими або чорними. Сусідні клітини знаходяться в певних запрограмованих відносинах, тобто поводять себе (змінюють колір з білого на чорний або навпаки) автоматично в залежності від оточуючих умов. Зазвичай біла клітина - це порожня клітина в якій немає життя, чорна - умовний живий організм. Достатньо намалювати спочатку певну сукупність чорних клітин і включити клітковий автомат, щоб почався прочесс "життя і еволюції" - "організми" будуть завойовувати нові території, гинути від перенаселення або самотності, народжувати нові організми... Той самий принцип можна використати для синтезування звуку, або ефектів. Як саме - це вже ваша фантазія. Программа це дозволяє. Це що стосується виключно математичних забавок із звуком. Тепер перейдемо до потужних модульних систем.

Знову згадуємо Native Instrument, на цей раз - програму REAKTOR. Так, назва підходяща. Мабуть, цей тип музичних конструкторів зветься якось по-особливому, але домовимось звати іх модульними, бо насправді всі синтезатори там складені з блоків, або модулів. Ті, в своє чергу - містять ще більш прості компоненти, і так іх можна як матрьошку розковиряти аж до примітивних функцій типу додати-перемножити, записати в па'ять-витягти з пам'яті. Отже, маємо повний контроль над усіма процесам, що відбуваються в нетрях синтезатора. Можемо щось викинути, або щось додати, або створити новий алгоритм - справжній звуковий реактор. Звісно, спочатку нічого незрозуміло, потрібен деякий час і терпіння, щоб розібратися, але потім це дає можливість більшого простору для творчості. Хтось критикував Реактор за те, що в ньому обмежені функції в тому плані, що зроблено "від дурака": не можна з'єднати непоєднувані модулі, або що... Не знаю, можливо це когось обмежує, особисто я знаю, що треба просто більш досконало його вивчити аби повністю осягнути всі можливості.
REAKTOR

А поки що мені з головою вистачає тих, що є: 16 синтезаторів принципово різної будови, із приблизно 100 петчами в кожному, з можливістю перенастроювати кожний з них; 37 модулів із різноманітними ефектами та обробками; 4 грувбокси (GoBox-ом, наприклад, можна бавитись довго); секвенсори, саунд генератори, семплери та сепл-трансформери. Чесно, я не знаю навіть половини того, що може робити Реактор, але за 10 хвилин скласти власний синтезатор - без питань. Також ним можна обрбляти аудиосигнали з мікрофона чи гітари, штатними ефектами, або власної коснтрукції. Якось я приєднав мікрофон до GoBox-а, щоби він стукав саме тоді, коли говориш у мікрофон. Взагалі, Реактор створений більше для лайвів - живих виступів електронщиків. А це зараз актуально. Бо немає нічого цікавого в тому, щоб вдома написати електронну композицію, а потім на концерті просто вмикати доріжки в потрібні моменти. Цікавіше створювати композицію безпосередньо в режимі он-лайн, в режимі live. Для цього програмери і стараються. Наприклад, гарна програма Реактор.

Але вона не єдина. Щоб розказати про інші треба знову повернутися до John Chowning. Пригадуєте, саме з ним пов'язано ФМ-синтез? Існує такий цікавий інститут IRCAM (Institut de Recherche et Coordination Acoustique/Musique), де Джон і працює. Якщо щось визначне і відбувалося за останні десятиріччя в сфері електронної експериментальної музики, то саме там. Принаймні в мене склалося таке враження по скупих обривках інформації, яку можна зустріти в неті.
На щастя, ми теж можемо приєднатися до авангарду музичних дослідів, і спробувати відкрити в собі геніїв звукового програмування.

Фірма Cycling'74 (яка пов'язана і з IRCAM, і з CCRMA, або ці дві останні якось пов'язані...) створила дві широко відомі (у вузьких колах) програми:
Pure Data та MAX/MSP. Здається все-таки MAX був першим, а потім з'явилася Pure Data. Насправді вони подібні, але відрізняються інтерфейсом та ліцензійністю: Pure Data можна скачати та встановити безкоштовно (принаймні так було раніше, зараз - не знаю), а ось із MAX/MSP складніше. Там є якісь поступки в ціні для студентів, але тільки тих, хто навчається на спеціальностях, пов'язаних іх звуком. Але ми ж, товариші, живемо у вік діджітального комунізму, тому десь на китайських сайтах можливо відшукати "народну" версію цієї чудової програми. По своєму змісту - це мова програмування для звуку, побудована на С++, тобто, окрім закладених функцій, можна дописати власні. MAX/MSP має аскетичний, майже повністю чорно-білий інтерфейс, все дуже лаконічно і технологічно витончено (воно і зрозуміло - першочергово це программа була під МАС ОС).
Петч MAX/MSP

Процесс програмування полягає у з'єднанні між собою за допомогою віртуальних дротів функціональних об'єктів, які поділяються на різні класи і працюють із різними потоками данних. Спочатку взагалі програма звалася MAX і обробляла MIDI-інформацію, потім її розширили до роботи із аудіо-потоками і приєднали до назви MSP. Отже наразі ми маємо змогу робити із звуком все, що завгодно. Абсолютно все. Вас це не лякає? Тобто зараз проблема постає в тому, щоби поставити правільні питання, бо відповіді вже є. Ось мабуть тут і замислюєшся над власними потребами, можливостями і наявністю таланта. Взагалі як виникає електронна композиція? Найчастіше хтось відкопує прикольний тембр, або ритмічну партію, вона лягає в основу композиції, потім туди додають іще шось і іще, і так воно якось формується. Або не формується. Але коли стаєш професіоналом, то ти наперед знаєш чого ти прагнеш, сідаючи до клавіш. Не має тупого "методу тика", не має непевних блукань по спикам звуків, тембрів, інструментів, программ... Так, це вища стадія, і до цого веде дуже тернистий шлях. Програмні засоби, які дозволяють зробити будь який тембр (але ти повинен знати який, і як саме він робиться), ввести будь-які залежості поводження цього тембру від часу (але потрібно чітко знати відповідь на питання "що це дає для моєї музики?"), запрограмувати взаємодію і розгортання у часі декількох голосів (але для цього треба бути композитором і перетворювати оточуючу онтологію на онтологію музичну) - такі програми повністю будуть вдовольняти потреби людей, які знають, до чого йдуть. Я не хочу відлякувати від програмних засобів, навпаки - я пропагую ідеї алгоритмічної музики, але хочется зразу звернути увагу, що потрібно спочатку розібратися із собою, зі своїми ідеями, концепціями чи ідеологією. Можливо те, що ви задумали можна реалізувати простішими методами.
Якщо ж ви прагнете розкрити свій потенціал наповну, то окрім вище згаданих MAX/MSP та Pure Data, ви маєте можливість потягатися ось з таким арсеналом. По версії статті з вікіпедії, існуть такі мови аудіопрограмування:
Audio programming language:
* ABC
* ChucK : strongly-timed, concurrent, and on-the-fly audio programming language
* CMix
* CMusic
* Common Lisp Music (CLM)
* Csound
* Haskore
* HMSL
* Impromptu
* jMax : Java-based MAX clone
* jMusic
* JSyn
* Kyma
* Liquidsoap
* Loco - designed to be for sound what Logo is for graphics
* Max/MSP
* Music I
* Music-N
* Nsound: C++ API for sound synthesis
* Nyquist
* OpenMusic
* Pure Data
* Q-Audio
* Real-time CMix
* SAOL (part of the MPEG-4 Structured Audio standard)
* Soundscrape
* SuperCollider
* SynthEdit

Якщо цікаво, то в мене на слуху ChucK, Kyma, Nsound, SuperCollider, тобто коли лазив по форумах, то згадували ще й їх. А, іще забув, до Max/MSP є додаток Jitter, що дозволяє працювати також із відео, створюючи комплексні перфоманси або лайви.

Ну й наостанок, хочется розказати про синтезатор, про який я сам нещодавно дізнався. Не те щоб це була революція, але це однозначно тенденція, яка, я сподіваюся, буде мати подальший розвиток. Фірма Korg, а точніше музикант та композитор Stephen Kay, розробили технологію Karma. Глибоке знайомство із музичними інструментами, техніками виконання та особливостями звукодобуття, разом із вмінням програмування на С, дозволила Stephen Kay за 7 років створити Karma (Kay Algorithmic Realtime Music Architecture), захищену 5 патентами США. Процитую гарну статтю:
"Технология KARMA представляет собой набор алгоритмов обработки MIDI-информации, поступающей на вход инструмента. На основе этой информации в реальном времени генерируются музыкальные эффекты самого широкого спектра: от простейших арпеджио до сложного автоаккомпанемента, разнообразные ритмические и мелодические фактуры, фразы с характерной имитацией звукоизвлечения на различных инструментах (гитаре, электрогитаре, фортепиано, арфе, этнических)."
Отже, цей реальний приклад показує, що люди замислюються над більш складними аспектами музики, ніж це було раніше. Звертають увагу на складні конструкції, закладені в структуру музики. Не стільки на сам звук, скільки на те, що з ним відбувається, як він себе поводить. Саме це я вважаю досить важливим при побудові синтезаторів. І "живі" інструменти завжди залишатимуться для нас взірцем.
Бажаю всім творчих успіхів, терпіння та працелюбності.