К содержанию
fohbook/ grandMA3
профи

Плагины на Lua

Полноценный язык внутри пульта. Нужен там, где макросу не хватает условий и циклов, — и это девять случаев из ста.

Когда макроса мало: что умеет встроенный Lua, где брать готовые плагины и чем это отличается от макросов.

Тот же текст, другими словами:

Как объяснил бы коллега за пультом: коротко и по делу.

Версия ПО вашего пульта:4 места в статье новее вашей версии4 места в статье новее вашей версии4 места в статье новее вашей версии4 места в статье новее вашей версии3 места в статье новее вашей версии3 места в статье новее вашей версии3 места в статье новее вашей версии2 места в статье новее вашей версии2 места в статье новее вашей версии2 места в статье новее вашей версии2 места в статье новее вашей версии
Быстрый выбор:

Плагин — программа на Lua, выполняющаяся внутри пульта. В отличие от макроса, это полноценный язык: переменные, условия, циклы, работа с объектами шоу.

Появилось в 2.1 · в вашей версии этого нет

Версия Lua — 5.4.6.

Изменилось в 2.5 · в вашей версии работает иначе

Ядро Lua обновлено до 5.5.0. Плагин, лежащий в шоу-файле скомпилированным байткодом, на новом ядре не запустится: его нужно пересобрать из исходника. Плагины, хранящиеся текстом, переносятся как есть.

Когда это оправдано

Пакетная обработка: переименовать сотню объектов по правилу, раздать адреса, построить группы из патча.

Проверки перед шоу: пройтись по шоу и сообщить о том, что забыто.

Диалоги с оператором: спросить параметр и выполнить действие с ним.

Интеграции: обмен данными с внешними системами.

Что нужно понимать

Плагин работает с деревом объектов. Именно поэтому знание структуры данных важнее знания синтаксиса Lua: язык учится за вечер, а модель — то, ради чего всё делается.

Редактор

Появилось в 1.8 · в вашей версии этого нет

В редакторе плагинов есть номера строк, показ табуляции, библиотека шаблонов кода, панель документации API и подсветка синтаксических ошибок.

Панель API — то, с чего стоит начинать: она отвечает на вопрос «как называется функция, которая мне нужна», быстрее любого поиска.

Убрали в 2.5 · в вашей версии ещё работает

HasActivePlayback() объявлена устаревшей и будет убрана. Вместо неё IsRunningPlayback() с той же сигнатурой. Функция пока работает, но на каждом запуске пишет предупреждение в Message Center.

Где брать

  • сообщество: форумы MA и репозитории с открытым кодом;
  • собственные, написанные под конкретное шоу;
  • шаблоны, которые проще переписать, чем изучать с нуля.
Осторожно

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

Плагин против макроса

Признак Макрос Плагин
Логика Последовательность Полноценная программа
Условия и циклы Нет Да
Порог входа Минуты Часы
Отладка Простая Нужен опыт
Риск Ограниченный Выше

Девяносто процентов задач автоматизируются макросами. Плагины нужны там, где вы делаете одно и то же над десятками объектов и делаете это регулярно.

С чего начать

командная строка
> Plugin 1
 
  1. Написать плагин, который выводит сообщение, — убедиться, что цепочка работает.
  2. Научиться читать объекты шоу и печатать их имена.
  3. Сделать первый полезный: например, отчёт по патчу.

Дальше станет видно, что стоит автоматизировать: это делается очевидным на третьем шоу подряд с одинаковой рутиной.

Плагин — программа на Lua, выполняющаяся внутри пульта. В отличие от макроса, это полноценный язык: переменные, условия, циклы, работа с объектами шоу.

Появилось в 2.1 · в вашей версии этого нет

Версия Lua — 5.4.6.

Изменилось в 2.5 · в вашей версии работает иначе

Ядро Lua обновлено до 5.5.0. Плагин, лежащий в шоу-файле скомпилированным байткодом, на новом ядре не запустится: его нужно пересобрать из исходника. Плагины, хранящиеся текстом, переносятся как есть.

Когда это оправдано

Пакетная обработка: переименовать сотню объектов по правилу, раздать адреса, построить группы из патча.

Проверки перед шоу: пройтись по шоу и сообщить о том, что забыто.

Диалоги с оператором: спросить параметр и выполнить действие с ним.

Интеграции: обмен данными с внешними системами.

Что нужно понимать

Плагин работает с деревом объектов. Именно поэтому знание структуры данных важнее знания синтаксиса Lua: язык учится за вечер, а модель — то, ради чего всё делается.

Редактор

Появилось в 1.8 · в вашей версии этого нет

В редакторе плагинов есть номера строк, показ табуляции, библиотека шаблонов кода, панель документации API и подсветка синтаксических ошибок.

Панель API — то, с чего стоит начинать: она отвечает на вопрос «как называется функция, которая мне нужна», быстрее любого поиска.

Убрали в 2.5 · в вашей версии ещё работает

HasActivePlayback() объявлена устаревшей и будет убрана. Замена — IsRunningPlayback(), сигнатура та же. Пока функция работает, но предупреждение в Message Center появляется на каждом запуске.

Где брать

  • сообщество: форумы MA и репозитории с открытым кодом;
  • собственные, написанные под конкретное шоу;
  • шаблоны, которые проще переписать, чем изучать с нуля.
Осторожно

Чужой плагин — это чужой код, который выполняется на вашем пульте с полными правами. Читайте, что он делает, и проверяйте на копии шоу, а не на боевом файле за час до концерта.

Плагин против макроса

Признак Макрос Плагин
Логика Последовательность Полноценная программа
Условия и циклы Нет Да
Порог входа Минуты Часы
Отладка Простая Нужен опыт
Риск Ограниченный Выше

Практика: 90 % задач автоматизируются макросами. Плагины нужны там, где вы делаете одно и то же над десятками объектов — и делаете это регулярно.

С чего начать

командная строка
> Plugin 1
 
  1. Написать плагин, который выводит сообщение — убедиться, что цепочка работает.
  2. Научиться читать объекты шоу и печатать их имена.
  3. Сделать первый полезный: например, отчёт по патчу.

Дальше вы сами увидите, что стоит автоматизировать: это станет очевидно на третьем шоу подряд с одинаковой рутиной.

рядом по смыслу