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 จะถูกส่งหรือรับในทุกช่องสัญญาณ

คำนำหน้า

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

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

ค่า

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

ค่าย่อย

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

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

ตัวอย่าง

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

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

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

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

WAIT2, WAIT500

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

@on
OnSong 2026 — อัปเดตล่าสุดเมื่อ March 11, 2020