한국어
MIDI 메시지 치트 시트: 모든 종류, 상태 바이트, 범위
이 앱은 완전히 무료입니다. 계정을 만들 필요가 없습니다. 구독도, 번거로운 다운로드도 없고, 잠긴 기능도 없습니다. Apple 실리콘에 최적화되어 있습니다.
MIDI 1.0 메시지는 메시지가 무엇인지 알려 주는 상태 바이트 하나와 그 뒤의 데이터 바이트 0개, 1개, 2개로 이루어집니다. 16진수 80의 Note Off에서 E0의 Pitch Bend까지 일곱 가지 채널 메시지가 있고, 각각 마지막 자리에 채널을 담습니다. 그리고 F0에서 FF까지 채널이 전혀 없는 시스템 메시지가 있습니다. 아래의 표는 그 전부를 다루며 각 데이터 바이트가 가지는 범위를 적었고, 각 행은 이 사이트에서 그 메시지를 깊이 설명하는 페이지로 연결됩니다.
값은 2026년 10월 27일에 읽은 MIDI Association의 MIDI 1.0 메시지 요약과 Control Change 목록에서 가져왔습니다. 저는 MIDI를 읽고 보내는 무료 Mac 앱 InputConfig를 만들기 때문에, 표 하나에서 이 메시지 중 어떤 것을 처리하는지 밝힙니다.
단계
- 메시지의 첫 바이트를 16진수로 읽습니다.
- 80에서 EF이면 첫 자리가 메시지를 가리키고 둘째 자리가 채널이며, 0은 채널 1이고 F는 채널 16입니다.
- F0에서 FF이면 채널이 없는 시스템 메시지이므로 시스템 표에서 찾습니다.
- 뒤따르는 데이터 바이트를 채널 표에 따라 읽습니다. 각각 0에서 127입니다.
- Control Change이면 CC 표에서 컨트롤러 번호를 찾습니다.
상태 바이트와 데이터 바이트 구별하기
MIDI 1.0의 모든 바이트는 상태 바이트 아니면 데이터 바이트이고, 맨 위 비트가 어느 쪽인지 정합니다. MIDI Association의 표에서 모든 상태 바이트는 2진수로 1로 시작하고, 모든 데이터 바이트는 0으로 시작합니다.
- 상태 바이트. 16진수 80에서 FF, 10진수 128에서 255입니다. 메시지를 시작합니다.
- 데이터 바이트. 16진수 00에서 7F, 10진수 0에서 127입니다. MIDI의 거의 모든 값이 127에서 끝나는 이유입니다.
- 채널. 채널 메시지에서 16진수의 둘째 자리가 채널이며 0에서 F이고, 앱에는 채널 1에서 16으로 표시됩니다. 그래서 90은 채널 1의 Note On이고 9F는 채널 16의 Note On입니다.
- 14비트 값. 128단계로 부족하면 데이터 바이트 두 개가 합쳐집니다. 가는 절반인 LSB와 굵은 절반인 MSB입니다. 합치면 0에서 16383까지이고, Pitch Bend는 가운데를 8192, 16진수 2000에 둡니다.
128 이상인 바이트는 메시지를 시작하고, 128 미만인 바이트는 값을 담습니다. 둘 다 더 알고 싶다면 MIDI 채널과 MSB와 LSB를 보세요.
채널 메시지 읽기
이 일곱 가지가 음악을 실어 나릅니다. 노트, 압력, 노브, 패치 변경, 피치 휠입니다. 상태 열은 16진수이고, 낮은 자리는 채널이 정합니다.
| 메시지 | 상태 (16진수) | 데이터 바이트 1 | 데이터 바이트 2 | 더 보기 |
|---|---|---|---|---|
| Note Off | 80에서 8F | 노트 번호, 0에서 127 | 릴리스 벨로시티, 0에서 127 | 노트 번호 |
| Note On | 90에서 9F | 노트 번호, 0에서 127 | 벨로시티, 0에서 127 (0은 Note Off로 작동) | 벨로시티 |
| 폴리포닉 키 프레셔 | A0에서 AF | 노트 번호, 0에서 127 | 압력, 0에서 127 | 애프터터치 |
| Control Change | B0에서 BF | 컨트롤러, 0에서 119 | 값, 0에서 127 | CC 목록 |
| Program Change | C0에서 CF | 프로그램, 0에서 127 | 없음 | 프로그램 체인지 |
| 채널 프레셔 | D0에서 DF | 압력, 0에서 127 | 없음 | 애프터터치 |
| Pitch Bend | E0에서 EF | 가는 절반 (LSB), 0에서 127 | 굵은 절반 (MSB), 0에서 127 | 피치 벤드 |
벨로시티가 0인 Note On은 Note Off로 치며, MIDI Association의 Arduino 가이드도 이것으로 노트를 끝냅니다. Control Change의 컨트롤러 번호가 119에서 멈추는 것은 120에서 127이 아래의 채널 모드 메시지에 쓰이기 때문입니다. Pitch Bend의 반음 범위는 메시지에 전혀 들어 있지 않습니다. 받는 쪽이 정하며, MIDI 표에는 RPN 0으로 설정할 수 있다고 되어 있습니다. Program Change와 채널 프레셔는 데이터 바이트가 하나이고, 나머지 다섯은 둘입니다.
채널 모드 메시지 알기
채널 모드 메시지는 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도 모든 노트를 끈다고 적고 있습니다. 패닉 버튼은 대부분 CC 123과 CC 120을 16개 채널 모두에 보내는 것입니다. 정확한 바이트는 MIDI 패닉에 있습니다.
시스템 메시지 읽기
시스템 메시지는 F로 시작하고 채널이 없으므로 케이블에 연결된 모든 장치가 읽을 수 있습니다. F0에서 F7은 시스템 공통 메시지이고 F8에서 FF는 실시간 메시지이며, 실시간 메시지는 SysEx 메시지 중간에 올 수 있는 유일한 메시지입니다.
| 상태 (16진수) | 메시지 | 데이터 | 더 보기 |
|---|---|---|---|
| F0 | System Exclusive | 제조사 ID, 그다음 F7까지 임의 개수의 데이터 바이트 | SysEx |
| F1 | MIDI Time Code 쿼터 프레임 | 바이트 하나: 타임코드의 한 조각 | |
| F2 | Song Position Pointer | 바이트 둘: 처음부터 센 비트 수의 14비트 값, 한 비트는 클럭 6개 | |
| F3 | Song Select | 바이트 하나: 어느 곡이나 시퀀스인지 | |
| F6 | Tune Request | 없음. 아날로그 신시사이저에 오실레이터를 조율하도록 요청합니다 | |
| F7 | End of Exclusive | 없음. SysEx 메시지를 끝냅니다 | |
| F8 | Timing Clock | 없음. 4분음표당 24번 보냅니다 | MIDI 클럭 |
| FA, FB, FC | Start, Continue, Stop | 없음 | MIDI 클럭 |
| FE | Active Sensing | 없음. 선택 사항이며, 장치가 보내기 시작하면 최소 300ms마다 보냅니다 | |
| FF | Reset | 없음. 수신 장치를 전원을 켰을 때의 상태로 되돌립니다 |
F4, F5, F9, FD는 정의되지 않았습니다. Clock, Start, Stop은 시스템 메시지여서 채널을 담지 않습니다. SysEx 덤프와 그것을 보내는 앱은 Mac용 SysEx 라이브러리언 페이지를 보세요.
알아 둘 만한 CC 번호 찾기
120개 Control Change 번호의 상당수는 정의되지 않은 채로 남아 있지만, 몇 개는 MIDI 표준에 이름이 있고 신시사이저와 앱이 그것을 따릅니다. 다음은 MIDI Association의 Control Change 목록에서 가져왔습니다.
| CC | 이름 | 더 보기 |
|---|---|---|
| 0과 32 | Bank Select, MSB와 LSB | MSB와 LSB |
| 1 | 모듈레이션 휠 | CC 목록 |
| 2 | 브레스 컨트롤러 | |
| 4 | 풋 컨트롤러 | |
| 6과 38 | Data Entry, MSB와 LSB | NRPN과 RPN |
| 7 | 채널 볼륨 | |
| 10 | 팬 | |
| 11 | Expression | |
| 64 | 서스테인(댐퍼) 페달: 0에서 63은 꺼짐, 64에서 127은 켜짐 | 서스테인 페달 |
| 65, 66, 67 | 포르타멘토, 소스테누토, 소프트 페달, 켜짐 또는 꺼짐 | |
| 98과 99 | NRPN 번호, LSB와 MSB | NRPN과 RPN |
| 100과 101 | RPN 번호, LSB와 MSB | NRPN과 RPN |
컨트롤러 32에서 63은 컨트롤러 0에서 31의 가는 절반인 LSB이며, 그래서 Bank Select가 CC 0에 CC 32를 더한 것이 됩니다. CC 64는 스위치이므로 64 이상의 값은 모두 페달이 밟혔다는 뜻입니다. MIDI CC 목록에 모든 번호가 있습니다.
InputConfig가 읽고 보내는 것 보기
InputConfig는 키보드, 패드 컨트롤러, DAW의 MIDI를 키, 클릭, Mac의 음량 등으로 바꾸고, 게임 컨트롤러나 키보드에서 InputConfig라는 이름의 가상 포트로 MIDI를 보냅니다. 메시지별로 솔직하게 정리한 목록입니다.
| 메시지 | 입력으로 바인딩 | 출력으로 보내기 |
|---|---|---|
| Note On과 Off | 예, 누르고 있는 버튼으로 | 예, 행에 설정한 벨로시티로 |
| Control Change | 예, 스위치, 다이얼, 돌림으로 | 예, 고정 값이나 스틱 또는 트리거 위치로 |
| Pitch Bend | 예, 스틱처럼 플러스와 마이너스로 | 예, 스틱 축이나 버튼에서 |
| 애프터터치 | 예 | 아니요 |
| Program Change | 예, 프리셋을 활성화할 수도 있음 | 예 |
| Start, Continue, Stop | 예 | 예 |
| Timing Clock | 아니요 | 아니요 |
| System Exclusive | 아니요 | 아니요 |
| NRPN과 RPN | 아니요 | 아니요, 개별 메시지를 보냅니다 |
두 가지가 사람들을 헷갈리게 합니다. 버튼은 벨로시티를 감지하지 못하므로 각 MIDI Note 출력은 행에 설정한 1에서 127의 벨로시티로 연주되고, 다이내믹이 필요하면 CC 11의 트리거를 쓰면 됩니다. 그리고 Switch 모드의 노브는 값이 절반을 넘으면 한 번 발동하여, 서스테인 페달을 켜고 끄는 스위치로 바꿉니다.


