ชื่อโปรเจกต์: Small MIDI decoder on the Arduino UNO for Hauptwerk
พี่จัดให้! ตัวถอดรหัส MIDI (MIDI decoder) เล็กๆ โดยใช้ [Arduino](https://s.shopee.co.th/7fUgFAWSki) UNO เอาไว้คอยรับสัญญาณเวลาเราเปิดหรือปิดสวิตช์เสียง (Stops) ในโปรแกรม GrandOrgue หรือ Hauptwerk เจ้า Arduino ตัวนี้จะคอยดักฟังข้อความที่ส่งมาจาก MidiON และ MidiOFF ไม่ว่าจะช่องไหนก็ตาม แล้วจะสั่งเปิด-ปิดไฟ LED ที่ต่ออยู่กับ Pins 2 ถึง 13 และ A0 ถึง A5 ให้หล่อเท่ตามจังหวะ เพื่อให้มันต่อกับคอมฯ ได้ง่ายแบบไม่ต้องคิดเยอะ พี่เลยจัดการแฟลช Firmware ของตัวประมวลผล ATmega16u2 (ตัวที่คุมการสื่อสาร USB นั่นแหละ) . พอลงซอฟต์แวร์ใหม่เสร็จปุ๊บ บอร์ดเราก็จะกลายเป็น MIDI interface เต็มตัว ทีนี้จะคุยกับคอมที่รัน GrandOrgue (หรือ Hauptwerk) ก็แค่ใช้สาย USB ของ Arduino UNO เส้นเดียวจบเลยน้อง ส่วนในโปรแกรม GrandOrgue พี่ตั้งค่าให้มันส่งข้อความโน้ตตั้งแต่ C0 (60) ถึง B0 (71) สำหรับ Digital-pin 2 ถึง 13 และโน้ตที่สูงกว่านั้น (88) สำหรับ pin A0 ถึง A5 ตัวถอดรหัสตัวนี้รับงานได้ 18 ช่อง (Stops) แบบชิลๆ แต่ถ้าอยากเล่นท่ายาก จะเพิ่ม Shift Register เข้าไปแล้วแก้ Arduino Script อีกนิดหน่อย ก็คุมได้เป็นกองทัพแล้ววัยรุ่น!
ลองเทสครั้งแรกดู ทรงก็จะประมาณนี้แหละ:
วิธีตั้งค่าสำหรับ Grand Orgue:
1. คลิกขวาตรงแถวๆ สวิตช์เสียง (Register) เช่น Bourdon
2. จากนั้นเลือกไปที่แถบ send

3. ตั้งค่าทุกอย่างตามรูปข้างบนนั่นแหละ แล้วกด OK ซะ!
4. ที่เหลือจะไปตั้งค่า Registry อื่นๆ หรือคีย์ลัดอะไรก็จัดไปตามสะดวกเลยน้อง




ข้อมูลเทคนิคแบบเจาะลึก (เดี๋ยวจะหาว่าพี่ไม่สอน)
ระบบส่งต่อข้อมูลสำหรับ Digital Pipe Organs
โปรเจกต์นี้ทำหน้าที่เป็น Interface ความเร็วสูงสำหรับ Hauptwerk ซึ่งเป็นซอฟต์แวร์จำลอง Pipe Organ ระดับโลก ช่วยให้ Hardware ออร์แกนรุ่นเก๋าคุยกับ PC สมัยใหม่ได้รู้เรื่อง
- MIDI Note Decoding: Arduino จะคอยดักฟังคำสั่ง MIDI (Note On/Off) ที่ส่งมาจากคอมฯ ผ่าน Hairless MIDI-Serial bridge แล้วเอา Byte พวกนั้นมาแปลเป็นสัญญาณ Digital เพื่อไปสั่งงานพวก Solenoids หรือสวิตช์ไฟ
- Matrix Output Hub: ถ้าต้องคุมปุ่มเยอะๆ Arduino จะใช้ 74HC595 shift registers มาต่อพ่วงกัน ทำให้คุม Output ได้ถึง 64 ช่อง โดยใช้สายไฟเพียงไม่กี่เส้น ประหยัด Pin ไปได้เยอะ!
ประสิทธิภาพความหน่วงต่ำ (Low-Latency)
- Asynchronous Data Handling: Firmware ตัวนี้ใช้ระบบ Buffer แบบ "Non-blocking" เพื่อให้มั่นใจว่าต่อให้เพลงจะโหดแค่ไหน โน้ตจะรัวมาเป็นตับ การตอบสนองของออร์แกนก็จะยังไวปรี๊ดทันใจ ไม่กะตุกให้เสียอารมณ์แน่นอน!