Microsoft DirectX 8.1 (C++)

Style Form

The following notation shows the organization of the top-level chunk of a style file. This form can also be contained within a Container Form.

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

<styh-ck>

This chunk contains the basic header information for a style.

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

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

For information on these three chunks, see Common Chunks.

<part-list>

Each musical part in the style is described in a chunk with the following format.

<part-list> -> LIST('part'
  <prth-ck>   // Part header chunk
  [<UNFO-list>]
  [<note-ck>]   // Notes in part.
  [<crve-ck>]   // Curves in part.
  [<mrkr-ck>]   // Markers in part.
  [<rsln-ck>]   // Variation resolutions in part.
  [<anpn-ck>]   // Resolution anticipations in part.
  )

The part list includes a header, an optional UNFO chunk, and a list of elements, as shown in the following notation. (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 >...
  )
 
<mrkr-ck> -> mrkr(
  < DWORD > // Size of DMUS_IO_STYLEMARKER.
  < DMUS_IO_STYLEMARKER >...
  )
 
<rsln-ck> -> rsln(
  < DWORD > // Size of DMUS_IO_STYLERESOLUTION.
  < DMUS_IO_STYLERESOLUTION >...
  )

<anpn-ck> -> anpn(
  < DWORD > Size of DMUS_IO_STYLE_ANTICIPATION.
  < DMUS_IO_STYLE_ANTICIPATION >...
  )

<pttn-list>

Each pattern is described in a chunk with the following format.

<pttn-list> -> LIST( 'pttn'
  <ptnh-ck>   // Pattern header chunk.
  <rhtm-ck>   // List of rhythms for chord matching.
  [<UNFO-list>]
  [<mtfs-ck>]   // Motif settings chunk.
  [<DMBD-form>] // Band to be associated with the pattern 
                //   (for motifs).
  <pref-list>...  // Array of part reference Ids.
  )

The first chunk of the pattern list is a header:

<ptnh-ck> -> ptnh( <DMUS_IO_PATTERN> )

The second chunk is a rhythm list:

<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.

For the optional UNFO list, see Common Chunks.

The next chunk of the pattern list describes the motif settings:

<mtfs-ck> -> mtfs( <DMUS_IO_MOTIFSETTINGS> )
 

For the <DMBD-form> chunk of the pattern list, see Band Form.

The last chunk of the pattern list is a part reference list.

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

The only element is a part reference.

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

<DMBD-form>

The next chunk in the style form is a Band Form.

<prrf-list>

The final chunk contains an array of chordmap references:

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

For more information on <DMRF-list>, see Reference List.