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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น