Microsoft DirectX 8.1 (C++) |
The following notation shows the organization of the top-level chunk, or form, of a
RIFF( 'DMPR'
<perh-ck> // Chordmap header chunk
[ <guid-ck> ] // GUID chunk
[ <vers-ck> ] // Version chunk
[ <UNFO-list> ] // UNFO list
<chdt-ck> // Chord data chunk
<chpl-list> // Chord palette
<cmap-list> // Chord graph
<spsq-list> // Signpost list
)
<perh-ck>
This is the basic header information for a chordmap.
<perh-ck> -> perh( <DMUS_IO_CHORDMAP> )
<guid-ck>, <vers-ck>, <UNFO-list>
For information on these three chunks, see Common Chunks.
<chdt-ck>
<chdt-ck> -> chdt(
<WORD> // Size of DMUS_IO_CHORDMAP_SUBCHORD.
<DMUS_IO_CHORDMAP_SUBCHORD>...
)
The <chdt-ck> chunk contains a WORD indicating the number of bytes per subchord followed by an array of unique subchords. The subchord identifiers referred to in other parts of this file all correspond directly to an index into this array.
<chpl-list>
<chpl-list> -> LIST( 'chpl'
<chrd-list>...
)
This list contains the chord palette. There must be exactly 24 items in this list.
<chrd-list> -> LIST( 'chrd'
<UNAM-ck> // Chord name
<sbcn-ck> // Subchord indexes
)
This list contains the basic chord information. This information is simply the chord's name and a list of identifiers for the subchords it comprises.
<UNAM-ck> -> UNAM ( <WCHAR>... )
The UNAM chunk stores the name of the chord.
<sbcn-ck> -> sbcn( <WORD>... )
The "sbcn" chunk contains one or more subchord identifiers. These correspond directly to an index into the array found in <chdt-ck>. A maximum of four chords is supported.
<cmap-list>
This list contains the entire chord connection graph for the chordmap. The bulk of the data for the chordmap resides in this chunk.
<cmap-list> -> LIST( 'cmap'
<choe-list>...
)
Each list contains data for a single entry in the chord graph, along with pointers to all the chords that can occur next in the chord graph.
<choe-list> -> LIST( 'choe'
<cheh-ck> // Chord entry data.
<chrd-list> // Chord data; see above.
<ncsq-ck> // Next chord list.
)
<cheh-ck> -> cheh( <DMUS_IO_CHORDENTRY> )
This is the chord entry header. The identifier in the structure is the identifier for the chord connection graph, not a subchord identifier.
<ncsq-ck> -> ncsq (
<WORD> // Size of DMUS_IO_NEXTCHORD.
<DMUS_IO_NEXTCHORD>...
)
The "ncsq" chunk contains data that connects one chord in the connection graph to another. Each chord in the connection graph is represented by a 16-bit identifier.
<spsq-list>
This chunk contains data for each of the signposts.
<spsq-list> -> LIST( 'spsq'
<spst-list>...
)
The <spst-list> contains data for a single signpost, consisting of a header, chord information, and optional cadence chords.
<spst-list> -> LIST( 'spst'
<spsh-ck>
<chrd-list> // Chord data
[ <cade-list> ] // Cadence chords
)
The <spsh-ck> contains the signpost data.
<spsh-ck> -> spsh( <DMUS_IO_CHORDMAP_SIGNPOST> )
For <chrd-list>, see <chpl-list>, described previously.
The <cade-list> chunk contains the chord information for cadence chords. Support for up to two cadence chords in this list is provided. Any additional chords are ignored.
<cade-list> -> LIST( 'cade'
<chrd-list>...
)