본문 바로가기
OMU
로그인
악기 입문

MIDI SysEx 읽기: F0·F7과 제조사·유니버설 식별

MIDI SysEx의 F0·F7 경계, 제조사 식별과 유니버설 예외, 장치 ID와 채널의 차이를 알아보고 호환성 판단 기준을 살펴봅니다.

OMU 에디터6분 분량
MIDI SysEx 읽기: F0·F7과 제조사·유니버설 식별 대표 이미지

MIDI SysEx는 System Exclusive의 줄임말로, 일반적인 노트나 컨트롤체인지와 다른 형식의 데이터를 전달하는 메시지다. 제조사별 기능과 관련해 자주 등장하지만 모든 SysEx가 특정 제조사만의 비공개 명령인 것은 아니다. 메시지의 경계, 식별 정보, 본문이 어떤 규약을 따르는지 차례로 나누면 긴 바이트열도 무조건 어려운 암호처럼 볼 필요는 없다.

표준 채널 메시지와 다른 범주

Note On이나 Program Change 같은 채널 메시지는 메시지 종류와 MIDI 채널이 상태 바이트에 연결된다. SysEx는 이런 채널 보이스 메시지와 다른 시스템 메시지 범주다. 따라서 SysEx의 임의의 숫자를 MIDI 채널로 읽거나, 특정 채널의 노트와 같은 범위로 해석하면 의미가 어긋날 수 있다.

SysEx가 반드시 장치 전체의 모든 기능을 바꾸는 명령이라는 뜻도 아니다. 어떤 내용을 담는지는 해당 메시지 규약이 정한다. 정보 요청과 응답, 장치 관련 데이터 등 목적이 다양할 수 있으므로 메시지 길이나 파일 이름만으로 어떤 작업을 하는지 확정하지 않는다. 제목에 설정이라는 단어가 있어도 실제 데이터의 대상과 범위는 별도로 확인해야 한다.

F0와 F7이라는 경계

MIDI 1.0의 직렬 바이트 흐름에서 SysEx는 상태 바이트 F0로 시작하고 F7인 End of Exclusive로 끝나는 구조로 설명한다. 여기서 F0와 F7은 십육진수 표기다. 문서의 십진수 숫자와 비교할 때는 진법이 같은지 확인해야 하며, 글자 모양이 다르다는 이유만으로 다른 메시지라고 판단하지 않는다.

일반적인 SysEx 데이터 바이트는 최상위 비트가 꺼진 7비트 범위로 표현된다. 다만 전송 흐름에는 시스템 리얼타임 메시지가 사이에 들어올 수 있으므로, 캡처에 보이는 모든 바이트를 본문 데이터로 무조건 이어 붙이면 안 된다. 파일이나 로그의 표시가 원시 전송 흐름인지, 프로그램이 가공한 이벤트 표현인지도 구별해야 한다.

제조사 식별자는 제품명과 다르다

제조사별 SysEx에서는 시작 뒤의 식별 정보가 어떤 제조사의 규약인지 판단하는 단서가 된다. 제조사 ID에는 한 바이트 형식과 00으로 시작하는 확장된 세 바이트 형식이 있다. 따라서 시작 다음의 숫자 하나만 보고 항상 제조사를 확정할 수 있다고 설명해서는 안 된다.

제조사 ID가 같다고 해서 모든 제품이 같은 본문 구조를 공유하는 것도 아니다. 장치나 모델을 구분하는 정보, 명령 종류, 길이, 검사값 등의 해석이 제품별로 달라질 수 있다. 검사값이 모든 SysEx에 동일한 위치와 방식으로 들어간다고 가정하는 것도 부정확하다. 실제 바이트의 의미는 대상 제품에 맞는 메시지 명세가 있어야 확인할 수 있다.

유니버설 SysEx라는 예외

SysEx에는 제조사별 형식 외에 유니버설 형식도 있다. F0 다음의 7E는 Universal Non-Real Time, 7F는 Universal Real Time을 구별하는 식별 값으로 쓰인다. 이 경우를 특정 제조사의 ID로 읽으면 안 된다. 제조사 전용이라는 이름의 인상만으로 모든 SysEx의 범위를 설명할 수 없는 이유다.

