คู่มือผู้ใช้
ไวยากรณ์ MIDI
OnSong ใช้ไวยากรณ์ที่ใช้ข้อความเพื่อแสดง MIDI commands ในขณะที่คุณสามารถใช้ MIDI Events ใน Metadata Editor คุณสามารถแสดง MIDI commands ผ่านข้อความได้เช่นกัน
ค่าที่มีตัวคั่น
ประการแรกและสำคัญที่สุด MIDI commands หลายคำสั่งสามารถแยกโดยอักขระต่างๆ ได้แก่ อักขระแท็บ ลูกน้ำ เซมิโคลอน ไปป์แนวตั้ง หรือบรรทัดใหม่ ลูกน้ำเป็นตัวคั่นที่พบเห็นได้ทั่วไปที่สุด ตัวอย่างเช่น:
1.2:0@0, PC1.2:3@0, N67@1, START, SS8
ช่องสัญญาณ
แต่ละรายการอาจมีสัญลักษณ์ @ ค่าตัวเลขหลังสัญลักษณ์คือช่องสัญญาณที่จะส่งคำสั่งไป เนื่องจากช่องสัญญาณใน MIDI เริ่มจากศูนย์ ช่องสัญญาณแรกจะเป็นศูนย์ (0) ช่องสัญญาณที่สองเป็นหนึ่ง (1) เป็นต้น
หากไม่มีการใช้สัญลักษณ์ @ คำสั่งจะถูกส่งหรือรับบนช่องสัญญาณทั้งหมด
คำนำหน้า
แต่ละรายการในรายการมีคำนำหน้า คำนำหน้านี้จะกำหนดประเภทของ MIDI command ที่จะส่ง ซึ่งรวมถึง:
- PC หรือ ไม่มีคำนำหน้า คือเหตุการณ์การเปลี่ยนโปรแกรม
- N คือเหตุการณ์โน้ต
- CC คือเหตุการณ์การเปลี่ยนแปลงการควบคุม
- SS คือเหตุการณ์การเลือกเพลง
- START คือคำสั่งเริ่มต้น
- STOP คือคำสั่งหยุด
- CONTINUE คือคำสั่งดำเนินการต่อ
- F0 นำหน้าข้อความ SysEx
ค่า
ค่าของคำสั่งปรากฏขึ้นก่อนสัญลักษณ์ @ หรือที่ส่วนท้ายของรายการหากไม่มี @ ค่านี้คือค่าของการเปลี่ยนโปรแกรม การเปลี่ยนแปลงการควบคุม โน้ต หรือการเลือกเพลงตามคำนำหน้า ในกรณีของรายการ SysEx ค่าเลขฐานสิบหกของ SysEx จะให้ไว้โดยตรงหลังคำนำหน้า F0 ซึ่งใช้เป็นส่วนหัวสำหรับ SysEx commands ทั้งหมด
ค่าย่อย
ในบางกรณี ข้อมูลเพิ่มเติมจะถูกถ่ายทำในคำสั่ง MIDI เป็นค่าย่อย ตัวอย่างเช่น MSB และ LSB เช่นเดียวกับความเร็วของค่าการควบคุมสามารถส่งได้ในลักษณะนี้ สิ่งนี้จะแสดงผ่านการเพิ่มโคลอนในส่วนค่า ค่าย่อยมีบริบทที่แตกต่างกันขึ้นอยู่กับประเภทของ MIDI command ที่ส่ง:
- Program Change มีค่าย่อยที่เรียงตามด้วย MSB/LSB ของการเปลี่ยนโปรแกรม ค่าเหล่านี้ถูกแยกด้วยจุดโดย MSB อยู่ทางซ้ายและ LSB อยู่ทางขวา
- Control Change มีค่าของการควบคุมที่ตั้งไว้โดยใช้สิ่งนี้ ตัวเลขอาจอยู่ระหว่าง 0 และ 127 หากละเว้น ค่า 127 จะถูกสันนิษฐาน
- Note Event มีค่าย่อยที่เกี่ยวข้องกับความเร็วที่โน้ตควรจะเล่น สิ่งนี้สามารถตั้งเป็นค่าตัวเลขระหว่าง 0 และ 127
ตัวอย่าง
เริ่มต้นด้วยการเปลี่ยนโปรแกรมแบบง่าย ในสถานการณ์นี้ เราใช้การเปลี่ยนโปรแกรม 8 ซึ่งยังส่ง MSB 4 และ LSB 2 บนช่องสัญญาณ 1 ตัวอย่างเริ่มต้นด้วยการเปลี่ยนแปลงที่ซับซ้อนที่สุดและลบการเลือกธนาคารและช่องสัญญาณเพื่อให้กว้างขึ้น:
PC3.1:7@0, 3.1:7@0, 3:7@0, 3:7, 7@0, 7
Control changes มีความคล้ายคลึงกัน ยกเว้นว่าด้านซ้ายของไวยากรณ์คือหมายเลข control change และด้านขวาคือค่าเพิ่มเติมที่ไม่บังคับ หากไม่ได้ระบุค่า 127 จะถูกส่งแทน เราจะส่ง Control Change 106 ที่มีค่า 64 บนช่องสัญญาณ 3
CC105:63@2, CC105:63. CC105@2, CC105
ตอนนี้มาดู note events กัน เราต้องการเล่น C4 บนช่องสัญญาณ 8 ที่ 75% velocity เราจะป้อนข้อมูลต่อไปนี้เนื่องจาก OnSong เริ่มนับ MIDI C0 เป็น 0 บนสเกล MIDI note:
N60:95@7, N60@7, N60:95, N60
อีกครั้ง สิ่งสำคัญคือต้องจำไว้ว่าเมื่อค่าถูกลบออกจากไวยากรณ์ MIDI คำสั่ง MIDI จะกลายเป็นกว้างขึ้นและไม่เฉพาะเจาะจงน้อยลง ตัวอย่างเช่น เวอร์ชันสุดท้ายของ note event จะเล่น C4 ที่ 100% velocity บนช่องสัญญาณทั้งหมด