MIDI2LED - световой эффект светодиодной ленты, управляемый по MIDI: 6 шагов
MIDI2LED - световой эффект светодиодной ленты, управляемый по MIDI: 6 шагов
Anonim
MIDI2LED - световой эффект светодиодной ленты, управляемый по MIDI
MIDI2LED - световой эффект светодиодной ленты, управляемый по MIDI

Это моя первая инструкция, так что терпите меня.

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

Запасы

  • Ардуино Уно
  • Ардуино protoshield
  • MIDI-разъем
  • 1N4148 диод
  • Оптрон 6Н138
  • резисторы: 2x 220 Ом, 1x 10кОм, 1x 470Ом
  • Светодиодная лента WS2812B (60 светодиодов)
  • некоторые оставшиеся провода
  • термоусадочная трубка
  • подходящий корпус для Arduino (я использую пластиковую распределительную коробку)

Вам также понадобится

  • паяльник и припой
  • MIDI-клавиатура и MIDI-кабель

Шаг 1: Электроника

Электроника
Электроника

Схема довольно проста. Он состоит из стандартного MIDI-входа (слева от Arduino) и подключения к светодиодной ленте (справа от Arduino). Поместите все детали на протощит, там много места. Обычно рекомендуется использовать внешний источник питания для питания светодиодной ленты, но я обнаружил, что, когда вы играете, только несколько светодиодов горят одновременно, поэтому было Нет проблем с использованием Arduino + 5V / GND в качестве выхода питания. (Старайтесь не нажимать все клавиши одновременно и с полной скоростью.;-)) Если вы решите использовать внешний источник питания, просто подключите его к контактам Arduino + 5V и GND. Некоторые рекомендуют вставить между этими двумя линиями конденсатор емкостью 100 мкФ (на схеме не показан).

Припаяйте детали к протощиту и подключите светодиодную ленту, как показано на схеме.

Шаг 2: Подключение светодиодной ленты

Подключение светодиодной ленты
Подключение светодиодной ленты

Важно подключить к цепи правый конец - входной конец - светодиодной ленты. Моя полоса имеет гнездовой разъем в качестве входа и имеет маленькие треугольники, направленные в противоположную сторону от входа. На выходе был штекер (чтобы можно было подключить его к другой полосе, которая нам не нужна), поэтому я отрезал его и припаял к трем кабелям, идущим от Arduino. Используйте термоусадочную трубку, чтобы привязать три кабеля к светодиодной ленте вместе и сделать их менее заметными.

Светодиодная лента, которую я использовал, имеет липкую ленту сзади, поэтому ее можно легко приклеить к задней части MIDI-клавиатуры.

Шаг 3: адаптация проекта к вашей клавиатуре

Адаптация проекта к вашей клавиатуре
Адаптация проекта к вашей клавиатуре
Адаптация проекта к вашей клавиатуре
Адаптация проекта к вашей клавиатуре

Возможно, вам придется адаптировать светодиодную ленту и код Arduino к вашей клавиатуре. У меня 76 клавиш, а длина полоски почти равна ширине клавиатуры. Если у вас, например, 61 ключ, может понадобиться полоска покороче. Светодиодную ленту можно разрезать между любыми двумя светодиодами. Просто убедитесь, что вы отрезаете правильную часть, у нее есть входной конец (с гнездовым соединителем) и выходной конец (с гнездовым соединителем), вам нужно сохранить входной конец. В коде измените #defines для

  • NUMBER_OF_LEDS к количеству светодиодов, оставшихся в вашей полосе после отрезания конца,
  • NUMBER_OF_KEYS к количеству клавиш на клавиатуре и
  • MIN_KEY к номеру высоты тона MIDI самой нижней клавиши. Вы можете найти это в руководстве пользователя клавиатуры; или используйте инструмент, который отображает номер MIDI-ноты, например KMidiMon для Linux или Pocket MIDI для Windows или Mac; или попробуйте разные значения, пока устройство не будет реагировать на все клавиши на клавиатуре.

Шаг 4: Код Arduino

Код Arduino использует библиотеку MIDI (v4.3.1) от Forty Seven Effects и библиотеку Adafruit NeoPixel (v1.3.4) от Adafruit. Установите эти библиотеки с помощью Arduino IDE. Затем скомпилируйте код и загрузите его в Arduino без подключенного экрана (оптопара подключена к контакту RX, что препятствует загрузке). Включите Arduino через USB-кабель (я использую настенную USB-бородавку).

Если вы хотите изменить код по своему вкусу, вот краткий обзор того, как это работает: в каждом цикле считывается вход MIDI. Если было получено событие Note On или Note Off, вызываются функции MyHandleNoteOn или MyHandleNoteOff. Оба они вызывают функцию updateVelocityArray, которая хранит скорость (то есть, насколько сильно вы нажали клавишу) номера клавиши. Если скорость выше, чем было сохранено ранее, цвет соответствующего светодиода устанавливается на «текущий цвет». После обработки MIDI-событий вызывается функция updateLedArray. Это обновляет «текущий цвет» (красный, зеленый и синий значения которого изменяются независимо линейно, пока не будет достигнут нижний или верхний предел, и в этот момент скорость линейного изменения устанавливается на случайное число), медленно снижает скорость нажатия нажатых нот и обновляет значения цвета каждого светодиода, который должен изменить свой цвет (из-за нажатия новой ноты или уменьшения скорости). Функция showLedArray передает цвета в структуру Adafruit_NeoPixel, называемую «пикселями», и заставляет фактические светодиоды отображать цвета в структуре пикселей.

Шаг 5. Возможные улучшения…

Проект никогда не заканчивается. Всегда есть что-то, что можно сделать, чтобы улучшить его:

  • Протощит содержит так мало деталей, что это действительно пустая трата; можно легко добиться того же эффекта с помощью Arduino Nano и печатной платы с 15х7 отверстиями, а также некоторых разъемов для штырей.
  • Некоторые MIDI-сигналы теряются. Если это NoteOn, соответствующий светодиод не загорится; если это NoteOff, он не погаснет (поэтому я ввел снижение скорости, которое гарантирует, что светодиоды не будут гореть бесконечно). Я все еще пытаюсь выяснить причину. Возможно, это проблема времени, и MIDI.read () следует вызывать чаще.
  • Некоторые MIDI-сигналы неверно считываются, т. Е. Загораются неправильные светодиоды. Может быть связано с вышеизложенным. Требуется некоторое расследование.
  • Схема разработана для создания приятного визуального эффекта без особого взаимодействия с пользователем (кроме игры на клавиатуре). Однако я мог бы представить добавление потенциометра, который считывается (используя один из аналоговых входов Arduino), с помощью которого вы можете изменять максимальную скорость, с которой меняются цвета (в настоящее время # определяется как MAX_COLOR_CHANGE_SPEED = 20). Или измерьте среднее время между двумя событиями NoteOn и соответственно измените MAX_COLOR_CHANGE_SPEED - в медленных песнях цвет должен меняться медленнее.

Шаг 6: Готово

Включите Arduino через USB-кабель (я использую настенную USB-бородавку). Подключите MIDI-клавиатуру к MIDI-разъему и начните играть. Посмотри, как я играю легкую музыку (каламбур, какой бы плохой он ни был).

Рекомендуемые: