ไทย

MIDI messages cheat sheet: ทุกประเภท status byte และช่วงค่า

ดาวน์โหลด InputConfig บน Mac App Storeแอปนี้ใช้ฟรีทั้งหมด ไม่ต้องสร้างบัญชี ไม่มีการสมัครสมาชิก ไม่มีการดาวน์โหลดที่ยุ่งยาก และไม่มีอะไรถูกล็อก ปรับให้เหมาะกับ Apple silicon

ข้อความ MIDI 1.0 คือ status byte ที่บอกว่าข้อความนั้นคืออะไร ตามด้วยไบต์ข้อมูลศูนย์ หนึ่ง หรือสองไบต์ มีข้อความแชนเนลเจ็ดอย่าง ตั้งแต่ Note Off ที่ 80 เลขฐานสิบหกไปถึง Pitch Bend ที่ E0 โดยแต่ละอันพาแชนเนลของมันไว้ในหลักสุดท้าย และมีข้อความระบบชุดหนึ่งตั้งแต่ F0 ถึง FF ที่ไม่มีแชนเนลเลย ตารางด้านล่างครอบคลุมทุกอย่าง พร้อมช่วงค่าที่ไบต์ข้อมูลแต่ละไบต์รับ และแต่ละแถวลิงก์ไปยังหน้าในเว็บไซต์นี้ที่อธิบายข้อความนั้นอย่างลึก

ค่าต่าง ๆ มาจากสรุปข้อความ MIDI 1.0ของ MIDI Association เองและรายการ Control Change ซึ่งฉันอ่านเมื่อวันที่ 27 ตุลาคม 2026 ฉันทำ InputConfig แอป Mac ฟรีที่อ่านและส่ง MIDI ดังนั้นมีตารางหนึ่งที่บอกว่ามันรองรับข้อความไหนบ้าง

ขั้นตอน

  1. อ่านไบต์แรกของข้อความเป็นเลขฐานสิบหก
  2. ถ้าเป็น 80 ถึง EF หลักแรกบอกว่าเป็นข้อความอะไร และหลักที่สองคือแชนเนล โดย 0 คือแชนเนล 1 ไปจนถึง F คือแชนเนล 16
  3. ถ้าเป็น F0 ถึง FF มันคือข้อความระบบที่ไม่มีแชนเนล ให้ค้นในตารางข้อความระบบ
  4. อ่านไบต์ข้อมูลที่ตามมา แต่ละไบต์ตั้งแต่ 0 ถึง 127 โดยใช้ตารางข้อความแชนเนล
  5. สำหรับ Control Change ให้ค้นหมายเลขตัวควบคุมในตาราง CC

แยก status byte ออกจาก data byte

ทุกไบต์ใน MIDI 1.0 เป็น status byte หรือ data byte และบิตบนสุดเป็นตัวตัดสิน ในตารางของ MIDI Association ทุก status byte เขียนโดยขึ้นต้นด้วย 1 ในเลขฐานสอง และทุก data byte ขึ้นต้นด้วย 0

  • Status byte 80 ถึง FF ฐานสิบหก หรือ 128 ถึง 255 มันเริ่มข้อความ
  • Data byte 00 ถึง 7F ฐานสิบหก หรือ 0 ถึง 127 นั่นคือเหตุผลที่เกือบทุกค่าใน MIDI หยุดที่ 127
  • แชนเนล ในข้อความแชนเนล หลักฐานสิบหกหลักที่สองคือแชนเนล 0 ถึง F ซึ่งแอปแสดงเป็นแชนเนล 1 ถึง 16 ดังนั้น 90 คือ Note On บนแชนเนล 1 และ 9F คือ Note On บนแชนเนล 16
  • ค่า 14 บิต เมื่อ 128 ขั้นไม่พอ ไบต์ข้อมูลสองไบต์จะต่อกัน: ครึ่งละเอียดคือ LSB และครึ่งหยาบคือ MSB รวมกันได้ตั้งแต่ 0 ถึง 16383 และ Pitch Bend วางจุดกึ่งกลางไว้ที่ 8192 หรือ 2000 ฐานสิบหก

