Здравствуйте, товарищи!
В недавнем посте от @giepol промелькнула просьба рассказать о том, как вообще все это делается. Были озвучены две догадки:
1) Нажимание на кнопочки с эффектами под музыку
2) Собственно, сэмплы и мастерство.
Ну, про второй способ товарищ @giepol думаю, расскажет сам - там необходимо работать с программой Ableton Live, насколько мне известно. Я же, будучи "веганом" (пользуюсь FLStudio) коснусь больше теоретической части.
У серии Launch от Novation (сейчас мы говорим про до-rgb эпоху) есть два типа подсветки кнопок - только красным диодом или двумя диодами - красным и зеленым. То есть возможен любой цвет, который можно получить смешением различной яркости этих двух диодов рассеивающим пластиком кнопки.
У меня получались оттенки зеленого (вплоть до оливкового и хаки), оттенки желтого (от красного до оранжевого).
Как контрол понимает, каким цветом какую кнопку зажечь?
Все просто. Цвет кодируется численным значением от 0 (выключен/черный) до 127 (максимальная яркость двух диодов, на выходе имеем зеленовато-желтый). Кнопки определяются номером CC.
В нашем примере используем Launch Control. С помощью редактора изменим раскладку кнопок - все будут у нас CC, то есть контролы. Так то весь нижний ряд - это ноты, но в программировании их будет трудно запоминать:
Для подачи на него команд будем использовать скриптовый программер игровых контроллеров GlovePIE с костылем из Midi-OX. Я пробовал настроить без мидиокса, но походу гловпай не умеет одновременно принимать и передавать комманды на одно и то же устройство. В итоге имеем такую схему:
То есть все что делает MIDI-OX в данном случае - тупо переадресует приходящие команды с интерфейса Midi Yoke (виртуального, к слову) на "железный" ланчпад/ланч контрол.
Самый простой скрипт в этом случае будет звучать так:
Анимацию же можно делать через процедуры. И тут у нас образовывается косячок. Дело в том, что сам скрипт гловпая - не линеен, в нем, допустим, не работают циклы. Потомы что сам скрипт есть по сути цикл, который выполняется каждую 1 миллисекунду (или даже чаще) пока не будет команды exitprogram;
Управлять этим хаосом можно только с помощью стандартных if {} конструкций, операторов wait; и переменных var.ИмяПеременной в качестве переключателей. К примеру:
То есть при нажатии на кнопку cc37 (угловая кнопка справа) и если при этом режим контроллера не изменен - ланчконтролл перемигивается красным цветом и потухает.
Покажу наглядно. Вот на этом видео:
С 1:40 обрабатывается этот код:
Надеюсь, все было достаточно информативно, лаконично и не скучно.
Если пожелаете - могу подробно рассказать, для чего все это было задумано.
Я бы не советовал владельцам ланч-контрола извращаться анимацией песен на одной линии но - у меня ж отпуск впереди, черт возьми! Наберет пост много рейтинга - запилю "виджеинг" на этой доске на какую-нибудь песню.