$$ \definecolor{rr}{rgb}{0.95,0.1,0} \definecolor{bb}{rgb}{0,0.4,1} \definecolor{gg}{rgb}{0,0.6,0} \definecolor{yy}{rgb}{0.8,0.5,0} \definecolor{pp}{rgb}{0.9,0,0.5} $$

표준 미디 파일 1.0 / 대충 청크 등등

~카테고리:
나머지/midiSpec

시퀀스, 트랙, 청크: 파일 블럭 구조

※원문 제목은 이런데 도대체 그 "시퀀스"는 도대체 뭐냐??? 이 부분 통틀어서 시퀀스라는 단어는 단 한 번도 나오지를 안 하는구만. 으악!! 시퀀스가 도대체 뭘 말하는 건지 모르겠단 말이야 으악!! 시퀀스가 뭔지 몰라서 사망 0<-< 가변길이량은 "파일 블럭 구조"랑 아무런 상관도 없으면서 왜 여기의 하위문단이면서도 제목에 안 나와있고 ??? 진짜 알 쑤가 없는 제목이다.

청크

미디파일은 청크들로 구성된다. 각 청크는 4문자짜리 타입이름과 32비트짜리 길이를 갖고있는데, 이 길이란 해당 청크의 바이트 수이다. 이런 구조로는 어느 청크 유형이 도입되기 전에 작성된 프로그램에서 이를 마주칠 경우 그 미래의 청크 유형이 쉽게 무시되도록 설계할 수 있다. 내가 쓰는 프로그램에서 낯선 청크가 발견될 수도 있다 생각해야 하며 이를 없는 취급을 해야 한다.

각 청크는 아스키 4글자인 유형으로 시작한다. 그 다음은 32비트 길이인데, 상위바이트순이다(길이 6은 00 00 00 06로 저장됨). 이 길이는 뒤따르는 데이터의 바이트 수를 가리키는데, 여기에 유형값 4바이트와 길이값 4바이트는 미포함이다. 그러므로 길이값이 6인 청크는 실제로는 디스크 파일에서 14바이트를 차지한다.

`This chunk architecture is similar to that used by Electronic Arts' IFF format, and the chunks described herein could easily be placed in an IFF file. The MIDI File itself is not an IFF file: it contains no nested chunks, and chunks are not constrained to be an even number of bytes long. Converting it to an IFF file is as easy as padding odd-length chunks, and sticking the whole thing inside a FORM chunk.

미디파일 속에는 헤더청크와 트랙청크 두 가지 종류의 청크가 있다. ★헤더청크는 미디파일 전체와 관련한 최소한의 정보를 제공한다. ★트랙청크는 최대 열여섯 미디채널 정보를 포함할 수 있는 미디데이터의 계속적인 스트림를 포함한다. 다중 트랙, 다중 미디출력, 패턴, 시퀀스, 노래의 개념은 여러 트랙청크를 쓰면 모두 구현할 수 있을 것이다.

미디파일은 반드시 헤더청크로 시작하고 트랙청크 한 개 이상이 그에 뒤따른다.

MThd [헤더데이터의 길이] [헤더데이터]
MTrk [트랙데이터의 길이] [트랙데이터]
MTrk [트랙데이터의 길이] [트랙데이터]
...
트랙청크 아직 안 만듦

가변길이량

미디파일의 몇몇 수는 가변길이량이라는 꼴로 표현된다.

※대충 가변길이량(variable-length quantity)을 설명하는 부분이다. 원문에서 이 문단 제목은 "convention(규약)"이던데 정작 읽어보니 그냥 가변길이량 설명이 전부다. 문서를 따로 만들었다.

파일

어느 파일시스템에게든, 미디파일은 단순히 8비트 바이트의 나열이다. 매킨토시에서 이 바이트 스트림은 (파일 타입이 '미디'인) `the data fork of a file 또는 클립보드 상에 저장된다. 다른 컴퓨터들은 대부분 8비트 바이트 스트림을 파일에 저장한다. 이 컴퓨터들에서 작명법이나 저장 규약은 필요에 따라 정의된다.