สารบัญ:

เปียโนผู้เล่น Synesthesia: 4 ขั้นตอน
เปียโนผู้เล่น Synesthesia: 4 ขั้นตอน

วีดีโอ: เปียโนผู้เล่น Synesthesia: 4 ขั้นตอน

วีดีโอ: เปียโนผู้เล่น Synesthesia: 4 ขั้นตอน
วีดีโอ: Right Here Waiting - Richard Marx | EASY Piano Tutorial 2024, กรกฎาคม
Anonim
Image
Image
เปียโนผู้เล่น Synesthesia
เปียโนผู้เล่น Synesthesia
เปียโนผู้เล่น Synesthesia
เปียโนผู้เล่น Synesthesia

ผู้เล่นเปียโนคนนี้เล่นเพลงโดยใช้วงล้อสีและกล้อง! กล้องจะจับภาพ ประมวลผล และตีความว่าเป็นโน้ตดนตรี ตอนนี้มันถูกตั้งโปรแกรมให้เล่นเพลงกล่อมเด็กที่สามารถเปลี่ยนแปลงได้โดยการอัปโหลดภาพร่าง Arduino ใหม่ซึ่งระบุว่าควรเล่นโน้ตใด (ควรแสดงสีใดให้กล้องเห็น)

ออนบอร์ด Linux PC เริ่มบริการเมื่อบูตเครื่องซึ่งถ่ายภาพด้วยกล้อง คำนวณฟังก์ชันของค่า RGB ในภาพ และส่งเสียงออกตามค่าที่ส่งคืนของฟังก์ชัน ก่อนเล่นเสียงจะส่งสัญญาณบอกให้ Arduino หมุนเซอร์โวโดยแสดงสีที่สอดคล้องกับโน้ตถัดไปที่จะเล่น จากนั้นการวนซ้ำเริ่มต้นอีกครั้ง ถ่ายภาพ วงล้อสีหมุน และเล่นเสียงไม่สิ้นสุด

โปรเจ็กต์นี้เป็นวิธีที่สนุกในการรวมเพลง การเขียนโปรแกรมระบบ Linux สมัยใหม่ การเขียนโปรแกรมไมโครคอนโทรลเลอร์ การเขียนภาพ Inkscape การตัดด้วยเลเซอร์ และการนำกล่องกระดาษแข็งขยะกลับมาใช้ใหม่

รหัสและ inkscape SVG ทั้งหมดมีอยู่ใน github ที่:

github.com/melvyniandrag/pyMusic

วัสดุที่ใช้:

  1. ป้ายขาวเปล่า
  2. กล่องกระดาษแข็ง
  3. เว็บแคม
  4. ดินสอสี
  5. Arduino
  6. Beagleboard-xM
  7. สายไฟ
  8. สายเคเบิลอนุกรม
  9. ความรู้พื้นฐานเกี่ยวกับการประมวลผลภาพและดนตรี

ขั้นตอนที่ 1: เรื่องคอมพิวเตอร์

เรื่องคอมพิวเตอร์
เรื่องคอมพิวเตอร์
เรื่องคอมพิวเตอร์
เรื่องคอมพิวเตอร์
เรื่องคอมพิวเตอร์
เรื่องคอมพิวเตอร์

ออนบอร์ด คุณจะต้องมีคอมพิวเตอร์ขนาดเล็กที่รองรับ Linux เช่น Raspberry Pi ฉันใช้ BeagleBoard-xM รุ่นเก่าเพราะฉันบังเอิญวางมันไว้ และฉันมีระบบปฏิบัติการในการ์ด SD แล้ว คุณสามารถใช้อะไรก็ได้ ตราบใดที่สามารถรองรับเว็บแคมได้ สามารถเรียกใช้ OpenCV (ไลบรารีการมองเห็นของคอมพิวเตอร์ที่ใช้ในการถ่ายและประมวลผลภาพของวงล้อสี) และมีแจ็คสัญญาณเสียงออก

ฉันตั้งค่าระบบปฏิบัติการเพื่อเรียกใช้โค้ด python ที่จับภาพเมื่อบูตเครื่องตามบทช่วยสอน systemd เพื่อให้สคริปต์ทำงาน คุณจะต้อง sudo apt-get install python-pyaudio python-opencv เพื่อรับไลบรารีที่ระบุ คุณจะต้อง pip ติดตั้ง numpy pyserial เพื่อรับไลบรารีเหล่านั้น pyaudio ใช้สำหรับเล่นเสียง opencv ใช้สำหรับการถ่ายภาพและประมวลผล numpy ยังใช้สำหรับการประมวลผลภาพและ pyserial จำเป็นสำหรับการสื่อสารกับ Arduino

Arduino ใช้สำหรับหมุนเซอร์โวมอเตอร์ที่ติดตั้งวงล้อสี หากคุณมี Raspberry Pi คุณสามารถใช้หมุด GPIO ที่นั่นและทิ้ง Arduino ไว้ได้ แต่คุณต้องแก้ไขโค้ด Python

