วันอังคารที่ 24 มีนาคม พ.ศ. 2558

Arduino note 20/3/15 : MIDI

Arduino note : MIDI 

                  MIDI หรือ Musical Instrument Digital Interface คือมาตรฐานการเชื่อมต่อของเครื่องดนตรีด้วยDigital System เช่นการเชื่อมต่อของ เครื่องดนตรี-เครื่องดนตรี ,เครื่องดนตรี-คอมมพิวเตอร์ เป็นต้น
ส่วนใหญ่เป็นข้อมูลคำสั่งที่เป็นเสียงแทนของเครื่องดนตรีชนิดต่างๆ(noteเพลงในรูปของตัวเลขหรือคำสั่ง)
                  MIDI นั้นมีความต่างจากDigital Audioตรงที่ลักษณะและขนาดของข้อมูล ซึ่งMIDIมีลักษณะข้อมูลเป็นคำสั่งดังนั้นเมื่อเทียบกับไฟล์Digital Audio แล้วขนาดของMIDIจึงเล็กมากเทียบแล้วกว่า 100เท่าตัว 
     

MIDI Message  

         เป็นข้อมูลคำสั่งที่ใช้ในการส่งแต่ละครั้ง ซึ่งจะ 1 Message จะส่งข้อมูลทั้งหมด 3 Bytes ซึ่งหากใช้การส่งด้วย micro controller Arduino จะมีการส่งข้อมูลได้ทีละ10 Bits และแยก10 Bits ได้อีกเป็น3ส่วนคือ Start bit , Stop bit  และ Data อีก8 bits 

ตัวอย่างMIDI Message 


                  จากตารางสังเกตุช่อง 1st Byte: 1001คือคำสั่งให้เล่นโน้ต nnnnบอกch.ที่เล่น เราเรียกพวกนี้                                                                        ว่าStatus Byte ส่วนnnnn คือตัวเลขที่กำหนด Chanel นั้นๆ
                                                    2nd Byte : 0คือตัวบ่งบอกว่าเป็นDataส่วนkkkkkkkคือตัวเลขที่เอาไว้                                                                           กำหนดระดับความถี่ของเสียงหรือก็คือเสียงโน้ตที่จะเล่น                                                                           ออกมาเป็นkeyไหนๆ สามารถเปลี่ยนได้ทั้งหมด128โน้ต
                                                    3rd Byte :  0คือตัวบ่งบอกว่าเป็นData และ vvvvvvv คือส่วนที่ไว้                                                                                 กำหนดค่าความดังของเสียงที่ออกมานั่นเอง สามารถปรับ                                                                         ได้128 level เช่นกัน

                ซึ่งนอกจากMessageเบื้องต้นเหล่านี้แล้วยังมีคำสั่งอีกมากมาย เช่นการเปลี่ยนชนิดเครื่องดนตรี หรือที่เรียกว่า Program Change Message ก็จะมีลักษณะของรูปแบบไม่เหมือนกัน

จากตารางสังเกตุช่อง 1st Byte: 1100คือคำสั่งให้เปลี่ยนเครื่องดนตรี(program change)  nnnnคือchanelที่                                                    ให้เปลี่ยนเสียง
                                   2nd Byte: 0คือตัวบอกว่าเป็นข้อมูลส่วน ppppppp คือnumberของเครื่องดนตรี                                                           แต่ละชนิดที่ใช้เปลี่ยนได้ มีทั้งหมด128ชนิดที่ให้เปลี่ยนได้ (สามารถ                                                         ดูnumber #PCได้ตามนี้  number #PC  )
                                    3rd Byte :ไม่มีคำสั่งใดๆ เนื่องจากการเปลี่ยนชนิดเครื่องดนตรี (program change                                                       ใช้แค่ 2 Byte เท่านั้น 

คำสั่งในการควบคุม MIDI เพิ่มเติมผ่านMIDI Message ตามLinkนี้ : MIDI Message table

MIDI Cable 

                   คือ สายที่ใช้เชื่อมต่อเพื่อรับ-ส่ง MIDI Message โดยแบบที่เห็นทั่วไปจะแยกได้5สาย ดังรูปหัวjackของMIDI ดังต่อไปนี้


MIDI controller by Arduino 

                      ในการควบคุม MIDI เราสามารถส่งค่าผ่านSerialได้เลย โดยการสั่งให้เล่นnoteๅตัวจะคำสั่งเป้นข้อมูลไปทีละ10 bits ทั้งหมด 3 ครั้ง รวม 3 Bytes 
                      การส่งMIDI Message เราจะส่งเรียงกันไปโดย ส่งส่วนของStatus Byteก่อน จากนั้นส่งส่วนของ1st Data Byte และ2nd Data Byte
Example : byArduino midi.cc





ไม่มีความคิดเห็น:

แสดงความคิดเห็น