ชื่อโปรเจกต์: การแปลงออร์แกน Cantor เป็น MIDI-controller สำหรับ VPO (GrandOrgue)

ออร์แกนอนาล็อก Cantor เคยเสียหนักเมื่อนานมาแล้ว และถูกนำมาดัดแปลงเป็น MIDI console เพื่อควบคุมซอฟต์แวร์อย่าง VPO (virtual pipe organ) อย่างไรก็ตาม ในตอนนั้นมีเพียงคีย์บอร์ดมือ (manuals) และคีย์บอร์ดเท้า (pedal keyboard) ที่เชื่อมต่อผ่านอินเทอร์เฟซสองตัวที่สร้างบนชิป ATMEL89S52 โดยเชื่อมต่อกับเอาต์พุต MIDI สองช่องที่แยกกัน คือด้านขวาและด้านซ้ายใต้คีย์บอร์ด มันเป็นโซลูชันที่คุ้มค่า แต่ค่อนข้างยุ่งยากในการเชื่อมต่อคอมพิวเตอร์เข้ากับ GrandOrgue (หรือที่รู้จักกันในชื่อ Hauptwerk)
คุณต้องใช้สายเคเบิลสองเส้นและ MIDI-USB interface สองตัว หรือหนึ่งตัวที่เป็นแบบคู่
นอกจากนี้ แผงวงจรที่มี main registers และ group registers ไม่ได้ถูกเชื่อมต่อเลย เสียงออร์แกนต้องเปลี่ยนบนหน้าจอ monitor คอมพิวเตอร์และ monitor ที่มี GO ต้องถูกวางไว้นอกออร์แกน ซึ่งลดความสะดวกสบายในการเล่นและกินพื้นที่อีกด้วย
ผมตัดสินใจที่จะเชื่อมต่อ registration switches และ group registries และซ่อนคอมพิวเตอร์ไว้ภายในโครงไม้ของออร์แกน หากสามารถเปิดใช้งานเสียงด้วย registers และ GO เริ่มทำงานจาก autostart ได้ หน้าจอ monitor ก็จะเกินความจำเป็นและสามารถเลิกใช้งานได้ ท้ายที่สุด ให้เชื่อมต่อเฉพาะเมื่อเปลี่ยน configuration ของซอฟต์แวร์เท่านั้น
ผมตัดสินใจใช้ Arduino Nano เพื่อเชื่อมต่อ registers ผมเขียนโปรแกรมใน Arduino IDE โดยใช้ library Surface_Controll (https://github.com/tttapa/Control-Surface) เพื่อเชื่อมต่อ switches จำนวน 39 ตัวเข้ากับ pins ที่มีจำกัดของ Arduino Nano ผมจำเป็นต้องสร้าง matrix ที่มี diodes ในกรณีนี้ มันค่อนข้างง่ายที่จะสร้าง matrix โดยจัดเรียงเป็น 4 columns บน 14 rows (panel ของ register switches 3 ชุด บวกกับ switches สำหรับ group registers อีกสิบตัว)
columns ของ matrix ถูกเชื่อมต่อกับ pins 13, A5, 3, 2 และ lines เชื่อมต่อกับ 4, 5, 6, 7, 8, 9, 10, 11, 12, A0, A1, A2, A3, A4 เพื่อให้ pin 13 ทำงานในโหมด matrix คุณต้องถอดบัดกรี LED ที่เป็นมาตรฐานใน Arduino Nano บน pin นี้ออก

TX และ RX pins ของ Arduino เป็นเอาต์พุตและอินพุตของสัญญาณ MIDI ในระดับ TTL ตามลำดับ Arduino จะส่งต่อ MIDI messages ที่ได้รับจาก pin RX ไปยัง TX ผมเชื่อมต่อเอาต์พุต MIDI จากชิป 89S52 ที่รองรับ pedal keyboard เข้ากับ pin RX และ pin TX เชื่อมต่อผ่านตัวต้านทาน 220 Ohm ไปยัง MIDI-In MERGER ตัวแรก MIDI-In MERGER ตัวที่สองถูกเชื่อมต่อกับเอาต์พุต MIDI จากชิป 89S52 ตัวที่สองที่รองรับ manual สองชุด (คีย์บอร์ดมือ) ผมเชื่อมต่อเอาต์พุต MIDI ของ Merger เข้ากับ MIDI-USB interface ที่สร้างขึ้นโดยใช้ Arduino UNO ที่ถูก reprogrammed https://doremifasollasi.wordpress.com/jak-przerobic-arduino-uno-w-interface-midi-usb/
โปรเซสเซอร์ ATMega328p บนบอร์ด Arduino UNO มีปลาย TX ที่ถูกถอดการเชื่อมต่อโดยการงอขึ้น เพื่อไม่ให้เกิดข้อขัดแย้งกับสัญญาณ MIDI จาก MERGERA ที่มีผลต่อ pin 1 (TX) ของ Arduino UNO ผมโปรแกรม ATMega328p นี้ให้เป็น MIDI message decoder มันรับ noteON และ noteOFF messages บน channel 13 และเปิดหรือปิด output LEDs ที่เหมาะสม LED บน pin 13 จะติดเมื่อได้รับ noteON message ที่มีค่า 71 ซึ่งถูกส่งโดยโปรแกรม GrandOrgue หลังจากโหลด samples และไฮไลต์ Noise Motor register LED ที่เรืองแสงซึ่งเชื่อมต่อกับ pin 13 ของ Arduino UNO จะส่งสัญญาณว่าการโหลด samples เสร็จสมบูรณ์แล้ว และ GrandOrgue พร้อมที่จะทำงาน

คอมพิวเตอร์ Lenowo (i3 / 8GB RAM) ที่ใช้ openSuse Linux และซอฟต์แวร์ VPO - GrandOrgue ถูกถอดออกจากเคสโลหะและติดตั้งเป็นส่วนๆ ในตู้ไม้ของออร์แกน Cantor
ผมเชื่อมต่อ audio output ของคอมพิวเตอร์เข้ากับ amplifier เดิมที่มีอยู่ ซึ่งทำงานร่วมกับ speakers 4 ตัวที่ติดตั้งอยู่ในตู้ของออร์แกน




รายละเอียดทางเทคนิคเพิ่มเติม
การดัดแปลง MIDI สำหรับ Pipe Organs
โปรเจกต์นี้ช่วยชุบชีวิตออร์แกน Cantor รุ่นเก่า โดยแปลง keys และ stops แบบกลไกของมันให้เป็นสัญญาณ MIDI สำหรับซอฟต์แวร์ Virtual Pipe Organ (VPO) อย่าง GrandOrgue
- Keyboard Scanning: Arduino ใช้ matrix scanner สำหรับ manuals (คีย์บอร์ด) และ pedals หลายชุดของออร์แกน โดยใช้ shift registers (74HC165) เพื่อจัดการกับ digital inputs หลายร้อยตัวที่จำเป็น
- Precision Timing: firmware ได้รับการปรับแต่งเพื่อลด latency ให้เป็นศูนย์ โดยส่ง MIDI Note-ON/OFF messages ด้วยความเร็วสูงเพื่อให้มั่นใจถึงความรู้สึกเหมือนเครื่องดนตรีจริง
การรวมซอฟต์แวร์
- DAW Connectivity: เชื่อมต่อผ่าน USB (MIDI-class compliant) กับคอมพิวเตอร์ที่ใช้ Linux หรือ Windows
- Stop Control: "Stops" ของออร์แกนยังถูกเข้ารหัสเป็น MIDI CC messages ทำให้ผู้เล่นสามารถดึง physical stops บน console เพื่อเปลี่ยน digital ranks ใน GrandOrgue ซึ่งมอบประสบการณ์ concert hall ที่แท้จริงที่บ้าน