DAT: таблицы и текст
Данные и код в одном семействе: таблицы, CSV, JSON, скрипты и колбэки.
DAT хранит текст. Либо как таблицу с ячейками, либо как сплошную строку. В этом же семействе живут скрипты, колбэки и обмен с внешним миром.
Основные операторы
| Оператор | Что делает |
|---|---|
| Table | Таблица, которую правят руками или скриптом |
| Text | Произвольный текст; здесь же пишут Python |
| File In | Читает файл с диска: CSV, JSON, txt |
| Folder | Список файлов в папке — основа плейлистов |
| Evaluate | Выражение по каждой ячейке входной таблицы |
| Select | Выбор строк и столбцов по имени или шаблону |
| Merge | Склейка таблиц |
| Sort / Reorder | Сортировка и перестановка |
| JSON | Разбор JSON в таблицу |
| Web Client | HTTP-запрос наружу — Веб |
| Web Server | Приём HTTP и WebSocket |
| OSC In / Out | Сообщения OSC как текст |
| Execute / Parameter Execute / CHOP Execute | Колбэки на события — Скрипты |
Таблица как конфигурация
Главный приём: всё, что описывается списком, держите в таблице, а не в параметрах. Патч приборов, раскладка экранов, список сцен, соответствие кнопок и действий.
name universe address channels
wash_1 1 1 8
wash_2 1 9 8
beam_sl 2 1 22
Такую таблицу редактируют в Excel, кладут рядом с проектом и читают
File In DAT. Проект перестаёт зависеть от того, кто помнит, что где
записано — и это единственный способ пережить смену площадки.
Как это работает в свете — Патч и маршрутизация.
Обращение к ячейкам
op('table1')[0, 'name'] # строка 0, столбец name
op('table1')[1, 2] # строка 1, столбец 2
op('table1').numRows
op('table1').row('wash_1') # строка по значению первой ячейки
op('table1').appendRow(['beam_sr', 2, 23, 22])
В выражении параметра — то же самое, без python-обвязки:
op('table1')[me.digits, 'address']
Text DAT и код
Text DAT — это файл. В нём пишут:
- функции, которые вызывают из других мест (
mod('module1').myFunc()); - GLSL-шейдеры для GLSL TOP;
- содержимое колбэков.
У Text DAT есть параметр File — код можно держать внешним .py-файлом.
Тогда он нормально версионируется и правится в обычном редакторе —
Файл проекта.
Folder DAT даёт таблицу файлов в папке. Выражение в Movie File In берёт
из неё строку по индексу — и у вас плейлист, который меняется добавлением
файла в папку, без правки проекта.
Таблица на десятки тысяч строк, которая пересчитывается каждый кадр, — верный способ уронить кадры. Читайте файл один раз и держите результат, а не пересобирайте таблицу постоянно.