Делаем музыкальный визуализатор из светодиодов RGB

У меня дома установлены светодиоды, и я хочу заставить их танцевать под музыку.

Моя установка:

  • 10 RGB LED strips (so 30 channels) controlled by PWM (48 steps) connected to a PC via USB.
    • The LED strips are physically located in 4 groups
  • Оборудование контролируется Node.js.
  • Music is played out of Traktor on a different machine.
    • Traktor provides MIDI data out with master tempo and level.
    • У меня есть MIDI-данные, отправленные на сервер Node по UDP.

Я написал библиотеку для абстрактного управления светодиодами, поэтому в Node я могу просто вызвать:

channel[n].set(intensity, r, g, b);

... и оптимизирует данные, передаваемые по шине USB.

Итак, на моем сервере Node я получаю данные о темпе и уровне музыки, и я хочу преобразовать их в световое шоу. Node получает текущий уровень звука примерно каждые 60 мс. Данные выглядят следующим образом (20-секундный образец из середины песни, щелкните, чтобы увеличить):

http://josh3736.net/images/ledvizbig.gif

MIDI-данные выводятся по шкале от 0 до 127. В данном случае значение темпа 42 соответствовало 128 ударов в минуту.

Этот вопрос состоит из нескольких частей:

  • Most importantly, what is the best approach to use this data to control the LEDs?
    • Ideally, that input data should influence an animation/transition between colors; however, on hard hits an abrupt change/strobe might be nice too.
  • Есть ли какие-либо другие MIDI-данные от Traktor, которые я должен отправить в Node?
  • Как сделать так, чтобы каждая из 4 физических групп была ориентирована на один и тот же цвет?

Ссылки по интересам:


person josh3736    schedule 13.12.2011    source источник
comment
Во-первых, MIDI - это не аудиоданные и вообще не имеет ничего общего со звуком. MIDI - это просто протокол для управления синтезаторами и различными другими устройствами. Если вы ожидаете, что это будет работать в iTunes, полностью игнорируйте MIDI и перепишите свой вопрос только для звука.   -  person Brad    schedule 14.12.2011
comment
@Brad: Traktor использует MIDI для получения команд управления от оборудования и для отправки многих типов данных, включая данные о воспроизводимом аудио - в этом случае я настроил его для отправки темпа (BPM) и уровень (громкость). Я собираюсь вычеркнуть строчку об iTunes, поскольку это, вероятно, в любом случае выходит за рамки вопроса.   -  person josh3736    schedule 14.12.2011
comment
@ josh3735, хорошо, теперь, когда мы полностью игнорируем звук и просто смотрим на MIDI ... Почему бы не использовать стандартные сообщения синхронизации MIDI? Они должны быть отправлены Traktor, а также другим программным обеспечением, таким как Ableton Live. Вы получите 96 тактовых сообщений на бит.   -  person Brad    schedule 15.12.2011


Ответы (2)


Мой главный совет для анимации и визуализации светодиодных лент - работать в цветовом пространстве HSV. Таким образом, вы можете независимо управлять палитрой и интенсивностью: https://www.npmjs.com/package/color-system

Работайте с цветами HSV, чтобы кодировать свои анимации, а затем конвертируйте каждый пиксель в RGB, когда будете готовы отправить их на диск.

Таким образом, вы можете, например, связать свою громкость с интенсивностью (V), а темп с оттенком (то есть с какой частью радуги) (H). Вы можете использовать синусоидальные волны для их модуляции и создания различных паттернов.

Отсюда вы можете почерпнуть некоторые идеи - эти шаблоны выглядят сложными, но они представляют собой простые шаблоны синусоидальной волны, модулированные с интенсивностью и частотой музыки: https://www.instagram.com/stvito_performance_group/

person disconnectionist    schedule 15.08.2017

  1. Прокрутите все изображение вправо или влево при поступлении нового образца данных.
  2. Мигают светодиодами в темпе, о котором сообщает Traktor.

Можете ли вы получить MIDI-отчет об уровне постфильтрации? Думаю, вы можете использовать разные полосы частот для разных основных цветов.

person Matt K    schedule 14.12.2011