ไบต์ที่ 128 ขึ้นไปเริ่มข้อความ และไบต์ที่ต่ำกว่า 128 พาค่า แชนเนล MIDIและ MSB และ LSB อธิบายทั้งสองเรื่องลึกขึ้น

อ่านข้อความแชนเนล

ทั้งเจ็ดอย่างนี้พาดนตรี: โน้ต แรงกด ปุ่มหมุน การเปลี่ยนเสียง และวีลพิตช์ คอลัมน์ status เป็นเลขฐานสิบหก โดยหลักต่ำกำหนดโดยแชนเนล

ข้อความStatus (ฐานสิบหก)Data byte 1Data byte 2เพิ่มเติม
Note Off80 ถึง 8Fหมายเลขโน้ต 0 ถึง 127Release velocity 0 ถึง 127หมายเลขโน้ต
Note On90 ถึง 9Fหมายเลขโน้ต 0 ถึง 127Velocity 0 ถึง 127 (0 ทำหน้าที่เป็น Note Off)velocity
Polyphonic key pressureA0 ถึง AFหมายเลขโน้ต 0 ถึง 127แรงกด 0 ถึง 127aftertouch
Control ChangeB0 ถึง BFตัวควบคุม 0 ถึง 119ค่า 0 ถึง 127รายการ CC
Program ChangeC0 ถึง CFโปรแกรม 0 ถึง 127ไม่มีprogram change
Channel pressureD0 ถึง DFแรงกด 0 ถึง 127ไม่มีaftertouch
Pitch BendE0 ถึง EFครึ่งละเอียด (LSB) 0 ถึง 127ครึ่งหยาบ (MSB) 0 ถึง 127pitch bend

Note On ที่ velocity เป็น 0 นับเป็น Note Off ซึ่งคู่มือ Arduino ของ MIDI Association เองใช้เพื่อจบโน้ต หมายเลขตัวควบคุมของ Control Change หยุดที่ 119 เพราะ 120 ถึง 127 ถูกใช้โดยข้อความโหมดแชนเนลด้านล่าง ช่วงของ Pitch Bend เป็นเซมิโทนไม่ได้อยู่ในข้อความเลย: ผู้รับเป็นผู้กำหนด และตาราง MIDI ระบุว่าตั้งได้ด้วย RPN 0 Program Change และ channel pressure พาข้อมูลหนึ่งไบต์ และอีกห้าอย่างพาสองไบต์

รู้จักข้อความโหมดแชนเนล

ข้อความโหมดแชนเนลใช้ status byte ของ Control Change คือ B0 ถึง BF กับหมายเลขตัวควบคุม 120 ถึง 127 มันเปลี่ยนวิธีที่แชนเนลทำงาน ไม่ใช่เสียงที่ได้

ตัวควบคุมชื่อทำอะไร
120All Sound Offทำให้ทุกเสียงเงียบพร้อมกัน
121Reset All Controllersคืนตัวควบคุมให้เป็นสถานะเริ่มต้น
122Local Control0 คือปิด 127 คือเปิด: คีย์เล่นเสียงของซินธ์เองหรือไม่
123All Notes Offปล่อยทุกโน้ตที่กดค้าง
124 และ 125Omni Mode Off และ Onอุปกรณ์ฟังบนแชนเนลเดียวหรือทุกแชนเนล
126 และ 127Mono Mode On และ Poly Mode Onหนึ่งโน้ตต่อแชนเนล หรือคอร์ด

รายการของ MIDI Association ระบุว่า 124 ถึง 127 ปิดทุกโน้ตด้วย ปุ่ม panic ส่วนใหญ่คือ CC 123 และ CC 120 ที่ส่งบนทั้ง 16 แชนเนล MIDI panic ระบุไบต์ที่แน่นอน

