Firmware Remora kami sebelumnya dimaksudkan untuk menerima perintah pendek dari Orcλ dan membuat animasi neopixels yang sangat sederhana pada strip LED yang dapat dialamatkan (WS2812B seperti)
Rencanakan middleware nodejs
Implementasi pertama yang tidak memerlukan topi MIDI untuk mengonversi sinyal ke MIDI menggunakan middleware nodeJS . Untuk memulainya, buka direktori:
cd middleware/midi-to-udp
nodejs midi.js
Di sana Anda akan melihat port apa yang Anda miliki sebagai MIDI yang masuk. Anda memerlukan sumber input MIDI baik instrumen atau sesuatu yang Anda kirim dari komputer itu sendiri. Dalam kasus saya, saya menggunakan kombinasi takut -takut dan rosegarden (jenis cakewalk untuk Linux). Setelah Anda melihat port terdaftar, cukup tambahkan alamat IP -p (port) dan -u (UDP). Port UDP ditetapkan ke 49161 baik di middleware dan juga pada firmware ESP32. Sebagai contoh:
$ 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
Ini akan mengarahkan ulang catatan MIDI ke UDP. Dan ESP32 akan menerima pesan pendek UDP ini dan menggambar hal -hal di matriks LED Anda.
Versi Seri Plan B Midi
Membutuhkan Modul Midi-Arduino Sparkfun untuk memungkinkan MIDI melalui dan melakukan sinyal ke konversi serial. Pengkabelan ke ESP32, menggunakan Serial2 untuk meninggalkan yang pertama untuk debugging, cukup mudah:
ESP32 | Topi midi 5v 5v gnd gnd rx 26 tx 27
Ini sebenarnya harus menjadi hal yang nyata, lebih cepat dan dengan lebih sedikit latensi, jika Anda ingin menjadi independen WiFi.

Untuk menyatukan kedua pengambilan firmware yang berbeda dan di masa depan membuat kelas umum yang akan mendengarkan perintah yang sama, kami menemukan pesan internal yang sangat singkat yang menggunakan 6 karakter. Kami menggunakan hexadecimal untuk membuatnya selalu dalam 2 chars panjang:
2 chars (HEXA) representing Note played
1 boolean representing Status (1 note on, 0 note off)
2 chars (HEXA) representing Velocity
NNSVV Note, Status, Velocity
Dalam versi UDP-Midi-Matrix, skrip middlewar harus midi.js harus berjalan di latar belakang untuk mengubah sinyal MIDI menjadi pesan UDP pendek.
Dalam versi MIDI-in-matrix MIDI dikonversi ke UART menggunakan topi MIDI Sparkfun dan diterima langsung di pelabuhan Hardwareserial (Serial2) di ESP32. Jadi versi ini adalah independen WiFi dan harus memiliki lebih sedikit latensi. Tetapi memiliki sisi kelemahan yang Anda butuhkan untuk menggunakan MIDI dalam kabel.
Contoh: Bermain lakukan di oktaf 3 yaitu 36 dalam desimal, kecepatan 60, catatan pada pesan adalah:
2413B
When the same note is released it could be:
24000
Perhatikan bahwa beberapa synth juga mengirim kecepatan pelepasan sehingga 2 chars hexa terakhir tidak selalu 0. Penyaringan saluran akan diimplementasikan di masa depan. Membiarkan Anda memilih antara semua saluran atau 2 saluran yang dapat dikonfigurasi menggunakan konstanta platformio.ini:
-D MIDI_LISTEN_CHANNEL1=0
-D MIDI_LISTEN_CHANNEL2=0
Pada 0 itu akan memungkinkan semua. Jika Anda menggunakan 1 dan 2 untuk setiap konstan maka itu hanya akan mendengarkan saluran -saluran itu. Penyaringan saluran hanya akan tersedia dalam versi serial karena saya masih belum menemukan di mana ia berada di perpustakaan MIDI NodeJS. Jangan ragu untuk menjelajahi readme di middleware/midi-to-udp
Bahasa harus tetap sederhana dan juga pendek sehingga dapat terbang cepat melalui UDP. Rencana pertama iterasi terlihat seperti ini:
Chord HEXA | note on/off (1 char) | velocity HEXA
48140 C on 40
48030 C off
Harap pastikan untuk mengedit platformio.ini dan uncomment hanya salah satu folder SRC_DIR untuk memilih contoh apa yang akan dijalankan. Misalnya jika Anda ingin menjalankan firmware UDP ke MIDI, hanya membuka komentar ini:
#Uncomment only one of the folders to select what example to run:
#src_dir = firmware/adafruit-matrix-test
src_dir = firmware/udp-midi-matrix
Kemudian kompilasi hanya akan memilih direktori ini dan mem -flash ke ESP32 Anda.
Persyaratan ada dalam file platformio.ini . Lihat dan beradaptasi dengan papan dan kebutuhan Anda. Ini berfungsi sangat cepat terima kasih atas karya garpu Marc Merlin yang menakjubkan untuk fastled_neomatrix itulah yang mengirimkan data ke pin data LED yang dapat dialamatkan Anda.