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

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


Фото 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 кГц.

<CsoundSynthesizer>

  <CsOptions>
    csound -W -d -o tone.wav
  </CsOptions>

  <CsInstruments>
    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
  </CsInstruments>

  <CsScore>
    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
  </CsScore>

</CsoundSynthesizer>

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


Фото Escape Artiste / Unsplash

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

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



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

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


Источник: https://habr.com/ru/company/audiomania/blog/496138/


Интересные статьи

Интересные статьи

Если вы когда-либо обзаведётесь технологиями умного дома, то скорее всего, в числе первых купленных устройств у вас окажутся именно умные лампочки. Они действительно удоб...
Вот есть JavaScript — прекрасная вещь. И прекрасная она по большей части потому, что дебаггер и отладочные инструменты встроены в каждый Браузер. Без дебаггера и инспектора DOM-дерева...
Месяц назад мир узнал о смелом проекте Дамьена Риля (Damien Riehl) и Ноа Рубиным (Noah Rubin), которые словили не мало хайпа на том, что сгенерировали “все возможные“ уникальные комбинации “из 8 ...
Это статья-перевод Стэнфордского семинара. Но перед ней небольшое вступление. Как образуются зомби? Каждый попадал в ситуацию, когда хочется подтянуть друга или коллегу до своего уровня, а не п...
Ведущий разработчик — не зря «ведущий». Эту фразу я услышал на одной из конференций по IT-менеджменту и задался вопросом, а почему «не зря»? Именно он подтолкнул меня написать эту статью. Оце...