メタデータ定義のために一時バイナリ領域に読み込むファイルのフォーマット は、大きく分けて3つのチャンクから成り立っています。 第1チャンク:ヘッダー 第2チャンク:アロケーションテーブル 第3チャンク:実データ群 また、バイナリデータファイル全体のサイズは2ギガバイトまでです。上限を超 えるサイズの場合、演奏開始で読み込む際にエラーとなります。 第1チャンク詳細(原則32バイト) (1)文字列16バイト(終端なし固定サイズ):
当ファイルの認識用ヘッダー。次のように定義。
V3MML...20220622
ヘッダー確認は現状先頭10文字で行われます。
末尾8文字(20220622)はデータフォーマット番号で、
更新される可能性があります。 (2)整数4バイト(big endian):
ファイル先頭から第2チャンク先頭までのオフセット。
原則 $00000020 です。 (3)整数4バイト(big endian):
ファイル先頭から第3チャンク先頭までのオフセット。
第2チャンクでの定義数に応じて変化します。 (4)予約8バイト:
拡張用の予約領域。 第2チャンク詳細(サイズ可変) データアロケーション1個あたり16バイト定義。 アロケーション個数は(2)と(3)から算出。 データアロケーション1個あたりの詳細 (5)整数4バイト(big endian):
当アロケーションの開始位置。(3)からのオフセット。 (6)整数4バイト(big endian):
当アロケーションのバイト数。
バイト数が0の場合は未定義とみなします。
(サンプル数ではなく、バイト数であることに注意)
(7)予約4バイト:
拡張用の予約領域。 (8)文字列4バイト(終端なし固定サイズ):
当アロケーションの種別を表す文字列。
これはバインドされるファイルの拡張子で、
ドットで始まる4文字です。(例「.16l」) (8)における現在のサポート拡張子(8種類): .16l(いち・ろく・える) signed 16bit PCM、リトルエンディアン、モノラルデータです。 .16b(いち・ろく・びー) signed 16bit PCM、ビッグエンディアン、モノラルデータです。 .u08(ゆー・ぜろ・はち) unsigned 8bit PCM、モノラルデータです。 .s08(えす・ぜろ・はち) signed 8bit PCM、モノラルデータです。 .ayb(えー・わい・びー) YM2608互換 4bit ADPCM 、二ブルの順番は上位から下位、モノラルデータです。 .amb(えー・えむ・びー) OKI互換 4bit ADPCM 、二ブルの順番は上位から下位、モノラルデータです。 .aml(えー・えむ・える) OKI互換 4bit ADPCM 、二ブルの順番は下位から上位、モノラルデータです。 .dpc(でぃー・ぴー・しー) FC互換 DPCM 、上位ビットから下位ビット方向への1ビットずつの8ビット単 位、モノラルデータです。 第3チャンク詳細(サイズ可変) バイナリファイルの内容そのものが貼り付けられます。 各ファイル内容の開始位置は(5)、サイズ(バイト数)は(6)の通りです。