0

"Программирование" светового шоу на Novation LaunchPad

Здравствуйте, товарищи! 

В недавнем посте от @giepol промелькнула просьба рассказать о том, как вообще все это делается. Были озвучены две догадки:

1) Нажимание на кнопочки с эффектами под музыку

2) Собственно, сэмплы и мастерство.

Ну, про второй способ товарищ @giepol думаю, расскажет сам - там необходимо работать с программой Ableton Live, насколько мне известно. Я же, будучи "веганом" (пользуюсь FLStudio) коснусь больше теоретической части.


У серии Launch от Novation (сейчас мы говорим про до-rgb эпоху) есть два типа подсветки кнопок - только красным диодом или двумя диодами - красным и зеленым. То есть возможен любой цвет, который можно получить смешением различной яркости этих двух диодов рассеивающим пластиком кнопки.

У меня получались оттенки зеленого (вплоть до оливкового и хаки), оттенки желтого (от красного до оранжевого).


Как контрол понимает, каким цветом какую кнопку зажечь? 

Все просто. Цвет кодируется численным значением от 0 (выключен/черный) до 127 (максимальная яркость двух диодов, на выходе имеем зеленовато-желтый). Кнопки определяются номером CC.


В нашем примере используем Launch Control. С помощью редактора изменим раскладку кнопок - все будут у нас CC, то есть контролы. Так то весь нижний ряд - это ноты, но в программировании их будет трудно запоминать:

"Программирование" светового шоу на Novation LaunchPad Novation, Launchpad, DJ, Программирование, Скрипт, Midi, Видео, Длиннопост

Для подачи на него команд будем использовать скриптовый программер игровых контроллеров GlovePIE с костылем из Midi-OX. Я пробовал настроить без мидиокса, но походу гловпай не умеет одновременно принимать и передавать комманды на одно и то же устройство. В итоге имеем такую схему:

"Программирование" светового шоу на Novation LaunchPad Novation, Launchpad, DJ, Программирование, Скрипт, Midi, Видео, Длиннопост

То есть все что делает MIDI-OX в данном случае - тупо переадресует приходящие команды с интерфейса Midi Yoke (виртуального, к слову) на "железный" ланчпад/ланч контрол.

Самый простой скрипт в этом случае будет звучать так:

"Программирование" светового шоу на Novation LaunchPad Novation, Launchpad, DJ, Программирование, Скрипт, Midi, Видео, Длиннопост

Анимацию же можно делать через процедуры. И тут у нас образовывается косячок. Дело в том, что сам скрипт гловпая - не линеен, в нем, допустим, не работают циклы. Потомы что сам скрипт есть по сути цикл, который выполняется каждую 1 миллисекунду (или даже чаще) пока не будет команды exitprogram;


Управлять этим хаосом можно только с помощью стандартных if {} конструкций, операторов wait; и переменных var.ИмяПеременной в качестве переключателей. К примеру:

"Программирование" светового шоу на Novation LaunchPad Novation, Launchpad, DJ, Программирование, Скрипт, Midi, Видео, Длиннопост

То есть при нажатии на кнопку cc37 (угловая кнопка справа) и если при этом режим контроллера не изменен - ланчконтролл перемигивается красным цветом и потухает.


Покажу наглядно. Вот на этом видео:

С 1:40 обрабатывается этот код:

"Программирование" светового шоу на Novation LaunchPad Novation, Launchpad, DJ, Программирование, Скрипт, Midi, Видео, Длиннопост

Надеюсь, все было достаточно информативно, лаконично и не скучно. 

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


Я бы не советовал владельцам ланч-контрола извращаться анимацией песен на одной линии но - у меня ж отпуск впереди, черт возьми! Наберет пост много рейтинга - запилю "виджеинг" на этой доске на какую-нибудь песню.