2017-03-09 10 views
0

나는 얼마 동안 미디 파일을 작업 해 왔고 나는 어떤 종류의 상태 바이트를 고집했다. 표준 미디 파일 포맷에 따르면 그러한 것은 없습니다. 그래서 누군가가이 3 바이트 정보가 "00 a040"이라고 말할 수 있습니까? 나는 ""은 델타 시간을 나타내는 바이트이고 0xa0은 상태 바이트 여야한다는 것을 알고 있습니다. 18 번 줄에있는 마지막 3 바이트는 지금까지 이해할 수없는 유일한 부분입니다. 그 3 바이트 다음에 "00 ff01"이라는 텍스트 메타 이벤트 바이트가옵니다. 19에미디 파일의 인식 할 수없는 상태 바이트

미디 파일 행 18 :

 
ff 51 03 09 cc 90 00 c0 00 00 b0 07 64 00 0a 40 
00 ff 01 20 62 64 63 61 34 32 36 64 31 30 34 61 

답변

2

SMF specification는 말한다 :

실행 상태가 사용됩니다 이전 이벤트가 MIDI 채널 인 경우 MIDI 채널 메시지의 상태 바이트를 생략 할 수있다 동일한 상태의 메시지 다음과 같이

그래서이 바이트 디코딩 할 수 있습니다

ff 51 03 09 cc 90 : 메타 이벤트 : 템포의 설정, 9CC90h 분 음표 당 = ​​642192 μs의
00 : 델타 시간
c0 00 : 설정 프로그램 0 (피아노) 델타 시간
b0 07 64 :
00 채널 0에 설정 제어기 (7) (volumn) 값을 100
,145,771,932 10 : 델타 시간
  0a 40 : 실행 상태 (반복 B0h); 64
00을 값으로 설정 제어기 (10) (식) : 델타 시간
ff 01 20 ... : 메타 이벤트 : 텍스트 "bdca426d104a ..."

+0

이제 I 참조. 나는 그 바이트들에 대해 너무 혼란스러워했다. 따라서 이전 상태와 동일한 상태의 채널 메시지가 상태 바이트없이 기록됩니다. 감사! –