เรื่องราว
แรงบันดาลใจในการสร้าง MIDI Controller นี้เกิดขึ้นหลังจากที่ผมได้เห็นศักยภาพของ Softpots (เซ็นเซอร์ตำแหน่งแบบสัมผัส) เมื่อนำมาใช้ร่วมกับ Arduino และเครื่องดนตรีประเภทต่างๆ ผมพบการประยุกต์ใช้ที่น่าสนใจมากมาย แต่สิ่งที่ขาดหายไปในตลาดคือเครื่องดนตรีที่ไม่ใช่แค่การเลียนแบบกีตาร์ หรือเป็นเพียงแค่แผ่นควบคุม Pitch ที่เพิ่มเข้ามาสำหรับคีย์บอร์ดที่มีอยู่แล้ว
ดังนั้น ผมจึงตัดสินใจสร้างเครื่องดนตรีที่ช่วยให้นักดนตรีสามารถเล่นเสียงสองแบบที่แตกต่างกันบน MIDI channels ที่แยกกันด้วยสองมือ (คล้ายกับการเล่น Synthesizer แบบสองชั้น) แต่มีการควบคุมแบบใหม่สำหรับมือข้างหนึ่ง เป้าหมายหลักไม่ใช่การจำลองกีตาร์ แต่เป็นการนำเสนอการควบคุมมิติใหม่สำหรับ Virtual Synths หรือ Hardware Synths ในรูปแบบที่แตกต่างแต่คุ้นเคยสำหรับนักดนตรี
เพื่อให้แน่ใจว่าเครื่องดนตรีนี้ตอบสนองทั้งความต้องการด้านฟังก์ชันและการยศาสตร์ ผมจึงเลือกรูปทรงกีตาร์เพราะสามารถถือและเล่นได้ทั้งในท่ายืนและท่านั่ง โดยเฉพาะอย่างยิ่ง มุมการเล่นที่สูงช่วยให้มือขวาเล่นคีย์บอร์ดได้อย่างเป็นธรรมชาติที่สุด โครงสร้างนี้ใช้เวลาเกือบหนึ่งปีในการพัฒนาช่วงเวลาว่าง เพื่อให้กลายเป็น ARKeytar ซึ่งเป็นการรวมคำระหว่าง Arduino และ Keytar

วงจร Arduino และตรรกะโค้ด
หัวใจของ ARKeytar คือ Arduino Nano ซึ่งทำหน้าที่เป็นหน่วยประมวลผลกลาง มันรับค่าจากเซ็นเซอร์ สร้าง MIDI messages (Note On/Off และ Pitch Bend) ตามตำแหน่งและลักษณะการสัมผัสบน Softpots และยังรับข้อมูล MIDI จากคีย์บอร์ดเดิมด้วย จากนั้นจะส่งสัญญาณทั้งหมดออกไปยัง MIDI Out port เพื่อควบคุม external Synths
ในการออกแบบนี้ ผมเลือกที่จะไม่ปรับเปลี่ยนวงจรของคีย์บอร์ดเดิมเลย แต่เชื่อมต่อ MIDI Out ของคีย์บอร์ดเข้ากับวงจร MIDI In ที่เชื่อมต่อกับ Serial RX port ของ Arduino เพื่อการประมวลผลร่วมกัน

การวิเคราะห์ตรรกะ
ในฟังก์ชัน loop() โปรแกรมจะอ่านค่า Analog จาก Softpots สองตัวอย่างต่อเนื่อง:
- Touch Detection: เมื่อ Softpot ถูกกด ระบบจะส่งข้อความ Note On โดยใช้ฟังก์ชัน
map()เพื่อแปลงค่าแรงดัน (Analog Value 0-1023) ให้เป็นหมายเลข MIDI note ตามช่วงที่กำหนดไว้ล่วงหน้าบนคอเครื่องดนตรี - Pitch Bend and Expression: ตราบใดที่มีแรงกดที่ต่อเนื่องและการเคลื่อนไหวนิ้ว ระบบจะส่งข้อความ Pitch Bend เพื่อควบคุม Pitch อย่างต่อเนื่อง ผู้เล่นสามารถเลือกช่วง Pitch Bend ระหว่าง ±12 หรือ ±24 ผ่านสวิตช์ควบคุม
- Pitch Snap Function: ความท้าทายหนึ่งในการใช้ Softpots คือการหยุดนิ้วบน Pitch ของโน้ตได้อย่างแม่นยำ ดังนั้น ผมจึงพัฒนาอัลกอริทึม Pitch Snap ซึ่งจะ "ปรับ" Pitch ไปยังโน้ตที่ใกล้ที่สุด หากนิ้วอยู่ในช่วงความคลาดเคลื่อนที่กำหนด ผู้เล่นสามารถปรับความไวในการปรับค่า (snap sensitivity) ได้ตั้งแต่ 0 (ลื่นไหล 100% ตามนิ้ว) ถึง 1 (เปลี่ยน Pitch เป็นขั้นๆ เช่น semitones)
- เพื่อลดภาระการคำนวณของ Arduino Nano ผมได้สร้าง Lookup Tables ที่คำนวณไว้ล่วงหน้าสำหรับค่า Pitch ที่แม่นยำสำหรับช่วง ±12 และ ±24 โดยใช้ Python script เพื่อคำนวณค่าเหล่านี้
สำหรับการสื่อสารข้อมูล เนื่องจาก Serial Port ถูกใช้งานร่วมกัน loop จะตรวจสอบ Serial Buffer อย่างต่อเนื่องสำหรับข้อความขาเข้าจากคีย์บอร์ด หากมีข้อความอยู่ Arduino จะ "พิมพ์" หรือส่งต่อข้อความเหล่านั้นไปยัง Serial TX port ทันที เพื่อให้มั่นใจว่าไม่มี MIDI messages ใดๆ ตกหล่นหรือสูญหาย (Data Integrity)

