ไทย
MIDI messages cheat sheet: ทุกประเภท status byte และช่วงค่า
แอปนี้ใช้ฟรีทั้งหมด ไม่ต้องสร้างบัญชี ไม่มีการสมัครสมาชิก ไม่มีการดาวน์โหลดที่ยุ่งยาก และไม่มีอะไรถูกล็อก ปรับให้เหมาะกับ 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 ดังนั้นมีตารางหนึ่งที่บอกว่ามันรองรับข้อความไหนบ้าง
ขั้นตอน
- อ่านไบต์แรกของข้อความเป็นเลขฐานสิบหก
- ถ้าเป็น 80 ถึง EF หลักแรกบอกว่าเป็นข้อความอะไร และหลักที่สองคือแชนเนล โดย 0 คือแชนเนล 1 ไปจนถึง F คือแชนเนล 16
- ถ้าเป็น F0 ถึง FF มันคือข้อความระบบที่ไม่มีแชนเนล ให้ค้นในตารางข้อความระบบ
- อ่านไบต์ข้อมูลที่ตามมา แต่ละไบต์ตั้งแต่ 0 ถึง 127 โดยใช้ตารางข้อความแชนเนล
- สำหรับ 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 1 | Data byte 2 | เพิ่มเติม |
|---|---|---|---|---|
| Note Off | 80 ถึง 8F | หมายเลขโน้ต 0 ถึง 127 | Release velocity 0 ถึง 127 | หมายเลขโน้ต |
| Note On | 90 ถึง 9F | หมายเลขโน้ต 0 ถึง 127 | Velocity 0 ถึง 127 (0 ทำหน้าที่เป็น Note Off) | velocity |
| Polyphonic key pressure | A0 ถึง AF | หมายเลขโน้ต 0 ถึง 127 | แรงกด 0 ถึง 127 | aftertouch |
| Control Change | B0 ถึง BF | ตัวควบคุม 0 ถึง 119 | ค่า 0 ถึง 127 | รายการ CC |
| Program Change | C0 ถึง CF | โปรแกรม 0 ถึง 127 | ไม่มี | program change |
| Channel pressure | D0 ถึง DF | แรงกด 0 ถึง 127 | ไม่มี | aftertouch |
| Pitch Bend | E0 ถึง EF | ครึ่งละเอียด (LSB) 0 ถึง 127 | ครึ่งหยาบ (MSB) 0 ถึง 127 | pitch 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 มันเปลี่ยนวิธีที่แชนเนลทำงาน ไม่ใช่เสียงที่ได้
| ตัวควบคุม | ชื่อ | ทำอะไร |
|---|---|---|
| 120 | All Sound Off | ทำให้ทุกเสียงเงียบพร้อมกัน |
| 121 | Reset All Controllers | คืนตัวควบคุมให้เป็นสถานะเริ่มต้น |
| 122 | Local Control | 0 คือปิด 127 คือเปิด: คีย์เล่นเสียงของซินธ์เองหรือไม่ |
| 123 | All Notes Off | ปล่อยทุกโน้ตที่กดค้าง |
| 124 และ 125 | Omni Mode Off และ On | อุปกรณ์ฟังบนแชนเนลเดียวหรือทุกแชนเนล |
| 126 และ 127 | Mono 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 (ฐานสิบหก) | ข้อความ | ข้อมูล | เพิ่มเติม |
|---|---|---|---|
| F0 | System Exclusive | Maker ID แล้วตามด้วยไบต์ข้อมูลกี่ไบต์ก็ได้ จนถึง F7 | SysEx |
| F1 | MIDI Time Code quarter frame | หนึ่งไบต์: ส่วนหนึ่งของ time code | |
| F2 | Song Position Pointer | สองไบต์: จำนวนบีต 14 บิตจากจุดเริ่ม โดยหนึ่งบีตคือ 6 คล็อก | |
| F3 | Song Select | หนึ่งไบต์: เพลงหรือซีเควนซ์ไหน | |
| F6 | Tune Request | ไม่มี ขอให้ซินธ์อนาล็อกจูนออสซิลเลเตอร์ของมัน | |
| F7 | End of Exclusive | ไม่มี จบข้อความ SysEx | |
| F8 | Timing Clock | ไม่มี ส่ง 24 ครั้งต่อโน้ตตัวดำ | MIDI clock |
| FA, FB, FC | Start, Continue, Stop | ไม่มี | MIDI clock |
| FE | Active Sensing | ไม่มี ไม่บังคับ อย่างน้อยทุก 300 ms เมื่ออุปกรณ์เริ่มส่งมัน | |
| FF | Reset | ไม่มี คืนผู้รับให้อยู่ในสถานะตอนเปิดเครื่อง |
F4, F5, F9 และ FD ไม่ได้กำหนดไว้ Clock, Start และ Stop เป็นข้อความระบบ จึงไม่เคยพาแชนเนล สำหรับ SysEx dump และแอปที่ส่ง ดูหน้า SysEx librarian สำหรับ Mac
ค้นหมายเลข CC ที่ควรรู้
หมายเลข Control Change 120 ตัวจำนวนมากไม่ได้กำหนดไว้ แต่บางตัวมีชื่อในมาตรฐาน MIDI ที่ซินธ์และแอปทำตาม ต่อไปนี้มาจากรายการ Control Change ของ MIDI Association
| CC | ชื่อ | เพิ่มเติม |
|---|---|---|
| 0 และ 32 | Bank Select, MSB และ LSB | MSB และ LSB |
| 1 | Modulation wheel | รายการ CC |
| 2 | Breath controller | |
| 4 | Foot controller | |
| 6 และ 38 | Data Entry, MSB และ LSB | NRPN และ RPN |
| 7 | Channel Volume | |
| 10 | Pan | |
| 11 | Expression | |
| 64 | Sustain (damper) pedal: 0 ถึง 63 ปิด 64 ถึง 127 เปิด | แป้นซัสเทน |
| 65, 66, 67 | Portamento, Sostenuto และ Soft pedal เปิดหรือปิด | |
| 98 และ 99 | หมายเลข NRPN, LSB และ MSB | NRPN และ RPN |
| 100 และ 101 | หมายเลข RPN, LSB และ MSB | NRPN และ 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 ทำงานครั้งเดียวเมื่อค่าเลยครึ่งทาง ซึ่งเปลี่ยนแป้นซัสเทนเป็นสวิตช์เปิดและปิด