유니버설이라는 말도 모든 MIDI 장치가 모든 종류를 반드시 지원한다는 뜻은 아니다. 해당 메시지의 종류와 수신기의 지원 범위를 확인해야 한다. 또한 여기서 Real Time이라는 유니버설 분류명은 앞서 말한 개별 시스템 리얼타임 상태 바이트와 같은 메시지 형식이라는 뜻이 아니다. 이름이 비슷해도 서로 다른 분류의 개념을 구별하는 것이 중요하다.

장치 ID와 MIDI 채널의 차이

SysEx 형식에 따라 장치 ID가 포함될 수 있다. 장치 ID는 메시지의 대상 식별과 관련되며, MIDI 채널 번호와 그대로 같은 개념이 아니다. 제품 화면에서 둘 다 숫자로 보인다는 이유만으로 같은 값끼리 자동 연결된다고 생각하면 잘못된 해석이 생긴다.

가상의 설명 문서에 장치 ID와 모델 정보가 각각 적혀 있다면, 두 항목은 수신 대상을 구분하는 역할과 메시지 규약을 구분하는 역할을 달리할 수 있다. 실제 의미는 그 문서의 정의를 따라야 한다. 일부 형식에는 여러 장치를 대상으로 하는 식별 값도 있지만 이를 모든 제조사 메시지에 보편적으로 적용할 수는 없다. 숫자 하나의 의미를 다른 형식으로 옮기지 않는 것이 안전한 판별 기준이다.

파일의 F7 표시는 맥락을 확인하기

표준 MIDI 파일에서 SysEx와 관련된 이벤트는 길이 정보와 함께 저장되며, F7 이벤트는 연속 부분이나 이스케이프 형식과 관련될 수 있다. 따라서 파일 파서가 표시한 F7 이벤트를 곧바로 독립된 전송 메시지의 마지막 한 바이트와 같은 것으로만 읽으면 안 된다. 파일의 이벤트 구조와 MIDI 선로상의 바이트 구조는 표현 층이 다르다.

이 차이는 파일을 수정하거나 분해해야 한다는 뜻이 아니다. 이미 제공된 로그를 읽을 때 도구가 무엇을 표시하는지 확인하라는 의미다. 메시지가 분할되어 보인다는 이유만으로 데이터가 손상되었다고 단정하지 않고, 프로그램이 이벤트를 어떻게 묶는지 살펴볼 수 있다. 확인되지 않은 경계나 생략된 부분을 임의로 만들어 채우지 않는다.

호환성은 형식과 대상을 함께 보기

SysEx의 겉모양이 맞는 것과 수신기에 적합한 것은 별개의 문제다. F0와 F7이 있다고 해서 내용이 올바르거나 안전하게 적용된다는 보장은 없다. 덤프나 펌웨어, 설정 데이터는 장치 상태에 영향을 줄 수 있으므로 이 글에서는 전송이나 복원 절차를 안내하지 않는다.

  • 제조사별 형식인지 유니버설 형식인지 구별한다.
  • 제품과 모델, 문서 버전이 일치하는지 확인한다.
  • 장치 ID와 채널을 같은 개념으로 읽지 않는다.
  • 파일 이벤트와 실제 전송 바이트의 표시 차이를 살펴본다.

관련 악보 안내

곡의 음표와 SysEx의 장치 데이터는 다른 정보다. 선율과 화성의 표기를 살펴보고 싶다면 OMU 피아노 악보 분류를 참고할 수 있다. SysEx 파일이나 특정 장치의 덤프 자료가 제공된다는 뜻은 아니며 실제 목록에서 곡명과 편성, 자료 형식을 확인해야 한다.

  • [OMU 관련 악보 안내](https://www.omuclub.com/score/piano)

댓글 0

아직 댓글이 없어요. 첫 댓글을 남겨 보세요.