RIFF について
RIFF ファイルの基本的な構成単位は "チャンク" である。チャンクは、データの論理的な単位である。各チャンクには、次のフィールドが含まれている。
- チャンク識別子を表す 4 文字のコード (FOURCC)。慣習的に、チャンク タイプの登録には大文字を使い、それ以外では小文字を使う。
- チャンクのデータ メンバのサイズを指定する DWORD 値。
- データ。
他のチャンクに含まれているチャンクを、"サブチャンク" と呼ぶ。サブチャンクを含むことができるチャンクは、チャンク識別子が RIFF または LIST のチャンクだけである。
ファイルの最初のチャンクは、RIFF でなければならない。ファイル内のその他のチャンクはすべて、このチャンクのサブチャンクとなる。RIFF チャンクは、形式 (form) とも呼ばれる。
LIST チャンクは、サブチャンクをグループ化したものである。このようなサブチャンクの中には繰り返し現れるものがあるが、LIST は配列ではない。用語が紛らわしいこともある。たとえば、<part-list> というラベルの付いたチャンクは、パートのリストのようだが、実際は、"パート" チャンクの要素のリストであり、1 つのパートを示している。
RIFF チャンクでは、データ フィールドの最初の 4 バイトに追加フィールドが含まれる。この追加フィールドでは、チャンクの形式タイプが示される。形式タイプは、ファイルに格納されるデータの形式を示す 4 文字のコードである。たとえば、DirectMusic のスタイルの形式タイプは DMST である。
LIST チャンクにも、データ フィールドの最初の 4 バイトに追加フィールドがある。このフィールドには、フィールドの "リスト タイプ" が含まれる。リスト タイプは、リストの内容を示す 4 文字のコードである。たとえば、DirectMusic のスタイルとしてリスト タイプが "part" の LIST チャンクがあり、パフォーマンスの特定のパート (音色トラック) に関するデータが含まれている。
注 DirectMusic ファイルで使われるすべての FOURCC コードには、対応するマクロが Dmusicf.h に用意されている。たとえば、DMST の FOURCC は、DMUS_FOURCC_STYLE_FORM マクロによって返される。
一般的な RIFF ファイルの詳細については、Platform SDK ドキュメントの「Resource Interchange File Format Services」を参照すること。