난 튜토리얼 this에 따라 16 진수 형식의 MIDI를 통해 읽고 필요한 데이터를 추정하는 C++ 프로그램을 작성하려고합니다. 트랙 청크 정보에서 첫 번째 정보는 트랙 "MTrk"를보고 있다는 사실입니다. 두 번째 4 바이트는 청크 크기를 나타냅니다.트랙 덩어리 크기가 잘못된 MIDI를 파싱 하시겠습니까?
내가 알기로, 청크 크기는 다음 트랙 청크가 시작되기 전의 바이트 수를 가리키며, 그렇지 않으면 파일의 끝을 나타냅니다. 그러나, 내가 함께 일해 왔던 midi 파일에서 청크 크기가 너무 작습니다. 말하자면, 청크 크기가 40 바이트라고 가정 해 봅시다 : 다음 "MTrk"는 현재 바이트 이후 70 바이트가 될 때까지 발생하지 않습니다 ("MTrk"및 청크 크기 자체는 아닙니다. 청크 크기의 일부). 그러면이 추가 30 바이트는 무엇입니까? 청크 크기 이후에 발생하는 바이트는 잘라야합니까? 또는 청크 크기를 무시하고 다음 트랙 (또는 트랙의 끝을 나타내는 FF2F00)이 나타날 때까지 계속 읽어야합니까?
가4D546864
00000006
0001
0003
0060
(HEADER OF END)
: I가 의미있는 부분을 분리 한 아래4D546864000000060001000300604D54726B0000000B00FFFFFFFF510306FFFFFF8A1B00FFFFFFFF2F004D54726B
: MIDI 파일 판독 후에
는, I는 출력으로서 다음 기록
4D54726B
0000000B
(청크 사이즈 = 11 바이트)
,451,515,00FFFFFFFF510306FFFFFF8A1B00FFFFFFFF2F00
는
4D54726B
Here 내가 사용하는 MIDI 파일입니다 (하지만 여기에서 우리는 20 바이트 참조).
"FF2F00"또는 다음 "MTrk"트랙의 끝까지 건너 뛰는 것이 합리적인 것처럼 보입니다. MIDI 튜토리얼을 따르지 않는 파일이있는 것 같습니다. 다른 출처의 MIDI 파일을 확인 했습니까? – ChuckCottrill
3 개의 소스를 시도했는데 3 번 발생했습니다. 나는 다른 튜토리얼에서 청크 크기가 부정확하게 ~ 50 %로보고되었다는 사실을 언급했지만, 그 경우에해야 할 일에 대한 자세한 내용은 부끄러웠다. – mike
자습서를 확인하는 MIDI 사양은 다음과 같습니다 (https://docs.isy.liu.se/twiki/pub/VanHeden/DataSheets/The_MIDI_Specification.pdf). – ChuckCottrill