Статьи

Живая музыка программирования с Tidal: краткое практическое введение

Ранее в этом году один из моих любимых музыкантов, Пол Волински из группы 65daysofstatic, написал статью и написал в Твиттере о своих экспериментах с живым кодированием музыки с использованием Tidal, языка для программирования музыки на лету, написанной на Haskell.

Быстрое погружение в youtube показало, что живая музыка кодирования становится действительно популярной, и по всему миру выступают концерты, в которых нет ничего, кроме окна консоли, проектора и некоторых динамиков. И кое-что из этого действительно, действительно хорошо.

Также доступны другие языки, такие как Overtone для Clojure. В этой статье я остановлюсь на Tidal, потому что начать очень легко, и я никогда раньше не использовал Haskell. Так что неважно, на каком языке вы говорите, пришло время застрять и написать музыку.

Начиная

У Tidal уже есть исключительно хороший раздел для начинающих, который вы должны посетить и проверить здесь . Я не буду повторять их, но в заключение вам нужно:

— Dirt, синтезатор / сэмплер, который можно установить с помощью Brew

— Джек, библиотека аудиоразъема, также установленная с помощью Brew

— Haskell (и да, вы можете использовать Brew для этого тоже).

— Прилив

Для установки потребуется всего несколько аргументов командной строки, и после их настройки вам не нужно будет снова их трогать. Последнее, что нам нужно, это редактор. Есть поддержка vim, emacs и sublime, но я предпочитаю использовать Atom , редактор из Github. Пока вы будете следовать инструкциям на странице, не должно иметь значения, что вы используете.

Давайте сделаем шум

Вот очень простой пример команды Tidal:

d1 $ sound "sn cp"

Вы можете использовать 9 выходов, от d1 до d9. Запускаем команду, с которой вывод отправлять. Затем мы используем знак $ как соединитель с тем, что мы собираемся отправить; в этом случае мы используем два звука из библиотеки сэмплов sn (snare) и clap (clap). После того, как все настроено, мы должны быть в состоянии нажать на команду enter, а здесь — ловушку, а затем хлопок при повторении. Поздравляем! У тебя есть твоя первая песня.

Эта последовательность просто помещает один sn и один cp в такт, а затем повторяется. Если мы добавим больше звуков, то ритм будет звучать быстрее, так как нужно разместить 4 семпла в одном месте.

d1 $ sound “sn cp sn cp”

Это может быть хорошим моментом, чтобы сказать, что, если вы хотите, чтобы все замолчали, вы просто используете команду «hush».

Чтобы создать песню, вы просто размещаете звуки на разных выходах, чтобы они воспроизводились одновременно. Ниже приведен хороший низкий дрон со временем удержания хлопка

d1 $ sound "cp"

d2 $ sound "arp"

Это скучно, так как это всего лишь один звук на удар. Вы можете иметь несколько звуков на удар, используя квадратные скобки; все в квадратных скобках будет воспроизведено в течение одного такта.

d1 $ sound "cp [sn sn sn sn] [bd bd]"

Вы можете даже создавать полиритмы, используя фигурные скобки.

d1 $ sound "{cp sn sn, bd crow}"

Итак, мы уже выяснили, как сделать достаточно интересные паттерны и ритмы. Вы можете использовать любой образец из библиотеки грязи (установленный в ~ / Dirt / samples), который дает вам огромную творческую палитру для игры. Вот небольшой сонлет, использующий только то, что мы узнали до этого момента.

d4 $ slow 2 $ sound "alphabet:7 alphabet:4 [alphabet:11 alphabet:11] alphabet:14"

d1 $ sound "ades3:2*4"

d2 $ slow 1 $ sound "{hh*4, bd:4 sn:2}"

d3 $ slow 1.5 $ sound "arpy*8 arpy:1*8"

Команда slow позволяет распределить паттерн по нескольким столбцам, что является хорошим способом избежать быстрого повторения паттернов.

Само по себе это будет довольно быстро повторяться. Одна из причин, по которой мне нравится смотреть видео на algorave на youtube, — смотреть, как кодер меняет вещи на лету; нет предварительного просмотра, просто введите и выполните. Это приводит к некоторым интересным результатам.

К счастью, приливная палитра намного больше этой. Существует гораздо больше преобразующих команд, позволяющих изменять шаблоны.

d1 $ every 4 (0.5 <~) $ slow 0.5 $ sound "{~ ~ sn:2, hh hh bd:3 hh}"

В этом паттерне каждые 4 бара мы сдвигаем паттерн на половину бара назад. Это делает ритм немного более интересным, и я думаю, что звучит немного как Radiohead.

d1 $ sound "bd sn sn"

|+| pan "0 0.5 1"

Эта аддитивная команда неудивительно панорамирует звуки вокруг; используйте наушники для лучшего эффекта.

d1 $ chop 246 $ sound "arpy*4 arp*4" |+| speed "[1 2 4 9 1 3 1]/2"

Команда chop разрезает звук на указанное количество частей. Это ухудшает звучание различными интересными способами в зависимости от числа чопов. Существует несколько гранулирующих функций, таких как стриат, которые могут издавать бесконечное количество интересных звуков.

Команда скорости изменяет скорость выборки, умножая ее на величину. Это позволяет изменить ноту, которую играют игральные вещи, например, образец arp.

Надеюсь, это дало вам краткое представление о том, как легко начать программировать живую музыку. Я настоятельно рекомендую проверить множество видео на YouTube, так как я нашел лучший способ научиться копировать. Есть также отличный твиттер-канал Tidal Cycles, в котором собраны отличные новости и интересные ссылки, видео и примеры кода.