อ่านข้อความระบบ

ข้อความระบบขึ้นต้นด้วย F และไม่มีแชนเนล ดังนั้นทุกอุปกรณ์บนสายอ่านมันได้ F0 ถึง F7 เป็นข้อความ system common และ F8 ถึง FF เป็นข้อความ real-time ซึ่งเป็นข้อความเดียวที่อนุญาตให้แทรกกลางข้อความ SysEx

Status (ฐานสิบหก)ข้อความข้อมูลเพิ่มเติม
F0System ExclusiveMaker ID แล้วตามด้วยไบต์ข้อมูลกี่ไบต์ก็ได้ จนถึง F7SysEx
F1MIDI Time Code quarter frameหนึ่งไบต์: ส่วนหนึ่งของ time code
F2Song Position Pointerสองไบต์: จำนวนบีต 14 บิตจากจุดเริ่ม โดยหนึ่งบีตคือ 6 คล็อก
F3Song Selectหนึ่งไบต์: เพลงหรือซีเควนซ์ไหน
F6Tune Requestไม่มี ขอให้ซินธ์อนาล็อกจูนออสซิลเลเตอร์ของมัน
F7End of Exclusiveไม่มี จบข้อความ SysEx
F8Timing Clockไม่มี ส่ง 24 ครั้งต่อโน้ตตัวดำMIDI clock
FA, FB, FCStart, Continue, Stopไม่มีMIDI clock
FEActive Sensingไม่มี ไม่บังคับ อย่างน้อยทุก 300 ms เมื่ออุปกรณ์เริ่มส่งมัน
FFResetไม่มี คืนผู้รับให้อยู่ในสถานะตอนเปิดเครื่อง

F4, F5, F9 และ FD ไม่ได้กำหนดไว้ Clock, Start และ Stop เป็นข้อความระบบ จึงไม่เคยพาแชนเนล สำหรับ SysEx dump และแอปที่ส่ง ดูหน้า SysEx librarian สำหรับ Mac

ค้นหมายเลข CC ที่ควรรู้

หมายเลข Control Change 120 ตัวจำนวนมากไม่ได้กำหนดไว้ แต่บางตัวมีชื่อในมาตรฐาน MIDI ที่ซินธ์และแอปทำตาม ต่อไปนี้มาจากรายการ Control Change ของ MIDI Association

CCชื่อเพิ่มเติม
0 และ 32Bank Select, MSB และ LSBMSB และ LSB
1Modulation wheelรายการ CC
2Breath controller
4Foot controller
6 และ 38Data Entry, MSB และ LSBNRPN และ RPN
7Channel Volume
10Pan
11Expression
64Sustain (damper) pedal: 0 ถึง 63 ปิด 64 ถึง 127 เปิดแป้นซัสเทน
65, 66, 67Portamento, Sostenuto และ Soft pedal เปิดหรือปิด
98 และ 99หมายเลข NRPN, LSB และ MSBNRPN และ RPN
100 และ 101หมายเลข RPN, LSB และ MSBNRPN และ RPN

ตัวควบคุม 32 ถึง 63 คือครึ่งละเอียด หรือ LSB ของตัวควบคุม 0 ถึง 31 ซึ่งทำให้ Bank Select กลายเป็น CC 0 บวก CC 32 CC 64 เป็นสวิตช์ ดังนั้นค่าใดก็ตามตั้งแต่ 64 ขึ้นไปหมายความว่าแป้นถูกเหยียบ รายการ MIDI CCแสดงทุกหมายเลข

ดูว่า InputConfig อ่านและส่งอะไร

InputConfig เปลี่ยน MIDI จากคีย์บอร์ด แพดคอนโทรลเลอร์ หรือ DAW เป็นคีย์ การคลิก ระดับเสียงของ Mac และอื่น ๆ และส่ง MIDI จากจอยหรือแป้นพิมพ์ผ่านพอร์ตเสมือนชื่อ InputConfig นี่คือรายการตามความจริง ทีละข้อความ