นอกจากนี้ ผมยังใช้ 74HC165 Shift Registers สองตัวเพื่ออ่านค่าจาก Dip Switches หลายตัวพร้อมกัน โดยใช้ Arduino ports เพียงไม่กี่พอร์ต สวิตช์เหล่านี้ตั้งค่า MIDI Channel สำหรับ Softpots และกำหนดเป้าหมาย Control Change (CC) สำหรับ Potentiometers สองตัวที่อยู่บนตัวเครื่องดนตรี
ตัวเครื่องและคอไม้ Maple
โครงสร้างหลักของ ARKeytar ทำจากไม้ Maple ทั้งส่วน Body และ Neck ซึ่งให้ความแข็งแรงและรูปลักษณ์ที่เป็นมืออาชีพ สวยงาม
ผมเริ่มต้นด้วยแผ่นไม้ Maple หนาหนัก 6.5 กก. และค่อยๆ ขึ้นรูปให้เข้ากับหลักสรีรศาสตร์และการจัดวางชิ้นส่วนอิเล็กทรอนิกส์ โดยเฉพาะอย่างยิ่งการซ่อนวงจรหลักไว้ใต้ชุดประกอบคีย์บอร์ดเพื่อประหยัดพื้นที่

กระบวนการกัดและขัดถูกดำเนินการอย่างระมัดระวังเพื่อสร้างช่องว่างภายในสำหรับแบตเตอรี่ (Powerbank) และแผ่น Polycarbonate ซึ่งทำหน้าที่เป็นฐานสำหรับวงจรทั้งหมด



สำหรับการประกอบวงจร ผมเลือกที่จะติดตั้งวงจรหลักและคีย์บอร์ดลงบนแผ่น Polycarbonate ใส ก่อนที่จะนำไปใส่ในตัวไม้ สิ่งนี้ช่วยอำนวยความสะดวกในการบำรุงรักษาในอนาคต หากจำเป็นต้องมีการปรับเปลี่ยนวงจร แผงทั้งหมดสามารถถอดออกได้โดยไม่ต้องถอดชิ้นส่วนโครงสร้างไม้


คอของ ARKeytar มีความพิเศษตรงที่สามารถถอดออกจากตัวเครื่องได้ โดยใช้ 9-pin (DB9) connector ที่นำมาจากคอมพิวเตอร์เก่า การบัดกรีขาของ Softpots ต้องใช้ความระมัดระวังอย่างยิ่ง เนื่องจากความร้อนที่มากเกินไปอาจทำให้ชั้นคาร์บอนภายในของเซ็นเซอร์เสียหายได้ ดังนั้น ผมจึงเลือกใช้เทคนิคการบัดกรีที่เร็วและแม่นยำที่สุด

ตัวเครื่องดนตรีถูกตกแต่งด้วยฝาครอบไม้ Maple ที่ตัดอย่างแม่นยำ สร้างด้วย fretsaw และเจาะรูสำหรับปุ่มฟังก์ชันเดิมของคีย์บอร์ด รวมถึงช่องสำหรับสวิตช์เปิดปิดหลัก



หลังจากการประกอบขั้นสุดท้ายและการขัดละเอียด ผมได้เคลือบตัวเครื่องด้วย Colored Oil เพื่อเพิ่มความสวยงามของลายไม้ และใช้ Transparent Oil สำหรับคอ น้ำหนักรวมของเครื่องดนตรีอยู่ที่ประมาณ 4.5 กก. คล้ายกับกีตาร์ไฟฟ้าทั่วไป ทำให้รู้สึกสบายสำหรับการเล่นเป็นเวลานาน

ผลลัพธ์และประสิทธิภาพ


ARKeytar เป็น MIDI Controller ที่สมบูรณ์แบบ มันไม่มีแหล่งกำเนิดเสียงภายใน แต่ทำหน้าที่เป็น "สะพาน" เชื่อมจินตนาการของผู้เล่นเข้ากับโลกของ VSTs หรือ Physical Synths ในวิดีโอสาธิต ผมได้เล่นเพลง Octavarium ของ Dream Theater ซึ่งเป็นเพลงที่ Jordan Rudess เคยเล่นบนเครื่องดนตรีที่เรียกว่า Continuum
การเล่นสไตล์ Continuum ซึ่งต้องใช้การเลื่อนโน้ตอย่างลื่นไหลนั้น เหมาะสมอย่างยิ่งสำหรับ ARKeytar ผมใช้คีย์บอร์ดเพื่อเล่นเสียง String จาก Motif XS7 และใช้ Softpots บนคอเพื่อควบคุม Vital VST สร้างเสียง Lead ที่ทรงพลังพร้อมการควบคุม Pitch ที่ละเอียดอ่อน