우리의 이전 펌웨어 ReMora는 Orcλ에서 짧은 명령을 받고 주소 수준 LED 줄무늬 (WS2812B Like)에서 매우 간단한 NeoPixels 애니메이션을 만들기위한 것입니다.
Nodejs 미들웨어를 계획하십시오
신호를 MIDI로 변환하기 위해 MIDI 모자가 필요하지 않은 첫 번째 구현은 NodeJS 미들웨어를 사용합니다. 시작하려면 디렉토리로 이동하십시오.
cd middleware/midi-to-udp
nodejs midi.js
거기에서 당신은 당신이 들어오는 미디로 어떤 포트를 가지고 있는지 볼 수 있습니다. MIDI 입력 소스가 계측기 또는 컴퓨터 자체에서 보내는 무언가가 필요합니다. 제 경우에는 Timity와 Rosegarden (Linux 용 케이크 워크)의 조합을 사용합니다. 나열된 포트가 표시되면 -p (포트) 및 -u (UDP) IP 주소를 추가하십시오. UDP 포트는 미들웨어와 ESP32 펌웨어 모두에서 49161로 고정되어 있습니다. 예를 들어 :
$ 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 짧은 메시지를 받고 LED 행렬에 물건을 그립니다.
계획 B MIDI 직렬 버전
MIDI를 통해 SparkFun MIDI-ARDUINO 모듈이 필요하고 시리얼 변환에 대한 신호를 수행합니다. Serial2를 사용하여 디버깅의 첫 번째 배선을 사용하여 ESP32 로의 배선은 다음과 같습니다.
ESP32 | 모자 MIDI 5V 5V GND GND RX 26 TX 27
Wi -Fi와 독립하고 싶다면 이것은 실제로 더 빠르고 잠이 덜한 것이어야합니다.

펌웨어의 다양한 테이크와 미래에 동일한 명령을들을 수있는 일반적인 클래스를 만들기 위해 6자를 사용하는 매우 짧은 내부 메시지를 발명했습니다. 우리는 16 진수를 사용하여 항상 2 숯 길이로 유지합니다.
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.JS가 백그라운드에서 실행 해야하는 미들웨어 스크립트가 백그라운드에서 실행되어야합니다.
MIDI-in-MATRIX 버전에서 MIDI는 SparkFun MIDI 모자를 사용하여 UART로 변환되어 ESP32의 Hardwareserial Port (Serial2)에서 직접 받았습니다. 따라서이 버전은 Wi -Fi 독립적이며 대기 시간이 적어야합니다. 그러나 케이블에 MIDI를 사용해야하는 단점이 있습니다.
예 : 소수점에서 36 인 Octave 3에서 플레이하는 것은 다음과 같습니다. 메시지에 대한 참고 사항은 다음과 같습니다.
2413B
When the same note is released it could be:
24000
일부 신디사이저는 또한 릴리스 속도를 보냅니다. 마지막 2 chars hexa는 항상 0이 아닙니다. 채널 필터링은 향후에 구현 될 것입니다. Platformio.ini 상수를 사용하여 구성 가능한 모든 채널 또는 2 개의 채널 중에서 선택할 수 있습니다.
-D MIDI_LISTEN_CHANNEL1=0
-D MIDI_LISTEN_CHANNEL2=0
0은 모두를 허용합니다. 각 상수에 대해 1과 2를 사용하면 해당 채널 만 듣습니다. 채널 필터링은 Nodejs MIDI 라이브러리에서 어디에서 나오는지 발견하지 못했기 때문에 일련 버전으로 만 사용할 수 있습니다. 미들웨어/MIDI-to-UDP에서 ReadMe를 자유롭게 탐색하십시오
언어는 단순하고 짧게 유지되므로 UDP를 통해 빠르게 비행 할 수 있습니다. 첫 번째 계획 반복은 다음과 같이 보입니다.
Chord HEXA | note on/off (1 char) | velocity HEXA
48140 C on 40
48030 C off
실행할 예제를 선택하려면 Platformio.ini 및 Uncomment 만 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에 대한 놀라운 Marc Merlin의 포크 작업에 대해 매우 빠른 감사를드립니다. 이는 데이터를 주소 가능한 LED 데이터 핀으로 보냅니다.