โปรเจกต์นี้ใช้การเคลื่อนไหวเพื่อสร้างคำสั่ง MIDI หลากหลายแบบ ให้เราสามารถเล่นดนตรีได้เลย! มันตรวจจับการหมุนรอบแกนตั้งเพื่อเลือกโน้ตจากสเกล การหมุนตามความยาวของ Music Mallet เพื่อปรับโน้ตให้เป็นชาร์ปหรือแฟลต และมุมของ Music Mallet เทียบกับแกนตั้งเพื่อควบคุมการเล่นโน้ต รวมถึงความแรงที่โน้ตถูกเล่นด้วย จากนั้นยังสามารถเบนความสูงเสียงของโน้ตหรือทำโพลีโฟนิก อาฟเตอร์ทัชได้ โดยการแกว่ง Music Mallet ไปด้านข้าง ส่วนเพดัลซัสเทนก็เปิด-ปิดได้โดยการยก Music Mallet ขึ้นในแนวตั้ง
ไฟ LED บนตัว Mallet จะเปลี่ยนสีเพื่อบอกโน้ตที่เลือกอยู่ และความอิ่มตัวของสีจะเปลี่ยนเมื่อโน้ตถูกเล่น เพื่อเป็นสัญญาณบอกทางสายตา
ด้านเทคนิค: จากท่าทางสู่เสียงเพลง
โปรเจกต์นี้ใช้เซ็นเซอร์ MPU6050 ในการตรวจจับทิศทางและความเร่งของตัว Mallet เซ็นเซอร์ 6 แกนนี้จะวัดความเร่ง 3 แกนและความเร็วเชิงมุม 3 แกนของ Mallet เพื่อติดตามการเคลื่อนไหวได้อย่างแม่นยำ Arduino จะประมวลผลข้อมูลนี้แล้วแมปมันเข้ากับการกระทำทางดนตรีเฉพาะเจาะจง
โครงสร้างฮาร์ดแวร์
ฮาร์ดแวร์มีแค่ 4 ชิ้นส่วนเท่านั้น: บอร์ด D1 Mini, เซ็นเซอร์ตรวจจับการเคลื่อนไหว MPU6050, สตริง LED RGB 5 ดวง และที่ใส่แบตเตอรี่ AAA 2 ก้อน (พร้อมสวิตช์) เอามาบัดกรีต่อกันค่อนข้างง่าย ก็จะได้อุปกรณ์แบบพกพาที่ใช้งานได้จริง พาไปเล่นที่ไหนก็ได้ แนะนำให้ใช้แบตเตอรี่ลิเธียม AAA เพื่อให้ได้แรงดันที่ถูกต้องนะน้อง
ลอจิกซอฟต์แวร์ & การแมปการเคลื่อนไหว
ซอฟต์แวร์สร้างขึ้นจาก SweetMaker Core Library และเป็นหนึ่งในโปรเจกต์ตัวอย่างใน SweetMaker BlueberryPie Library ซึ่งมีโปรเจกต์ตัวอย่างอื่นๆ อีกหลายตัวที่ใช้การตั้งค่าฮาร์ดแวร์แบบเดียวกันนี้
สเก็ตช์ทำสิ่งต่อไปนี้:
- รับเอาต์พุตทิศทางจาก MotionSensor และแปลงเป็น Angle-to-Vertical, Angle-about-vertical, rotation-about-mallet-axis, Angle-to-Vertical-velocity นี่คือเลเยอร์ประมวลผลการเคลื่อนไหวหลัก
- นำข้อมูลการเคลื่อนไหวนี้มาหาว่าเป็นการเลือกโน้ต, ปรับโน้ต (ชาร์ป, แฟลต), เล่นโน้ต, เอฟเฟกต์หลังเล่นโน้ต และสุดท้ายการสลับเพดัลซัสเทน นี่คือลอจิกการแมป:
- ตรวจจับการตี & ความเร็ว (Velocity): มุมเทียบกับแนวตั้งและความเร็วของมัน จะกำหนดว่าโน้ตถูกเล่นหรือไม่ และเล่นแรงแค่ไหน (MIDI velocity)
- การเลือกความสูงเสียง & การมอดูเลต: การหมุนรอบแกนตั้งจะเลือกโน้ตฐานจากสเกล การหมุนตามความยาวของ Mallet จะปรับให้ชาร์ปหรือแฟลต การแกว่งไปด้านข้างสามารถเบนความสูงเสียงหรือใส่ after-touch ได้
- นำการกระทำเหล่านี้มาสร้างเป็นเหตุการณ์ MIDI ที่สอดคล้องกัน โดยใช้ไลบรารี BlueberryPie MIDI over Bluetooth ซึ่งจะจัดการเลเยอร์เอาต์พุตเสียง/HID
- ปรับสีและความอิ่มตัวของ LED ตามเหตุการณ์ต่างๆ เพื่อให้ฟีดแบ็กทางสายตา
ควรใช้ MusicMallet ร่วมกับอุปกรณ์ที่สามารถรับเหตุการณ์ MIDI ผ่านบลูทูธได้ เช่น แอป King Of FM Synth จาก Apple App Store แอปนี้เหมาะเป็นพิเศษเพราะรองรับการควบคุม MIDI Velocity ตอนเล่นโน้ตได้ดี มันจำลองการกดคีย์บอร์ดแรงแค่ไหน ซึ่งก็ตรงกับการแกว่งไม้ตีโน้ตแรงแค่ไหนนั่นเอง
แนวทางการพัฒนาต่อ
- ควบคุมด้วยท่าทาง: เพิ่มท่าทางเฉพาะ (เช่น หมุนวงกลมหรือเขย่า) เพื่อเรียกใช้เอฟเฟกต์ต่างๆ เช่น ไวบราโตหรือซัสเทน
- การเชื่อมต่อไร้สาย: โปรเจกต์นี้ใช้ Bluetooth MIDI อยู่แล้ว แต่เวอร์ชันหน้าอาจลองใช้โปรโตคอลไร้สายอื่นๆ สำหรับการใช้งานที่ต่างออกไป
- วงดนตรี Mallet หลายอัน: สร้างชุด Mallet ที่ทำงานประสานกันได้ สำหรับการแสดงดนตรีแบบร่วมมือกัน
โปรเจกต์นี้คือการผสมผสานที่ลงตัวระหว่าง การติดตามการเคลื่อนไหว, ทฤษฎีดนตรี และ การออกแบบอินเทอร์เฟซมนุษย์เชิงสร้างสรรค์ งานนี้มันส์แน่นอน จัดไปวัยรุ่น!