ถ้าตัวควบคุมส่งโน้ต CC pitch bend หรือ Program Change InputConfig ผูกมันได้ MIDI เป็นการกดแป้นและเอาต์พุต MIDIอธิบายการตั้งค่า
ถ้าข้อความไม่ตรงกับที่คาด
เรื่องเหนือความคาดหมายส่วนใหญ่มาจากการนับเลข ไม่ใช่อุปกรณ์เสีย ไล่ตามบันไดนี้ เริ่มจากขั้นเล็กที่สุดก่อน:
- เช็กการนับแชนเนล ไบต์บอก 0 ถึง 15 และแอปบอก 1 ถึง 16 อุปกรณ์บนแชนเนล 10 ส่ง 99 สำหรับ Note On
- เช็กการนับโปรแกรม ข้อความพา 0 ถึง 127 และรายการ patch จำนวนมากแสดง 1 ถึง 128 ดังนั้น patch 1 ถูกส่งเป็น 0
- เช็ก Note Off ที่ซ่อนอยู่ Note On ที่ velocity 0 จบโน้ต ดังนั้นล็อกที่เต็มไปด้วย Note On ก็ยังปล่อยคีย์ได้
- ถอดรหัสไบต์ดิบ วางลงในตัวถอดรหัสข้อความ MIDI หรือดูมันเข้ามาในตัวทดสอบ MIDI
ผิดไปหนึ่งเป็นบั๊ก MIDI ที่พบบ่อยที่สุด
ศึกษาข้อความหนึ่งอย่างลึกขึ้น
- โน้ต Velocity หมายเลขโน้ตและแผนที่กลอง General MIDI
- แรงกด Aftertouch แบบแชนเนลและโพลีโฟนิก
- ตัวควบคุม แป้นซัสเทน MSB และ LSB NRPN และ RPN และ MIDI learn
- Patch Program Change
- ระดับเสียง Pitch Bend
- จังหวะและความปลอดภัย MIDI clock MIDI panic และ MIDI Thru
- ข้อมูล SysEx
แต่ละหน้าที่นี่หยิบหนึ่งแถวของตารางมาอธิบายพร้อมตัวอย่าง ถ้าคุณใหม่กับทั้งหมดนี้ เริ่มจาก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, Русский, 繁體中文, 简体中文
ฟรี macOS 14 ขึ้นไป ไม่ต้องมีบัญชี ไม่มีข้อมูลออกจาก Mac ของคุณ โอเพนซอร์สบน GitHub.