О звуке простыми словами42Производители Hi-Fi.
Истории и интервью111Репортажи с заводов65Репортажи с Hi-Fi выставок69"Сделай сам"44Готовые проекты Аудиомании42Пресса об Аудиомании50Видео494Фотогалерея100Интересное о звуке804Новости мира Hi-Fi2543Музыкальные и кинообзоры615Глоссарий
Взять и влиться в музыкальное программирование — языки, которые помогут это сделать
В одном из предыдущих материалов мы писали о ЯП Sporth, разработанном для проведения музыкальных live-сессий. Сегодня расскажем еще об одном инструменте для «музыкального программирования» — языке Csound. И поговорим о его аналогах — SuperCollider и Pure Data.
Как появился Csound
Этот язык позволяет решать задачи обработки звуковых сигналов и является популярным инструментом «музыкального программирования». Под этим термином понимают процесс написания треков с помощью электронных устройств: секвенсоров, синтезаторов и ПО.
История Csound берет начало еще в середине прошлого века. Он является прямым наследником семейства языков MUSIC-N, первую версию которого в 1957 году представил инженер Макс Мэтьюс (Max Mathews) из Bell Labs. MUSIC считается одним из первых решений для генерации цифровых звуковых волн. С его помощью были написаны композиции «The Silver Scale» и «The Pitch Variations». Обе работы принадлежат инженеру-акустику и лингвисту Ньюману Гуттману (Newman Guttman), который был первым музыкальным программистом в истории.
Со временем возможности MUSIC расширялись: появлялись новые версии языка, а пользовательская база увеличивалась. В середине 80-х возможности системы привлекли специалиста из MIT Media Labs Барри Верко (Barry Vercoe). Используя наработки коллег из Bell Labs, он реализовал свой язык и назвал его Csound. Компилятор он написал на C и решил распространять все по лицензии GNU LGPL. Систему до сих пор поддерживают и расширяют модулями для обработки сигналов.
Особенности языка
Для генерации звука здесь используют специальные коды операций (opcodes). Эти коды нужны для определения инструментов в файле цифрового оркестра (orchestra). Например, чтобы включить в оркестр осциллятор, достаточно написать следующую команду:
Три аргумента — это амплитуда, частота и форма волны соответственно.
Список нот, которые необходимо сыграть, размещают в отдельном файле партитуры (score), создаваемом в обычном текстовом редакторе. Далее, компилятор упорядочивает партитуру по времени, вычисляет значения для волновых таблиц и исполняет музыку.
При желании файлы orchestra и score можно объединить в один специальными тегами. На wiki приведен пример содержимого такого документа — он генерирует синусоиду длительностью в одну секунду с частотой 1 кГц.
Если вы хотите поближе познакомиться с этим языком, то, по словам резидентов Hacker News, сделать это довольно легко. Можно начать с подробной официальной документации или обратиться к тематической литературе.
Кто использует
С Csound работает американский диджей Брайан Трансо (Brian Transeau), который писал музыку к «Need for Speed: Underground» и фильмам «Блэйд 2», «Форсаж». С помощью этого ЯП он написал трек «All That Makes Us Human Continues» с альбома «This Binary Universe».
Этот ЯП использовал и шведский композитор Тобиас Энхус (Tobias Enhus), чьи работы можно услышать в фильме «Черный ястреб». С помощью этой системы он написал трек «Electric Priest».
Язык также пригодился для реализации научных и исследовательских проектов. Специалисты из Норвежского университета естественных и технических наук разработали кастомные эффекты с целью открыть новые методы написания музыки.
Альтернативные решения
Семейство ЯП MUSIC стало прародителем не только для Csound, но и других систем генерации звуков. Среди них можно выделить SuperCollider и Pure Data.
SuperCollider — это виртуальная среда для аудиосинтеза в реальном времени. В 1996 году её разработал Джеймс Маккартни (James McCartney) и выложил в открытый доступ. Со временем к проекту присоединилось еще несколько инженеров, которые поддерживают его до сих пор, — на GitHub у SuperCollider более 3 тыс. звезд.
SuperCollider обладает широкими возможностями для самовыражения, поэтому его использует довольно большое количество композиторов. Например, американский музыкант Джереми ван Бускирк (Jeremy Van Buskirk) на SuperCollider написал «A Sigh Felt Across The Earth», а профессор музыкальной школы при Пенсильванском университете Марк Баллора (Mark Ballora) представил трек «Singularity».
Что касается Pure Data, то он представляет собой визуальный язык программирования для реализации интерактивных мультимедийных произведений. Это — открытый аналог утилиты Max/MSP. В его основе лежат потоки данных (dataflow), проходящие через объекты и соединения между ними. По этой причине программа на Pure Data называется патчем (patch) — по аналогии с модульными синтезаторами, где соединения выполнялись патч-кордами.
Примеры произведений, реализованных с помощью Pure Data, можно найти на YouTube. Например, работу Рино Петрочелло (Rino Petrozziello), которая называется «Algorithmic Music». Больше примеров есть на официальном сайте.