ในภาพ คุณสามารถเห็นความกล้าทางเทคโนโลยีของการดำเนินการและตัวอย่างโค้ดบางส่วน

ขั้นตอนที่ 2: เปียโน

เปียโน
เปียโน
เปียโน
เปียโน
เปียโน
เปียโน

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

ฉันวัดคอมพิวเตอร์ อาร์ดิโน และเซอร์โว ฉันจึงรู้ว่าฉันต้องการพื้นที่เท่าใด วาดส่วนต่างๆ ของเปียโนใน Inkscape แล้วตัดออกด้วยเครื่องตัดเลเซอร์ (แก้ไข: ฉันหมดกระดาษแข็งเพื่อให้กล่องใส่คอมพิวเตอร์และ Arduino ดังนั้นฉันจึงไม่ได้ใส่เข้าไป พวกเขาอยู่ด้านนอกของเคส ไม่เป็นไร ได้กล่องอื่นจากที่ไหนสักแห่ง แต่มันก็ไม่ได้ สุดท้ายไม่สำคัญ)

ชิ้นงานถูกประกอบเข้าด้วยกันด้วยอีพ็อกซี่

ขั้นตอนที่ 3: การประกอบ

การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ

นี่คือภาพบางส่วนของเปียโนที่กำลังประกอบและระบายสี เครื่องพิมพ์ไม่มีหมึกพิมพ์ ฉันจึงไม่สามารถพิมพ์สีลงบนฉลากสีขาวได้ตามที่วางแผนไว้ ฉันก็เลยใช้สีเทียนของลูกสาว และฉันก็หามีด xacto มาตัดฉลากให้เหมือนกระดาษแข็งไม่ได้ ฉันเลยใช้มีดสเต็กแล้ววางสิ่งที่ป้องกันไว้บนเคาน์เตอร์ครัว ใช้สิ่งที่คุณได้รับ!

ขั้นตอนที่ 4: ความท้าทายทางเทคนิคและข้อควรพิจารณาในอนาคต

ความท้าทายทางเทคนิคและการพิจารณาในอนาคต
ความท้าทายทางเทคนิคและการพิจารณาในอนาคต
ความท้าทายทางเทคนิคและการพิจารณาในอนาคต
ความท้าทายทางเทคนิคและการพิจารณาในอนาคต

ส่วนที่ท้าทายของโปรเจ็กต์นี้คือการรับค่า RGB ที่เหมาะสมเพื่อให้กล้องอ่านได้ เว็บแคมที่ฉันมีมีไฟ LED ที่สว่างอย่างไม่น่าเชื่อซึ่งฉันไม่รู้ว่าจะปิดใน Linux ได้อย่างไร ฉันคิดว่ามีไดรเวอร์ Windows ที่ให้คุณสลับเปิดและปิดได้ ฉันทดลองติดเทปไฟ LED ด้วยเทปพันสายไฟแล้วเปิดทิ้งไว้ ฉันยังทดสอบซอฟต์แวร์เพื่อความทนทาน โดยไม่เพียงแต่แสดงให้มันเป็นกระดาษสี แต่ยังเขียนเว็บไซต์เล็กๆ ที่แสดงสีด้วย

เสียงที่เกิดจากคอมพิวเตอร์บางครั้งมีเสียงแตกและเสียงแตก และนี่มาจากข้อเท็จจริงที่ว่าฉันมีประสบการณ์น้อยมากในการเขียนโปรแกรมเสียง Linux ไลบรารี pyaudio แยกข้อร้องเรียนทั้งหมดเกี่ยวกับ JACK ที่ไม่ได้ติดตั้งบนพีซี แต่โดยค่าเริ่มต้น JACK ไม่ต้องการให้ทำงานแบบไม่มีส่วนหัว (ไม่มีเดสก์ท็อป gui และจอภาพ) นี่เป็นงานเขียนโปรแกรมที่ฉันคิดว่าเป็นการปรับแต่ง แต่ไม่จำเป็นที่จะแสดงแก่นแท้ของเครื่องเล่นเปียโนที่ฉันมีอยู่ในใจ

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

ขณะนี้ผู้เล่นเปียโนได้รับการตั้งโปรแกรมให้เล่นโน้ต 4 ตัวเท่านั้น เนื่องจากเซอร์โวเคลื่อนที่ได้เพียง 180 องศา เพลงกล่อมเด็กส่วนใหญ่สามารถเล่นได้เพียง 3-4 โน้ต และฉันไม่ต้องการให้วงล้อสีรกกับบริเวณสี อาจทำให้กล้องสับสนได้ ดังนั้นด้วยการผสมผสานระหว่างโชคด้านดนตรีและข้อจำกัดทางเทคนิค โน้ต 4 ตัวก็ใช้ได้ดี

แนะนำ: