Взять и влиться в музыкальное программирование — языки, которые помогут это сделать

В одном из предыдущих материалов мы писали о ЯП Sporth, разработанном для проведения музыкальных live-сессий. Сегодня расскажем еще об одном инструменте для «музыкального программирования» — языке Csound. И поговорим о его аналогах — SuperCollider и Pure Data.

tuukmydfeskm2p3ejytbnbodhim.jpeg
Фото Escape Artiste / Unsplash

Как появился 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). Например, чтобы включить в оркестр осциллятор, достаточно написать следующую команду:

a1 oscil 10000, 440, 1


Три аргумента — это амплитуда, частота и форма волны соответственно.

Список нот, которые необходимо сыграть, размещают в отдельном файле партитуры (score), создаваемом в обычном текстовом редакторе. Далее, компилятор упорядочивает партитуру по времени, вычисляет значения для волновых таблиц и исполняет музыку.

При желании файлы orchestra и score можно объединить в один специальными тегами. На wiki приведен пример содержимого такого документа — он генерирует синусоиду длительностью в одну секунду с частотой 1 кГц.



  
    csound -W -d -o tone.wav
  

  
    sr     = 96000           ; Sample rate.
    kr     = 9600            ; Control signal rate.
    ksmps  = 10              ; Samples per control signal.
    nchnls = 1               ; Number of output channels.

    instr 1
    a1     oscil p4, p5, 1   ; Oscillator: p4 and p5 are the arguments from the score, 1 is the table number.
    out a1                   ; Output.
    endin
  

  
    f1 0 8192 10 1           ; Table containing a sine wave. Built-in generator 10 produces a sum of sinusoids, here only one.
    i1 0 1 20000 1000        ; Play one second of one kHz at amplitude 20000.
    e
  



Если вы хотите поближе познакомиться с этим языком, то, по словам резидентов 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».

Считается, что на полное освоение SuperCollider уйдет много времени. Хотя с этой задачей определенно помогут официальные видеоруководства на YouTube и другие гайды.


mn49olydqkcjab3ooozhsd3dwso.jpeg
Фото Escape Artiste / Unsplash

Что касается Pure Data, то он представляет собой визуальный язык программирования для реализации интерактивных мультимедийных произведений. Это — открытый аналог утилиты Max/MSP. В его основе лежат потоки данных (dataflow), проходящие через объекты и соединения между ними. По этой причине программа на Pure Data называется патчем (patch) — по аналогии с модульными синтезаторами, где соединения выполнялись патч-кордами.

Примеры произведений, реализованных с помощью Pure Data, можно найти на YouTube. Например, работу Рино Петрочелло (Rino Petrozziello), которая называется «Algorithmic Music». Больше примеров есть на официальном сайте.


Материалы по теме из нашего «Мира Hi-Fi»:

1osf72wkwrjhzpl2bwl5hcmwnbq.pngКак устроен Sporth — ЯП для музыкальных live-сессий
1osf72wkwrjhzpl2bwl5hcmwnbq.pngИстория синтеза речи: эпоха электрических решений
1osf72wkwrjhzpl2bwl5hcmwnbq.pngЧто такое музыкальное программирование — кто и почему им занимается
1osf72wkwrjhzpl2bwl5hcmwnbq.pngИстория аудиотехнологий: синтезаторы и сэмплеры
1osf72wkwrjhzpl2bwl5hcmwnbq.pngТраутониум: немецкая волна в истории синтезаторов

© Habrahabr.ru