Наша предыдущая прошивка Remora была предназначена для получения коротких команд от ORCλ и создать очень простые анимации неопикселей на адресами светодиодов (как WS2812B)
Планируйте промежуточное программное обеспечение Nodejs
Первая реализация, которая не нуждается в какой -либо мидийской шляпе для преобразования сигнала в MIDI, использует промежуточное программное обеспечение Nodejs . Чтобы начать, просто перейти к каталогу:
cd middleware/midi-to-udp
nodejs midi.js
Там вы увидите, какие порты у вас есть в качестве входящего MIDI. Вам нужен источник ввода MIDI или что -то, что вы отправляете с самого компьютера. В моем случае я использую комбинацию робовой и розовой версии (своего рода брусная прогулка для Linux). Как только вы увидите перечисленный порт, просто добавьте IP -адрес -P (порт) и -U (UDP). Порт UDP зафиксирован на 49161 как в промежуточном программном обеспечении, так и на прошивке ESP32. В качестве примера:
$ nodejs midi.js -p 3 -u 192.168.12.109
Listening to: rosegarden:out 1 - General MIDI Device 130:3 and forwarding to 192.168.12.109:49161
Это перенаправляет MIDI -заметки на UDP. И ESP32 получит эти короткие сообщения UDP и рисует вещи в вашей светодиодной матрице.
План B MIDI -серийная версия
Требуется модуль MIDI-Aduino Sparkfun, чтобы включить MIDI Thru и сделать сигнал в последовательное преобразование. Проводка в ESP32, используя Serial2, чтобы оставить первую для отладки, довольно прямолинейна:
ESP32 | Hat Midi 5V 5V GND GND RX 26 TX 27
Это должно быть на самом деле реальной вещью, быстрее и с меньшим количеством латентности, если вы хотите быть независимым от Wi -Fi.

Чтобы объединить как разные дубля прошивки, так и в будущем сделать общий класс, который будет прослушивать те же команды, мы изобрели очень короткое внутреннее сообщение, которое использует 6 символов. Мы используем шестигранный
2 chars (HEXA) representing Note played
1 boolean representing Status (1 note on, 0 note off)
2 chars (HEXA) representing Velocity
NNSVV Примечание, статус, скорость
В версии UDP-MIDI-Matrix сценарий промежуточного программного обеспечения должен работать в фоновом режиме, чтобы преобразовать MIDI-сигналы в короткие сообщения UDP.
В версии Midi-In-Matrix MIDI преобразуется в UART с использованием Sparkfun Midi Hat и получен непосредственно в твердом жереале (Serial2) в ESP32. Таким образом, эта версия не зависит от Wi -Fi и должна иметь меньшую задержку. Но есть недостаток, который вам нужно использовать MIDI в кабелях.
Пример: играть в Octave 3, которая составляет 36 в десятичной десятичной жизни, скорость 60, примечание на сообщении будет:
2413B
When the same note is released it could be:
24000
Обратите внимание, что некоторые синтезаторы также отправляют скорость выпуска, поэтому последние 2 chars hexa не всегда 0. Фильтрация канала будет реализована в будущем. Позвольте вам выбирать между всеми каналами или 2 каналами, настраиваемыми с использованием константы Platformio.ini:
-D MIDI_LISTEN_CHANNEL1=0
-D MIDI_LISTEN_CHANNEL2=0
На 0 это позволит всем. Если вы используете 1 и 2 для каждой константы, то это будет слушать только эти каналы. Фильтрация канала будет доступна только в серийной версии, так как я до сих пор не обнаружил, где она поступает в библиотеке Nodejs MIDI. Не стесняйтесь исследовать Readme на промежуточном программном обеспечении/MIDI-UDP
Язык должен быть простым, а также коротким, чтобы он мог быстро летать через UDP. Первый план выглядит так:
Chord HEXA | note on/off (1 char) | velocity HEXA
48140 C on 40
48030 C off
Пожалуйста, обязательно отредактируйте Platformio.ini и расстроен только одну из папок SRC_DIR , чтобы выбрать, какой пример запустить. Например, если вы хотите запустить прошивку UDP в MIDI, просто расстроен эту линию:
#Uncomment only one of the folders to select what example to run:
#src_dir = firmware/adafruit-matrix-test
src_dir = firmware/udp-midi-matrix
Затем компилирование просто выберет этот каталог и протягивает его в ваш ESP32.
Требования находятся в файле Platformio.ini . Проверьте это и адаптируйте к своей доске и потребностям. Это работает очень быстро, благодаря работе «Удивительной вилки Марка Мерлина для Fastled_neomatrix», и это то, что отправляет данные в ваш адресной контакт данных о светодиодах.