Создание музыкального визуализатора из светодиодов RGB - PullRequest
0 голосов
/ 13 декабря 2011

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

Моя настройка:

  • 10 светодиодных полос RGB (до 30 каналов), управляемых ШИМ (48 шагов), подключенных к ПК через USB.
    • Светодиодные полосы физически расположены в 4 группах
  • Аппаратное обеспечение контролируется Node.js.
  • Музыка воспроизводится из Трактора на другом компьютере.
    • Traktor предоставляет MIDI-данные с основным темпом и уровнем.
    • У меня есть данные MIDI, перенаправленные на сервер Node по UDP.

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

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

... и выполняет оптимизацию данных, передаваемых по шине USB.

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

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

Данные MIDI выводятся в масштабе 0.127. В этом случае значение темпа 42 соответствует ударов в минуту 128.

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

  • Самое главное, Как лучше всего использовать эти данные для управления светодиодами?
    • В идеале, входные данные должны влиять на анимацию / переход между цветами; однако, при сильных ударах резкое изменение / стробоскоп тоже могут быть хорошими.
  • Есть ли какие-либо другие MIDI-данные из Traktor, которые я должен отправить в Node?
  • Как я могу удерживать каждую из 4 физических групп в одинаковом цвете?

Полезные ссылки:

Ответы [ 2 ]

2 голосов
/ 15 августа 2017

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

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

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

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

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

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

...