컨트롤이 노트, CC, 피치 벤드, Program Change 중 하나를 보낸다면 InputConfig가 바인딩할 수 있습니다. 설정은 MIDI를 키 입력으로와 MIDI 출력에서 다룹니다.
메시지가 예상과 다를 때
놀라는 일의 대부분은 고장 난 장비가 아니라 번호 매기기에서 옵니다. 가장 작은 단계부터 이 사다리를 올라가세요.
- 채널 번호를 확인하세요. 바이트는 0에서 15이고 앱은 1에서 16입니다. 채널 10의 장치는 Note On에 99를 보냅니다.
- 프로그램 번호를 확인하세요. 메시지는 0에서 127을 담지만 많은 패치 목록은 1에서 128로 보여 주므로, 패치 1은 0으로 전송됩니다.
- 숨은 Note Off가 있는지 확인하세요. 벨로시티 0의 Note On은 노트를 끝내므로, Note On만 가득한 로그에서도 건반이 놓이고 있을 수 있습니다.
- 원시 바이트를 해독하세요. MIDI 메시지 디코더에 붙여 넣거나 MIDI 테스터에서 도착하는 것을 지켜보세요.
하나 어긋나는 것이 가장 흔한 MIDI 버그입니다.
메시지 하나를 더 깊이 알아보기
- 노트. 벨로시티, 노트 번호, General MIDI 드럼 맵.
- 압력. 채널 및 폴리포닉 애프터터치.
- 컨트롤러. 서스테인 페달, MSB와 LSB, NRPN과 RPN, MIDI 러닝.
- 패치. Program Change.
- 음높이. Pitch Bend.
- 타이밍과 안전. MIDI 클럭, MIDI 패닉, MIDI Thru.
- 데이터. SysEx.
여기 있는 각 페이지는 표의 한 행을 가져와 예시와 함께 설명합니다. 모든 것이 처음이라면 MIDI란 무엇인가에서 시작하세요.
짧은 요약
- 먼저 상태. 16진수 80 이상의 바이트가 메시지를 시작하고, 그 뒤의 바이트는 0에서 127의 값입니다.
- 채널 메시지. 80에서 EF이고 채널은 마지막 자리에 있습니다.
- 시스템 메시지. F0에서 FF이고 채널이 없습니다. SysEx, 클럭, Start, Stop 등입니다.
- 큰 숫자. 데이터 바이트 두 개로 Pitch Bend처럼 0에서 16383을 만듭니다.
상태 바이트의 첫 자리를 읽으면 어떤 종류의 메시지인지 알 수 있습니다.
자주 묻는 질문
MIDI 메시지 종류는 몇 가지인가요?
MIDI 1.0에는 일곱 가지 채널 메시지(Note Off, Note On, 폴리포닉 프레셔, Control Change, Program Change, 채널 프레셔, Pitch Bend), CC 120에서 127의 채널 모드 메시지, F0에서 FF의 시스템 메시지가 있습니다.
MIDI 상태 바이트란 무엇인가요?
메시지의 첫 바이트로 16진수 80에서 FF입니다. 메시지가 무엇인지 알려 주고, 채널 메시지라면 16개 채널 중 어디에 있는지도 알려 줍니다.
CC와 NRPN은 어떻게 다른가요?
CC는 컨트롤러 번호와 0에서 127의 값을 가진 메시지 하나입니다. NRPN은 CC 99와 98로 매개변수를 고르고 CC 6과 38의 Data Entry로 설정하므로, 한 번 바꾸는 데 메시지 세 개나 네 개가 필요합니다.
InputConfig는 어떤 MIDI 메시지를 지원하나요?
노트, Control Change, 피치 벤드, 애프터터치, Program Change, Start, Continue, Stop을 바인딩하고, 노트, Control Change, 피치 벤드, Program Change와 트랜스포트를 보냅니다. 클럭, SysEx, NRPN은 처리하지 않습니다.
MIDI 클럭은 채널 메시지인가요?
아니요. Timing Clock인 F8은 채널이 없는 시스템 실시간 메시지이고, 4분음표당 24번 보냅니다.
한국어 페이지 더 보기
자세한 안내(영어)
글쓴이 소개. Ryleigh Newman은 InputConfig를 개발하고 있습니다. 손을 쓰기가 어려워서 매일 컨트롤러로 Mac을 조작합니다. 이 페이지는 영어에서 번역했습니다. Mac 언어가 한국어로 설정되어 있으면 앱의 주요 버튼과 메뉴가 한국어로 표시되며, 이 페이지는 그 이름에 영어 이름을 괄호로 함께 적었습니다. 앱의 나머지 부분과 사이트의 다른 페이지는 영어입니다.
이 페이지의 다른 언어: English, Deutsch, Español, Français, Italiano, 日本語, Polski, Português, Русский, ไทย, 繁體中文, 简体中文
무료. macOS 14 이상. 계정이 필요 없고, 데이터는 Mac 밖으로 나가지 않습니다. 소스 코드는 GitHub에 있습니다.