Platform SDK: DirectX

Style Form

The following notation shows the organization of the top-level chunk of a style file:

RIFF( 'DMST'
    <styh-ck>       // Style header chunk
    <guid-ck>       // Unique identifier
    [<UNFO-list>]   // Name, author, copyright information, comments
    [<vers-ck>]     // Version chunk
    <part-list>...  // List of parts in the style, used by patterns
    <pttn-list>...  // List of patterns in the style
    <DMBD-form>...  // List of bands in the style
    [<motf-list>]   // List of motifs in the style
    [<prrf-list>]   // List of chord-map references in the style
)

The individual chunks and their subchunks are as follows:

<styh-ck> -> styh( <DMUS_IO_STYLE> )

This chunk contains the basic header information for a style. For the next three chunks, see Common Chunks.

Next, comes a chunk for each musical part in the style:

<part-list> -> LIST('part'
    <prth-ck>       // Part header chunk
    [<UNFO-list>]
    [<note-ck>]     // List of notes in the part
    [<crve-ck>]     // List of curves in the part
    )

The part list includes a header, an optional UNFO chunk, and a list of notes and curves, as shown in the following example. (For the UNFO list, see Common Chunks.)

<prth-ck> -> prth( <DMUS_IO_STYLEPART> )
 
<note-ck> -> note(
    < DWORD >  // Size of DMUS_IO_STYLENOTE
    < DMUS_IO_STYLENOTE >...
    )
 
<crve-ck> -> crve(
    < DWORD >  // Size of DMUS_IO_STYLECURVE
    < DMUS_IO_STYLECURVE >...
    )

After the part-list chunk comes the pattern-list chunk:

<pttn-list> -> LIST( 'pttn'
    <ptnh-ck>       // Pattern-header chunk
    <rhtm-ck>       // List of rhythms for chord matching
    [<UNFO-list>]
    [<mtfs-ck>]     // Motif settings chunk
    <pref-list>...  // List of part reference IDs
    )

The pattern list consists of the following subchunks. (For the optional UNFO list, see Common Chunks.)

<ptnh-ck> -> ptnh(
    < DMUS_IO_PATTERN >
    )
 
<rhtm-ck> -> rhtm(
    < DWORD >...  
    )

This chunk consists of an array of DWORDs, one for each measure, giving the rhythm pattern. For information on the arrangement of the bits, see the dwRhythmPattern member of DMUS_RHYTHM_PARAM.

<mtfs-ck> -> mtfs(
    < DMUS_IO_MOTIFSETTINGS >
    )
 
<pref-list> -> LIST( 'pref'
    <prfc-ck>   // Part reference chunk
    )

The "pref" chunk in turn consists of an array of part references:

<prfc-ck> -> prfc(
    < DMUS_IO_PARTREF >
    )

The last chunk in the style form is the list of chord-map references:

<prrf-list> -> LIST( 'prrf'
    <DMRF-list>...
    )

For more information on <DMRF-list>, see Common Chunks.