나머지/midiSpec

표준 미디 파일 1.0 / 0, 1, 2형식 파일

일단은생각해놓은닉넴이없음 2020. 3. 8. 23:28
0다중채널 트랙 한 개가 있는 파일.
1동시적 트랙(이나 미디출력) 한 개 이상의 시퀀스가 있는 파일.
2독립적 단일트랙 패턴 한 개 이상이 나열된 파일.

※헤더청크 문서에서 복붙해온 표.

청크 상세설명

0, 1, 2형식 파일(formats 0, 1, and 2)

0형식 파일에는 헤더청크 뒤에 트랙청크 하나가 따른다. 가장 호환성 좋은 데이터표현법이며, 신디사이저에서 소리를 내야 하지만 `sound effect boxes나 믹서 등 다른 것과 주로 관련된 프로그램에서 트랙 하나짜리 간단한 플레이어에 매우 유용하다. 이런 단순한 프로그램으로 작업하려면 지금 쓰이는 프로그램이 트랙 기반인 경우라도 이 따위 형식은 만들어봄직하다. 한편, 누군가 작성해준 1형식에서 0형식으로의 형식변환이 일부 설정에서 쓰기 너무 쉬운 덕에 지금 쓰는 프로그램에 넣을 때 문제를 덜어줄지도 모른다.

1형식과 2형식 파일은 헤더청크 한 개와 뒤따르는 트랙청크 한 개 이상이 있다. ★여러 동시적 트랙을 지원하는 프로그램은, 세로로 1차원 꼴 즉 트랙의 모음인 1형식의 데이터를 읽고 저장할 수 있어야 한다. ★여러 독립적 패턴을 지원하는 프로그램은, 가로로 1차원 꼴인 2형식 데이터를 읽고 저장할 수 있어야한다. 이 최소한의 기능이 최대한의 호환성을 보장할 것이다.

`Timing Clock과 `Song Pointer를 쓰는 `SMPTE 싱크로나이저와 컴퓨터가 있는 미디 시스템 안에서, `템포맵들(`which describe the tempo throughout the track, and may also include time signature information, so that the bar number may be derived)은 일반적으로 컴퓨터에서 생성된다. `싱크로나이저와 함께 쓰려면 우선 컴퓨터에서 옮겨야 한다. 빠르기 정보가 첫 MTrk 청크에 저장돼 있어야 `싱크로나이저가 미디파일에서 이 정보를 쉽게 뽑아낸다. ★0형식 파일에서 빠르기는 트랙에 흩어져 있을 것이고 `템포맵은 끼어드는 이벤트들을 무시해야 한다. ★1형식 파일에서, `템포맵은 반드시 첫 트랙으로서 저장돼야 한다. 1형식을 쓸 수 있는 게 아닌 이상, 템포맵을 읽는 이에게 친절하려면, 템포만으로 0형식 파일을 만드는 기능을 사용자에게 제공하라.

모든 미디파일은 빠르기와 박자표를 명시해야 한다. 하지 않으면 분당 120박에 4분의4박자로 간주된다. ★0형식에서 이 메타이벤트들은 적어도 다중채널 트랙 한 개의 시작부분에 발생해야 한다. ★1형식에서 이 메타이벤트들은 첫 트랙에 있어야 한다. ★2형식에서, 시간적으로 독립적인 각 패턴들은 적어도 초기 박자표와 빠르기 정보를 갖고있어야 한다. ※`이벤트가 (모두) 트랙 첫부분에 있어야 한단 말인지, 첫부분에 이벤트가 있어야 하(고 그 뒤에도 있어도 된)다는 말인지 모르겠다. 아무튼~~ 우리 한국말은 "이성적이고 똑부러지는"데 영어는~ "감정적이고 문맥에 의존"… 궁시렁 궁시렁.

`We may decide to define other format IDs to support other structures. A program encountering an unknown format ID may still read other MTrk chunks it finds from the file, as format 1 or 2, if its user can make sense of them and arrange them into some other structure if appropriate. Also, more parameters may be added to the MThd chunk in the future: it is important to read and honor the length, even if it is longer than 6.