Источник
Разработчики будущего пишут не просто код — они создают алгоритмический рейв. Алгорейв — это написание и использование алгоритмов, генерирующих танцевальную музыку в режиме реального времени перед физически присутствующей аудиторией.
Генеративная музыка — явление не новое. Известно, что даже нейросеть способна создавать музыку, которую сложно отличить от творчества талантливого композитора. Однако алгорейв имеет свои отличительные особенности.
Если работа традиционного диджея строится вокруг правильного сведения треков (конечно, если он не крутит с флешки готовый микс), то алгорейверы импровизируют, допускают и исправляют ошибки прямо во время представления. При этом лайвкодеры транслируют происходящее на экране ноутбука.
Субкультура программистов
Сообщество лайвкодеров-музыкантов разнообразно и стремится участвовать в широком спектре художественных практик, включая аудиовизуальное творчество, робототехнику, танцы, научные исследования и образование, смешивая эти практики.
Что если вместо того, чтобы воспринимать «рейв» как «мероприятие», «развлечение» или «музыкальную вечеринку», относиться к нему как к потоку информации, к которому можно подключиться в режиме реального времени? Алгорейверы не всегда являются «рейверами» как таковыми, они не считают себя «будущим танцевальной музыки», но вдохновляются духом «полуанонимов», играющих для культурного объединения безымянной толпы.
Например, музыканты Aphex Twin и Autechre уже давно используют в своей музыке алгоритмические подходы, но в более традиционном смысле. Так, на их выступлениях зрители, помимо проецируемого кода, могут наблюдать визуальные эффекты, и даже танцы роботов. Все элементы шоу не обязательно прописывать вживую — первичной остается работа над разнообразной музыкальной составляющей.
Почти каждый представитель этой субкультуры использует бесплатный софт с открытым исходным кодом. В узких кругах медленно эволюционируют приложения, отметившие уже 15-летний юбилей. Однако некоторые музыканты предпочитают сами писать программы для себя.
Алгорейв постепенно становится средой для обмена идеями — любой может воспользоваться всем доступным софтом или написать что-то сам.
Визуальные и звуковые эффекты
Платформа Hydra генерирует трип-визуальные глич-эффекты.
С практической точки зрения всё происходит достаточно просто: загружается, к примеру, kitBleepFtech, дается команда
highGlobalDensity
, и комната заполняется грохочущим басом. Музыкант создает на своем компьютере отдельные шумы (ударные, бас), а специальный софт объединяет звуки на основе алгоритмов.В таком симбиозе человека и машины остается огромное пространство для творчества. Если попытаться создать тот же трек в другой раз, с использованием тех же элементов, то композиция будет звучать знакомо, но получит другую структуру.
Помимо музыки большое внимание уделяется виджеингу. Написание видеомиксов, гармонично взаимодействующих с музыкой, — отдельный вид искусства внутри субкультуры.
Так, Hydra, созданная с использованием WebRTC и WegGL, позволяет каждому подключенному браузеру, устройству или человеку выводить видеосигнал или поток, а также получать и изменять потоки от других браузеров, устройств или людей. API основан на аналоговом модульном синтезе, в котором множество визуальных источников (осцилляторы, камеры, окна приложений) могут быть преобразованы, модулированы и объединены.
Лайв-трансляция с Таймс-сквер + трансляция из аквариума + код в Hydra: https://ojack.github.io/articles/hydra/times-square.mp4
В Hydra базовым элементом является преобразование координат в цвет. Остальные функции преобразуют либо координаты, либо цвета.
Демонстрация «гидры» во время алгорейва на международной конференции по лайвкодингу, Испания, Мадрид, 2019:
Среды программирования, поддерживающие лайвкодинг, требуют способности быстро создавать, копировать и дублировать аудиовизуальный контент, а также предоставлять обратную связь исполнителям и аудитории. По этим причинам многие среды лайвкодинга используют специфичные, уникальные, гибкие языки. Ниже мы рассмотрим несколько флагманских программ алгорейва.
Создание музыки
SuperCollider — невероятно мощный кросс-платформенный opensource-аудиодвижок и язык программирования, используемый для создания музыки, генерирования визуальных эффектов и лайвкодинга. Первая версия появилась в 1996 году. Сейчас он поддерживается и развивается сообществом под лицензией GNU General Public License.
Язык является объектно-ориентированным, основан на Smalltalk с синтаксисом C. Сервер синтеза SuperCollider работает независимо и может управляться с помощью других языков, например, Haskell.
SuperCollider включает три основных компонента:
- Scsynth — аудиосервер, работающий в реальном времени. Он имеет сотни генераторов (UGens) для анализа, синтеза и обработки аудио. Можно написать свои собственные UGens на C++, и добавить в репозиторий.
- Sclang — интерпретируемый язык программирования, ориентированный на звук, но не ограниченный какой-либо конкретной областью. Sclang управляет Scsynth через пакетный протокол Open Sound Control. Его можно использовать для поиска новых методов синтеза звука, для подключения приложения к внешнему оборудованию, в том числе MIDI-контроллерам, для написания графических интерфейсов и визуальных дисплеев, а также для экспериментов по программированию. Имеет набор пользовательских расширений под названием Quarks.
- Scide — редактор для Sclang со встроенной справочной системой.
ChucK
Кросс-платформенный язык программирования для синтеза звука в реальном времени и создания музыки. ChucK поддерживает визуализации, MIDI, Open Sound Control, HID- устройства, многоканальный звук, а также имеет возможность добавлять и изменять код, не прерывая процесс генерирования музыки.
Он легок для изучения и предлагает мощный инструмент программирования для создания и экспериментов со сложными программами синтеза и анализа звука в реальном времени.
Fluxus
Среда быстрого создания прототипов для 3D-графики, звука и игр. Расширяет возможности мультипарадигменного языка Racket с помощью графических команд, может использоваться в собственной среде лайвкодинга или в среде IDE DrRacket.
Al-Jazari
Среда программирования, написанная на Fluxus, — лайвкодинг внутри лайвкодинга. Управляется с помощью геймпада, используется простой графический язык. Имеется возможность отправлять команды роботам на экране для их взаимодействия друг с другом и перемещения по местности, заполненной аудиотриггерами. Рабочий код отображается в виде пузырьков над каждым роботом, и может быть отредактирован.
В программе могут работать (или играть) одновременно несколько пользователей (в первой версии, появившейся в 2008-м, одновременно могли находиться четыре человека).
Код, модели и текстуры Al-Jazari выпускаются бесплатно, тем не менее, программа не предназначена для использования в качестве законченного ПО, поэтому для настройки необходимо скомпилировать и установить различные пользовательские программы (подробнее об этом смотрите на странице проекта).
От теории к практике
Алгорейв — это искусство, в котором переплелись элементы хакинга, геймдева и киберпанка. Сообщество лайвкодинга поощряет самосовершенствование, поэтому все инструменты доступны и постоянно поддерживаются в актуальном состоянии. По ссылкам, указанным в статье, вы найдете больше информации о том, как заняться лайвкодингом самостоятельно. Можете также попробовать поработать с TidalCycles, инструментом для создания алгоритмических шаблонов.