ข้อความผูกเป็นอินพุตส่งเป็นเอาต์พุต
Note On และ Offได้ เป็นปุ่มที่กดค้างได้ ที่ velocity ซึ่งตั้งในแถว
Control Changeได้ เป็นสวิตช์ ปุ่มหมุน หรือการหมุนได้ เป็นค่าคงที่ หรือตำแหน่งของก้านหรือทริกเกอร์
Pitch Bendได้ พร้อมบวกและลบเหมือนก้านได้ จากแกนของก้านหรือปุ่ม
Aftertouchได้ไม่ได้
Program Changeได้ และเปิดใช้พรีเซ็ตได้ได้
Start, Continue, Stopได้ได้
Timing Clockไม่ได้ไม่ได้
System Exclusiveไม่ได้ไม่ได้
NRPN และ RPNไม่ได้ไม่ได้ ส่งได้เป็นข้อความเดี่ยว ๆ

มีรายละเอียดสองอย่างที่ทำให้คนสะดุด ปุ่มไม่ไวต่อ velocity ดังนั้นเอาต์พุต MIDI Note แต่ละอันเล่นที่ velocity ซึ่งตั้งในแถวของมัน ตั้งแต่ 1 ถึง 127 และทริกเกอร์บน CC 11 คือวิธีที่ได้ไดนามิก และปุ่มหมุนในโหมด Switch ทำงานครั้งเดียวเมื่อค่าเลยครึ่งทาง ซึ่งเปลี่ยนแป้นซัสเทนเป็นสวิตช์เปิดและปิด

Live Visualizer ของ InputConfig ในมุมมอง MIDI กับพรีเซ็ต MIDI: Knob Deck แสดงคีย์บอร์ด ปุ่มหมุน และข้อความล่าสุด
Figure 1. Live Visualizer ตั้งชื่อปุ่มหมุนแต่ละอันด้วยหมายเลข CC ดังนั้น CC 7, 10, 64, 71 และ 1 ตรงนี้อ่านจากตารางด้านบนได้เลย
ตัวแก้ไขของ InputConfig แสดงแถว D-pad ที่แต่ละแถวส่ง Program Change โดยมีแถวหนึ่งมี Bank Select นำหน้า
Figure 2. CC 0 และ Program Change ทำงานร่วมกัน D-pad ขึ้นส่ง Bank Select แล้วส่ง Program Change จากการกดครั้งเดียว

ถ้าตัวควบคุมส่งโน้ต CC pitch bend หรือ Program Change InputConfig ผูกมันได้ MIDI เป็นการกดแป้นและเอาต์พุต MIDIอธิบายการตั้งค่า

ถ้าข้อความไม่ตรงกับที่คาด

เรื่องเหนือความคาดหมายส่วนใหญ่มาจากการนับเลข ไม่ใช่อุปกรณ์เสีย ไล่ตามบันไดนี้ เริ่มจากขั้นเล็กที่สุดก่อน:

  1. เช็กการนับแชนเนล ไบต์บอก 0 ถึง 15 และแอปบอก 1 ถึง 16 อุปกรณ์บนแชนเนล 10 ส่ง 99 สำหรับ Note On
  2. เช็กการนับโปรแกรม ข้อความพา 0 ถึง 127 และรายการ patch จำนวนมากแสดง 1 ถึง 128 ดังนั้น patch 1 ถูกส่งเป็น 0
  3. เช็ก Note Off ที่ซ่อนอยู่ Note On ที่ velocity 0 จบโน้ต ดังนั้นล็อกที่เต็มไปด้วย Note On ก็ยังปล่อยคีย์ได้
  4. ถอดรหัสไบต์ดิบ วางลงในตัวถอดรหัสข้อความ MIDI หรือดูมันเข้ามาในตัวทดสอบ MIDI

