Машинное слушание, выведенное на портал
Устройство Max for Live читает состояние лайв-сета (темп, сцену, энергию, тональность) и передаёт его на этот сайт, который превращает поток в экран SYSTEM ONLINE.
Проблема
Когда сет транслируют, сайт вокруг него обычно ничего не знает о музыке. Там есть плеер, чат, иногда обратный отсчёт. Страница выглядит одинаково и во время двадцатиминутного нарастания, и во время брейкдауна, и для музыки, весь смысл которой в движении, с этим странно мириться.
Мне хотелось, чтобы этот сайт знал, что делает сет, пока сет это делает, и показывал это так, чтобы вид менялся вместе с музыкой, потому что ему действительно сообщают, что это за музыка. Инженерный дашборд с индикаторами и графиками отвечал бы на другой вопрос.
Гипотеза
В лайв-сете уже есть почти всё, что сайту нужно знать. У Ableton есть темп и текущая сцена, а сам звук несёт энергию и, приблизительно, тональность. Если устройство внутри сета будет читать это состояние и отправлять наружу несколько раз в секунду, портал сможет рисовать прямо по нему, и посетители почувствуют связь без всяких объяснений.
Вторая, более тихая гипотеза: хватит небольшого набора удачно выбранных величин. Темп, сцена, энергия и тональность должны передать ощущение лучше полного спектра, потому что они ближе к тому, как люди на самом деле описывают сет.
Схема
- Устройство Max for Live стоит на мастер-треке лайв-сета. Оно читает из Live темп и активную сцену, меряет RMS-энергию на выходе и оценивает тональность.
- Значения идут через node.script внутри устройства в WebSocket-соединение с сервером портала. Соединение аутентифицируется токеном, так что писать в него может только сет.
- Сервер ретранслирует состояние всем, у кого открыта страница.
- На сайте состояние управляет экраном SYSTEM ONLINE: рельеф, свет и движение отвечают на входящие значения. Когда сет не идёт, экран так и говорит и переходит в тихий режим.
Сознательно оставлено за бортом: данные по отдельным трекам, сырой звук и всё, что позволило бы восстановить сет по потоку.
Результат
Предварительно.
- Канал от устройства к серверу и дальше к странице: в работе; статус от начала до конца TBD.
- Задержка между изменением в сете и изменением на странице: TBD, измерим, когда канал заработает целиком. Важна не цифра сама по себе, а ощущается ли это одновременным.
- Определение тональности на плотном, отфильтрованном материале: TBD. Ожидаю, что из четырёх величин она будет самой ненадёжной, и собираюсь относиться к ней как к подсказке.
- Читают ли посетители экран как «музыка здесь» без объяснений: TBD, узнать это можно только на настоящей сессии.
Что изменилось
Главное изменение пока касается объёма. Передавать можно было бы гораздо больше, уровень каждого трека и каждое движение параметра. Четыре величины делают устройство проще, а экран понятнее, и это совпадает с идеей всего проекта: сет это одно непрерывное состояние, а не куча отдельных событий.
Второе изменение касается запасного режима. Страница должна выглядеть задуманной и тогда, когда система офлайн, то есть почти всегда. SYSTEM ONLINE что-то значит только при условии, что есть убедительная версия страницы, где система не онлайн.