ONSONG CHARTS AVAILABLE NOW! LEARN MORE HERE

คู่มือผู้ใช้

ไวยากรณ์ MIDI

OnSong ใช้ไวยากรณ์แบบข้อความสำหรับการแสดง MIDI commands ในขณะที่คุณสามารถใช้ MIDI Events ใน Metadata Editor คุณสามารถแสดง MIDI commands ในข้อความได้เช่นกัน

ค่าที่คั่นด้วยตัวคั่น

ก่อนอื่นและสำคัญที่สุด MIDI commands หลายตัวสามารถคั่นด้วยอักขระต่างๆ ได้ รวมถึง: อักขระแท็บ เครื่องหมายจุลภาค เซมิโคลอน ท่อแนวตั้ง หรือบรรทัดใหม่ เครื่องหมายจุลภาคเป็นตัวคั่นที่พบบ่อยที่สุด ตัวอย่างเช่น:

1.2:0@0, PC1.2:3@0, N67@1, START, SS8

ช่องสัญญาณ

แต่ละรายการอาจมีสัญลักษณ์ @ ค่าตัวเลขหลังสัญลักษณ์คือช่องสัญญาณที่จะส่ง command เนื่องจากช่องสัญญาณใน MIDI เริ่มต้นจากศูนย์ ช่องสัญญาณที่หนึ่งจะเป็นศูนย์ (0) ช่องสัญญาณที่สองเป็นหนึ่ง (1) เป็นต้น

หากไม่มีการใช้สัญลักษณ์ @ command จะถูกส่งหรือรับบนช่องสัญญาณทั้งหมด

คำนำหน้า

แต่ละรายการในรายการประกอบด้วยคำนำหน้า คำนำหน้านี้กำหนดประเภทของ MIDI command ที่จะส่ง ซึ่งรวมถึง:

  • PC หรือ No Prefix คือ program change event
  • N คือ note event
  • CC คือ control change event
  • SS คือ song select event
  • START คือ start command
  • STOP คือ stop command
  • CONTINUE คือ continue command
  • WAIT รอเวลาที่กำหนดก่อนส่ง events เพิ่มเติม
  • F0 นำหน้า SysEx message
  • @ นำหน้า MIDI global tag

ค่า

ค่าของ command ปรากฏขึ้นก่อนสัญลักษณ์ @ หรือที่ส่วนท้ายของรายการหากไม่มี @ ค่านี้คือค่าของ program change control change note หรือ song select ตามคำนำหน้า ในกรณีของ SysEx entries ค่าเลขฐานสิบหก SysEx จะถูกให้ไว้โดยตรงหลัง F0 prefix ซึ่งใช้เป็นส่วนหัวสำหรับ SysEx commands ทั้งหมด

ค่าย่อย

ในบางกรณี ข้อมูลเพิ่มเติมจะถูกส่งใน MIDI command เป็น subvalues ตัวอย่างเช่น MSB และ LSB รวมถึงความเร็วของ control values สามารถส่งได้ด้วยวิธีนี้ ซึ่งแสดงออกมาผ่านการเพิ่มเครื่องหมายโคลอน (:) ในส่วนค่า subvalue มีบริบทต่างกันขึ้นอยู่กับประเภทของ MIDI command ที่ถูกส่ง:

  • Program Change มี subvalues ที่สอดคล้องกับ MSB/LSB ของ program change ค่าเหล่านี้คั่นด้วยจุด (.) โดยมี MSB ทางด้านซ้ายและ LSB ทางด้านขวา
  • Control Change มีค่าของ control ที่ตั้งไว้ สามารถเป็นตัวเลขระหว่าง 0 ถึง 127 หากละเว้นค่า 127 จะถูกสันนิษฐาน คุณยังสามารถแยก multiple values ด้วยเครื่องหมายขีดกลาง (-) เพื่อก้าวผ่านค่า ตัวอย่างเช่น 127-0 จะยึด (latch) ค่า 127 ระหว่างสถานะเปิดและปิด
  • Note Event มี subvalue ที่เกี่ยวข้องกับความเร็วที่ note ควรเล่น สามารถตั้งเป็นค่าตัวเลขระหว่าง 0 ถึง 127 คุณสามารถก้าวผ่าน multiple note velocities ด้วยการแยกด้วยเครื่องหมายขีดกลาง

ตัวอย่าง

เริ่มต้นด้วย program change ที่เรียบง่าย ในสถานการณ์นี้เราใช้ program change 8 ที่ส่ง MSB ของ 4 และ LSB ของ 2 บนช่องสัญญาณ 1 ตัวอย่างเริ่มต้นด้วยรูปแบบที่ซับซ้อนที่สุดและลบการเลือก bank และช่องสัญญาณเพื่อให้กว้างขึ้น:

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% เราจะป้อนข้อมูลต่อไปนี้เนื่องจาก OnSong เริ่มนับ MIDI C0 เป็น 0 ในมาตราส่วน MIDI note:

N60:95@7, N60@7, N60:95, N60

อีกครั้ง สิ่งสำคัญที่ต้องจำไว้คือเมื่อค่าถูกลบออกจากไวยากรณ์ MIDI MIDI statement จะกลายเป็นกว้างขึ้นและไม่เฉพาะเจาะจง ตัวอย่างเช่น เวอร์ชันสุดท้ายของ note event จะส่ง C4 ด้วยความเร็ว 100% บนช่องสัญญาณทั้งหมด

เรายังสามารถหน่วง MIDI ได้โดยเพิ่ม WAIT command ค่อนข้างมาจะหน่วง MIDI เป็นเวลา 2 วินาที รวมถึง 500 ms (ครึ่งวินาที) คุณสามารถระบุวินาทีเป็น 1-10 วินาที หรือเป็นมิลลิวินาที:

WAIT2, WAIT500

สุดท้าย เราสามารถอ้างอิง MIDI globals ซึ่งเป็นรายการ MIDI events ที่กำหนดไว้ล่วงหน้าซึ่งสามารถอ้างอิงได้ หากคุณมี MIDI global ที่มี "on" เป็น tag (ไม่มีเครื่องหมายอัญประกาศ) คุณสามารถอ้างอิง global นั้นได้ด้วย:

@on
OnSong 1.999 — อัปเดตล่าสุดเมื่อ August 29, 2019