Microsoft DirectX 8.0 (C++)

ソング形式

DirectX 8.0 では実装されない。

次の表記法は、ソング ファイルの最上位レベルのチャンクの構成を示している。この形式は、コンテナ形式内に含めることもできる。

RIFF( 'DMSO'
    <sngh-ck>       // ソング ヘッダー チャンク
    [<guid-ck>]     // ソングの GUID
    [<vers-ck>]     // オプションのバージョン情報
    [<UNFO-list>]   // 名前、作者、著作権情報、コメント
    [<DMCN-form>]   // ファイルに埋め込まれたオブジェクトのコンテナ
    <segl-list>     // セグメント
    [<tlgl-list>]   // ツールグラフ
    [<DMAP-form>]   // すべてのセグメントが共有するオーディオパス
    <srsl-list>     // セグメント参照
)

<sngh-ck>

このチャンクには、ソングの基本的なヘッダー情報が含まれる。

<sngh-ck> -> sngh ( <DMUS_IO_SONG_HEADER> )

<guid-ck>、<vers-ck>、<UNFO-list>

共通のチャンク」を参照すること。

<DMCN-form>

コンテナ形式」を参照すること。

<segl-list>

<segl-list> -> LIST( 'segl'
    <ssgl-list>...
    )

ソング セグメント リストにはセグメントの配列が含まれ、それぞれの配列は、次のリストに記述される。

<ssgl-list> -> LIST( 'ssgl'    
    [<DMSG-form>]
    [<DMRF-list>] 
    )

このリストには、セグメント形式または参照リストのいずれかが含まれる。

<tlgl-list>

<tlgl-list> -> LIST( 'tlgl'
    <DMTG-form>...  
    )

ツールグラフ リストには、ツールグラフ形式の配列が含まれる。

<DMAP-form>

このチャンクは、ソングに含まれるすべてのセグメントが共有するオーディオパスを記述する。「オーディオパス形式」を参照すること。

<srsl-list>

ソング形式の最後のチャンクは、セグメント参照リストの配列であり、次のように構成される。

<srsl-list> -> LIST( 'srsl'
    <sgrl-list>...
    )

<sgrl-list> -> LIST( 'sgrl' 
    <sgrh-ck>       // セグメント参照ヘッダー
    <segh-ck>       // セグメント ヘッダー
    [<UNFO-list>]   // 名前、作者、著作権、コメント
    [<strh-ck>]     // セグメント トランジション チャンク
    [<trsl-list>]   // トラック参照
    )

このリストの先頭には、セグメント参照ヘッダーが付く。

<sgrh-ck> -> ( 'sgrh' <DMUS_IO_SEGREF_HEADER> )

次はセグメント ヘッダーである。<segh-ck> チャンクの構文については、「セグメント形式」を参照すること。

<UNFO-list> については、「共通のチャンク」を参照すること。

セグメント トランジション チャンクは、ほかのセグメントからこのセグメントへの有効なトランジションを指定する。構造は次のとおりである。

<strh-ck> -> ( strh
    <DMUS_IO_TRANSITION_DEF>    // デフォルトのトランジション
    <DMUS_IO_TRANSITION_DEF>...// 追加のトランジション
    )

セグメント参照リストの最後の部分には、トラック参照が含まれる。これは、複数セグメントのトラックからセグメントを作成するために使用される。

<trsl-list> -> LIST( 'trsl'
    <tkrl-list>...
    )

このリストには、トラック参照リストの配列が含まれる。各配列は、次のように構成される。

<tkrl-list> -> ( 'tkrl'
    <tkrh-ck>       // トラック参照ヘッダー チャンク
    <trkh-ck>       // トラック ヘッダー チャンク
    [<trkx-ck>]     // トラック フラグ
    )

このリストには 3 つのチャンクが含まれる。最初のチャンクには、トラックを格納するセグメントを識別するヘッダー構造体が含まれる。

tkrh-ck -> tkrh( <DMUS_IO_TRACKREF_HEADER> )

トラック参照リストの残りの 2 つのチャンクについては、「トラック形式」を参照すること。