SMF (Standard MIDI File) のファイルフォーマットの概要について解説します。
SMFはチャンクと呼ばれるブロックで構成されています。チャンクにはヘッダチャンクとトラックチャンクの2つがあります。
また、フォーマット0/1/2の3パターンがあり、ほとんどのMIDIファイルが、フォーマット0か1です。
フォーマット2については、よく分かりません💦(詳しい人、コメントお願いします)
ヘッダチャンク
ヘッダチャンクはMIDIファイルの先頭に必ず1つだけ存在しています。ヘッダチャンクを解析することで、どのフォーマットかがわかるようになっています。
トラックチャンク
フォーマット0の場合、トラックチャンクはヘッダチャンクに続き、1つだけ存在しています。(複数のチャネルが1つのトラックに集められている)
フォーマット1/2の場合は、トラックチャンクは複数存在します。(1つのチャネルにつき、1つのトラックがある)
※チャネルは、1つの楽器パートだと考えてOKだと思います。
フォーマットの全体像
![](https://captain-cocco.com/wp-content/uploads/2020/11/62998516173c880d2797d4b5d7313014-1.png)
こんな感じ。
コメント