กลับไปหน้ารวมไฟล์
music-mallet-turning-motion-into-music-bfdc9f.md

โปรเจกต์นี้ใช้การเคลื่อนไหวเพื่อสร้างคำสั่ง 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 ซึ่งมีโปรเจกต์ตัวอย่างอื่นๆ อีกหลายตัวที่ใช้การตั้งค่าฮาร์ดแวร์แบบเดียวกันนี้

สเก็ตช์ทำสิ่งต่อไปนี้:

  1. รับเอาต์พุตทิศทางจาก MotionSensor และแปลงเป็น Angle-to-Vertical, Angle-about-vertical, rotation-about-mallet-axis, Angle-to-Vertical-velocity นี่คือเลเยอร์ประมวลผลการเคลื่อนไหวหลัก
  2. นำข้อมูลการเคลื่อนไหวนี้มาหาว่าเป็นการเลือกโน้ต, ปรับโน้ต (ชาร์ป, แฟลต), เล่นโน้ต, เอฟเฟกต์หลังเล่นโน้ต และสุดท้ายการสลับเพดัลซัสเทน นี่คือลอจิกการแมป:
    • ตรวจจับการตี & ความเร็ว (Velocity): มุมเทียบกับแนวตั้งและความเร็วของมัน จะกำหนดว่าโน้ตถูกเล่นหรือไม่ และเล่นแรงแค่ไหน (MIDI velocity)
    • การเลือกความสูงเสียง & การมอดูเลต: การหมุนรอบแกนตั้งจะเลือกโน้ตฐานจากสเกล การหมุนตามความยาวของ Mallet จะปรับให้ชาร์ปหรือแฟลต การแกว่งไปด้านข้างสามารถเบนความสูงเสียงหรือใส่ after-touch ได้
  3. นำการกระทำเหล่านี้มาสร้างเป็นเหตุการณ์ MIDI ที่สอดคล้องกัน โดยใช้ไลบรารี BlueberryPie MIDI over Bluetooth ซึ่งจะจัดการเลเยอร์เอาต์พุตเสียง/HID
  4. ปรับสีและความอิ่มตัวของ LED ตามเหตุการณ์ต่างๆ เพื่อให้ฟีดแบ็กทางสายตา

ควรใช้ MusicMallet ร่วมกับอุปกรณ์ที่สามารถรับเหตุการณ์ MIDI ผ่านบลูทูธได้ เช่น แอป King Of FM Synth จาก Apple App Store แอปนี้เหมาะเป็นพิเศษเพราะรองรับการควบคุม MIDI Velocity ตอนเล่นโน้ตได้ดี มันจำลองการกดคีย์บอร์ดแรงแค่ไหน ซึ่งก็ตรงกับการแกว่งไม้ตีโน้ตแรงแค่ไหนนั่นเอง

แนวทางการพัฒนาต่อ

  • ควบคุมด้วยท่าทาง: เพิ่มท่าทางเฉพาะ (เช่น หมุนวงกลมหรือเขย่า) เพื่อเรียกใช้เอฟเฟกต์ต่างๆ เช่น ไวบราโตหรือซัสเทน
  • การเชื่อมต่อไร้สาย: โปรเจกต์นี้ใช้ Bluetooth MIDI อยู่แล้ว แต่เวอร์ชันหน้าอาจลองใช้โปรโตคอลไร้สายอื่นๆ สำหรับการใช้งานที่ต่างออกไป
  • วงดนตรี Mallet หลายอัน: สร้างชุด Mallet ที่ทำงานประสานกันได้ สำหรับการแสดงดนตรีแบบร่วมมือกัน

โปรเจกต์นี้คือการผสมผสานที่ลงตัวระหว่าง การติดตามการเคลื่อนไหว, ทฤษฎีดนตรี และ การออกแบบอินเทอร์เฟซมนุษย์เชิงสร้างสรรค์ งานนี้มันส์แน่นอน จัดไปวัยรุ่น!

ข้อมูล Frontmatter ดั้งเดิม

title: "Music Mallet - ฟาดไม้ตีให้เป็นเพลง งานง่ายแต่หล่อ!"
description: "โปรเจกต์นี้จัดเต็มด้วยเซนเซอร์ IMU ตรวจจับการเคลื่อนไหวแบบตึงๆ (รวมถึง Motion Fusion ด้วยนะ) รับรู้ทุกรูปแบบการฟาดไม้ จากนั้นก็แปลงเป็นคำสั่ง MIDI ส่งออกเพลงได้แบบเทพๆ วัยรุ่นชอบ!"
author: "SweetMaker"
category: "Audio & Sound"
tags:
  - "Music"
  - "Audio"
  - "Toys"
  - "Wearables"
views: 1061
likes: 0
price: 299
difficulty: "Intermediate"
components:
  - "1x 6 DOF Sensor - MPU6050"
  - "1x Soldering kit"
  - "5x NeoPixel WS2812B"
  - "1x AZDelivery ESP32 D1 Mini"
  - "1x AAA battery"
  - "1x Battery Holder, AAA"
tools: []
apps:
  - "1x King Of FM"
downloadableFiles:
  - "https://github.com/SweetMaker/Core"
  - "https://github.com/SweetMaker/StrawberryString"
  - "https://github.com/SweetMaker/BlueberryPie"
documentationLinks: []
passwordHash: "1ee89206b280f6a1b9d6ebd08b1de393d19151f85ab66b73cb45ef9d6455e5e3"
encryptedPayload: "U2FsdGVkX1/l25ewMPOpIkNoD+UIEyGyUfI3iSxXPFbicAyBZpxlhXJUC5YUb+1VsvB3Fud44YjHd9V7Cc22onk7mxEm2e+fkerLsnPD/so="
seoDescription: "Create music from motion using an IMU motion sensor and motion fusion to generate MIDI commands in this Arduino project."
videoLinks:
  - "https://youtu.be/0uyJjEZcux4?feature=shared"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/music-mallet-turning-motion-into-music-bfdc9f_cover.jpg"
lang: "en"