ผิดไปหนึ่งเป็นบั๊ก MIDI ที่พบบ่อยที่สุด

ศึกษาข้อความหนึ่งอย่างลึกขึ้น

แต่ละหน้าที่นี่หยิบหนึ่งแถวของตารางมาอธิบายพร้อมตัวอย่าง ถ้าคุณใหม่กับทั้งหมดนี้ เริ่มจากMIDI คืออะไร

สรุปสั้น ๆ

  • Status ก่อน ไบต์ที่ 80 ฐานสิบหกขึ้นไปเริ่มข้อความ และไบต์ที่ตามมาเป็นค่าตั้งแต่ 0 ถึง 127
  • ข้อความแชนเนล 80 ถึง EF โดยมีแชนเนลอยู่ในหลักสุดท้าย
  • ข้อความระบบ F0 ถึง FF ไม่มีแชนเนล: SysEx, clock, Start, Stop และอื่น ๆ
  • เลขใหญ่ ไบต์ข้อมูลสองไบต์ได้ 0 ถึง 16383 เช่นใน Pitch Bend

อ่านหลักแรกของ status byte แล้วคุณจะรู้ว่าเป็นข้อความชนิดไหน

คำถาม

ข้อความ MIDI มีกี่ประเภท

MIDI 1.0 มีข้อความแชนเนลเจ็ดอย่าง (Note Off, Note On, polyphonic pressure, Control Change, Program Change, channel pressure และ Pitch Bend) ข้อความโหมดแชนเนลบน CC 120 ถึง 127 และข้อความระบบตั้งแต่ F0 ถึง FF

MIDI status byte คืออะไร

ไบต์แรกของข้อความ ตั้งแต่ 80 ถึง FF ฐานสิบหก มันบอกว่าข้อความคืออะไร และสำหรับข้อความแชนเนล บอกว่าอยู่บนแชนเนลไหนใน 16 แชนเนล

CC กับ NRPN ต่างกันอย่างไร

CC เป็นข้อความเดียวที่มีหมายเลขตัวควบคุมและค่า 0 ถึง 127 ส่วน NRPN เลือกพารามิเตอร์ด้วย CC 99 และ 98 แล้วตั้งค่าด้วย Data Entry บน CC 6 และ 38 การเปลี่ยนหนึ่งครั้งจึงใช้สามหรือสี่ข้อความ

InputConfig รองรับข้อความ MIDI ไหนบ้าง

มันผูกโน้ต Control Change pitch bend aftertouch Program Change และ Start, Continue และ Stop และส่งโน้ต Control Change pitch bend Program Change และ transport มันไม่รองรับ clock, SysEx หรือ NRPN

MIDI clock เป็นข้อความแชนเนลไหม

ไม่ใช่ Timing Clock หรือ F8 เป็นข้อความระบบแบบ real-time ที่ไม่มีแชนเนล ส่ง 24 ครั้งต่อโน้ตตัวดำ

หน้าอื่นเป็นภาษาไทย

คู่มือฉบับเต็ม เป็นภาษาอังกฤษ

ผู้เขียน Ryleigh Newman เป็นผู้พัฒนา InputConfig และใช้คอนโทรลเลอร์ควบคุม Mac ของตัวเองทุกวัน เพราะมือใช้งานได้ไม่ดีนัก หน้านี้แปลมาจากภาษาอังกฤษ หน้าตาแอปและส่วนอื่นของเว็บไซต์เป็นภาษาอังกฤษ

หน้านี้ในภาษาอื่น: English, Deutsch, Español, Français, Italiano, 日本語, 한국어, Polski, Português, Русский, 繁體中文, 简体中文

ดาวน์โหลด InputConfig บน Mac App Storeฟรี macOS 14 ขึ้นไป ไม่ต้องมีบัญชี ไม่มีข้อมูลออกจาก Mac ของคุณ โอเพนซอร์สบน GitHub.