以前のファームウェアRemoraは、ORCλから短いコマンドを受け取り、アドレス指定可能なLEDストライプで非常にシンプルなネオピクセルのアニメーションを作成することを目的としていました(WS2812Bのように)
nodejsミドルウェアを計画します
信号をMIDIに変換するためにMIDIハットを必要としない最初の実装は、 NodeJSミドルウェアを使用します。開始するには、ディレクトリに移動します。
cd middleware/midi-to-udp
nodejs midi.js
そこでは、あなたが受信するMIDIとして持っているポートを見るでしょう。楽器またはコンピューター自体から送信するもののいずれかのMIDI入力ソースが必要です。私の場合、私はtim病とローズガーデン(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 | HAT MIDI 5V 5V GND GND RX 26 TX 27
これは、wifiに独立したい場合は、実際には、より速く、潜在性が低い本物でなければなりません。

ファームウェアの両方のテイクを統合するために、そして将来、同じコマンドを聞く共通のクラスを作成するために、6文字を使用する非常に短い内部メッセージを発明しました。ヘキサデシマルを使用して、常に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 Hatを使用してUARTに変換され、ESP32のHardwareserial Port(Serial2)で直接受信されます。したがって、このバージョンはWiFi独立者であり、遅延が少ないはずです。しかし、ケーブルでMIDIを使用する必要があるという欠点があります。
例:小数点の36であるオクターブ3での再生、速度60、メッセージに関するメモは次のとおりです。
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-UUDPでREADMEをお気軽に調べてください
言語は、UDPを介して速く飛ぶことができるように、シンプルで短く保つ必要があります。最初の計画反復は次のようになります:
Chord HEXA | note on/off (1 char) | velocity HEXA
48140 C on 40
48030 C off
Platformio.iniおよびconcommentを編集して、 SRC_DIRフォルダーの1つのみを編集して、実行する例を選択してください。たとえば、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's Forkの作業に非常に速く機能します。これは、アドレス可能なLEDデータピンにデータを送信するものです。