كان المقصود من برنامجنا الثابت السابق تلقي أوامر قصيرة من ORCλ وصنع الرسوم المتحركة Neopixels بسيطة للغاية على خطوط LEDs القابلة للعنونة (WS2812B مثل)
خطط لوسائط NodeJS
يستخدم التنفيذ الأول الذي لا يحتاج إلى أي قبعة MIDI لتحويل الإشارة إلى MIDI باستخدام الوسيطة nodejs . لبدء الأمر ، فقط اذهب إلى الدليل:
cd middleware/midi-to-udp
nodejs midi.js
هناك سترى ما هي المنافذ التي لديك مثل MIDI الواردة. تحتاج إلى مصدر إدخال MIDI إما أداة أو أي شيء ترسله من الكمبيوتر نفسه. في حالتي ، أستخدم مزيجًا من الخجل و Rosegarden (نوع من الممر لـ Linux). بمجرد رؤية المنفذ المدرج ، ما عليك سوى إضافة عنوان IP -P (PORT) و -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 هذه ورسم الأشياء في مصفوفة LED الخاصة بك.
Plan B MIDI النسخة التسلسلية
يتطلب وحدة Midi-arduino Sparkfun لتمكين MIDI من خلال القيام بالإشارة إلى التحويل التسلسلي. الأسلاك إلى ESP32 ، باستخدام Serial2 لترك أول واحد لتصحيح الأخطاء ، فهي مستقيمة إلى الأمام:
ESP32 | HAT MIDI 5V 5V GND GND RX 26 TX 27
يجب أن يكون هذا هو الشيء الحقيقي في الواقع ، أسرع وبأقل لاتينس ، إذا كنت تريد أن تكون مستقلًا في WiFi.

من أجل توحيد كل من الأخذ المختلفة في البرامج الثابتة وفي المستقبل ، قم بعمل فئة مشتركة تستمع إلى نفس الأوامر التي اخترعنا رسالة داخلية قصيرة جدًا تستخدم 6 أحرف. نستخدم سداسي عشري للحفاظ عليه دائمًا بطول 2 chars:
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 ، يجب أن يكون البرنامج النصي Middleware Midi.js يعمل في الخلفية من أجل تحويل إشارات MIDI إلى رسائل UDP قصيرة.
في إصدار Midi-in-Matrix ، يتم تحويل MIDI إلى UART باستخدام قبعة MIDI Sparkfun واستلامها مباشرة في ميناء Hardwareserial (Serial2) في ESP32. لذلك هذا الإصدار هو WiFi مستقل وينبغي أن يكون أقل الكمون. ولكن لديه الجانب السلبي الذي تحتاجه لاستخدام MIDI في الكابلات.
مثال: اللعب في Octave 3 الذي يبلغ 36 عامًا في العشرية ، السرعة 60 ، ستكون الملاحظة على الرسالة:
2413B
When the same note is released it could be:
24000
لاحظ أن بعض الموالفة ترسل أيضًا سرعة الإصدار ، لذا فإن آخر chars hexa ليس دائمًا 0. سيتم تنفيذ تصفية القناة في المستقبل. السماح لك بالاختيار بين جميع القنوات أو قناتين قابلة للتكوين باستخدام ثوابت platformio.ini:
-D MIDI_LISTEN_CHANNEL1=0
-D MIDI_LISTEN_CHANNEL2=0
في 0 سوف يسمح الجميع. إذا كنت تستخدم 1 و 2 لكل ثابت ، فسيستمع فقط إلى تلك القنوات. سيكون تصفية القنوات متاحة فقط في الإصدار التسلسلي لأنني ما زلت لم أكتشف المكان الذي يأتي في مكتبة NodeJS MIDI. لا تتردد في استكشاف README على الوسيطة/midi-to-udp
يجب أن تبقى اللغة بسيطة واختصار أيضًا حتى تتمكن من الطيران بسرعة عبر UDP. الخطة الأولى يبدو التكرار هكذا:
Chord HEXA | note on/off (1 char) | velocity HEXA
48140 C on 40
48030 C off
يرجى التأكد من تحرير platformio.ini و unflemment واحد فقط من مجلدات 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 . تحقق من ذلك وتكييفه مع لوحتك واحتياجاتك. يعمل هذا بسرعة فائقة على عمل Amazing Marc Merlin's Fork لـ fastled_neomatrix وهو ما يرسل البيانات إلى دبوس بيانات LEDS القابل للعنونة.