วันศุกร์ที่ 3 เมษายน พ.ศ. 2558

Arduino note : MIDI Mario song ดุ่ม ดุม ดุ้ม 3/4/15

Arduino note : MIDI Mario song ดุ่ม ดุม ดุ้ม  

                     ได้ลองต่อcoding ลองส่งค่าไปให้MIDI box  ทดสอบคำสั่งnoteOn   noteOff  progchange และ pitchBend  
         ซึ่งตอนแรกให้ลองเปลี่ยนค่าของprogchange และ pitchBend ทีละครั้ง สามารถทำได้ แต่พอลองวางแผนว่าจะให้เช็คค่าและใส่พร้อมกันสองตัวกลับทำไม่ได้ 
เช่น อยากให้ กด pc111 แล้วprogchange เครื่องดนตรีไปตามเลขนั้นๆ หรือ กด pb121123 .แล้วให้เปลี่ยนค่า LSB MSB       ซึ่งค่อนข้างซับซ้อนและลำบากในการเปลี่ยนแต่ละครั้งมาก อีกทั้งข้อมูลของคีย์บอร์ดที่ส่งไปเป็นASCII ทำให้programสับสนค่าที่จะนำมาใช้ในการเช็ค และค่าที่จะส่งออกไปเป้นเสียง ซึ่ีงหมายความว่าหากใช้วิธีเช็คทีละตัวตามนี้จะเกิดเสียงออกมาทุกครั้งที่read และนำค่ามาใช้ หรือค่าที่ออกจากบอร์ดนั่นเอง

                 หลังจากนั้นได้ลองทดสอบนำnoteเพลงมาแปลงเป็นคำสั่งส่งออกไปให้ MIDI  box และลองใช้คำสั่ง noteOn กับ channel อื่นด้วย 


                 plan: 1.เขียนโน้ตเพลงทั้งหมดก่อน 
                          2.แปลงโน้ตทุกๆตัวเป้นเลขตาม table ที่ได้มา
                          3.สร้างfunction noteOn noteOff และ progchange 
                          4.กำหนดค่า baurd rateที่ 31250 ด้วยคำสั่ง Serial.begin(31250);
                          5.สร้างloop forหนึ่งอันโดยให้forเป็นตัวกำหนดห้องหนึ่งห้องของโน้ตดนตรี (1ห้อง 
                          มีทั้งหมด 4 sec )
                          6.นำเลขตัวโน้ตมาใส่ในfunction noteOn และจังหวะหยุดให้ใส่ใน functionของ noteOff
                          7. Complied ใส่board ลองฟังจังหวะ เสียง และแก้ไขเพิ่มเติม
                          8.เมื่อnoteเพลงokแล้วลองเขียนให้รับค่าเข้าจากคอมเพื่อเปลี่ยนเครื่องดนตรี 
                          9.ทดสอบส่งค่าด้วยprogram docklight (Serial monitorของArduinoไม่สามารถเปลี่ยนbaud rate เป้น31250 ได้จึงต้องใช้โปรแกรมอื่นช่วย )
                         10. ทดสอบลองฟังอีกครั้ง หากผิดพลาดให้แก้ไขเพิ่มเติม