📄 dmusicf.h
字号:
// <prrf-list>
LIST
(
'prrf'
// some number of <DMRF>
)
*/
/* Chord and command file formats */
#define DMUS_FOURCC_CHORDTRACK_LIST mmioFOURCC('c','o','r','d')
#define DMUS_FOURCC_CHORDTRACKHEADER_CHUNK mmioFOURCC('c','r','d','h')
#define DMUS_FOURCC_CHORDTRACKBODY_CHUNK mmioFOURCC('c','r','d','b')
#define DMUS_FOURCC_COMMANDTRACK_CHUNK mmioFOURCC('c','m','n','d')
typedef struct _DMUS_IO_CHORD
{
WCHAR wszName[16]; /* Name of the chord */
MUSIC_TIME mtTime; /* Time of this chord */
WORD wMeasure; /* Measure this falls on */
BYTE bBeat; /* Beat this falls on */
} DMUS_IO_CHORD;
typedef struct _DMUS_IO_SUBCHORD
{
DWORD dwChordPattern; /* Notes in the subchord */
DWORD dwScalePattern; /* Notes in the scale */
DWORD dwInversionPoints; /* Where inversions can occur */
DWORD dwLevels; /* Which levels are supported by this subchord */
BYTE bChordRoot; /* Root of the subchord */
BYTE bScaleRoot; /* Root of the scale */
} DMUS_IO_SUBCHORD;
typedef struct _DMUS_IO_COMMAND
{
MUSIC_TIME mtTime; /* Time of this command */
WORD wMeasure; /* Measure this falls on */
BYTE bBeat; /* Beat this falls on */
BYTE bCommand; /* Command type (see #defines below) */
BYTE bGrooveLevel; /* Groove level (0 if command is not a groove) */
BYTE bGrooveRange; /* Groove range */
} DMUS_IO_COMMAND;
/*
// <cord-list>
LIST
(
'cord'
<crdh-ck>
<crdb-ck> // Chord body chunk
)
// <crdh-ck>
crdh
(
// Scale: dword (upper 8 bits for root, lower 24 for scale)
)
// <crdb-ck>
crdb
(
// sizeof DMUS_IO_CHORD:dword
<DMUS_IO_CHORD>
// # of DMUS_IO_SUBCHORDS:dword
// sizeof DMUS_IO_SUBCHORDS:dword
// a number of <DMUS_IO_SUBCHORD>
)
// <cmnd-list>
'cmnd'
(
//sizeof DMUS_IO_COMMAND: DWORD
<DMUS_IO_COMMAND>...
)
*/
/* File io for DirectMusic Tool and ToolGraph objects
*/
/* RIFF ids: */
#define DMUS_FOURCC_TOOLGRAPH_FORM mmioFOURCC('D','M','T','G')
#define DMUS_FOURCC_TOOL_LIST mmioFOURCC('t','o','l','l')
#define DMUS_FOURCC_TOOL_FORM mmioFOURCC('D','M','T','L')
#define DMUS_FOURCC_TOOL_CHUNK mmioFOURCC('t','o','l','h')
/* io structures: */
typedef struct _DMUS_IO_TOOL_HEADER
{
GUID guidClassID; /* Class id of tool. */
long lIndex; /* Position in graph. */
DWORD cPChannels; /* Number of items in channels array. */
FOURCC ckid; /* chunk ID of tool's data chunk if 0 fccType valid. */
FOURCC fccType; /* list type if NULL ckid valid. */
DWORD dwPChannels[1]; /* Array of PChannels, size determined by cPChannels. */
} DMUS_IO_TOOL_HEADER;
/*
RIFF
(
'DMTG' // DirectMusic ToolGraph chunk
[<guid-ck>] // GUID for ToolGraph
[<vers-ck>] // Optional version info
[<UNFO-list>] // Name, author, copyright info., comments
<toll-list> // List of Tools
)
// <guid-ck>
'guid'
(
<GUID>
)
// <vers-ck>
vers
(
<DMUS_IO_VERSION>
)
// <toll-list>
LIST
(
'toll' // List of tools
<DMTL-form>... // Each tool is encapsulated in a RIFF chunk
)
// <DMTL-form> // Tools can be embedded in a graph or stored as separate files.
RIFF
(
'DMTL'
<tolh-ck>
[<guid-ck>] // Optional GUID for tool object instance (not to be confused with Class id in track header)
[<vers-ck>] // Optional version info
[<UNFO-list>] // Optional name, author, copyright info., comments
[<data>] // Tool data. Must be a RIFF readable chunk.
)
// <tolh-ck> // Tool header chunk
(
'tolh'
<DMUS_IO_TOOL_HEADER> // Tool header
)
*/
/* File io for DirectMusic Band Track object */
/* RIFF ids: */
#define DMUS_FOURCC_BANDTRACK_FORM mmioFOURCC('D','M','B','T')
#define DMUS_FOURCC_BANDTRACK_CHUNK mmioFOURCC('b','d','t','h')
#define DMUS_FOURCC_BANDS_LIST mmioFOURCC('l','b','d','l')
#define DMUS_FOURCC_BAND_LIST mmioFOURCC('l','b','n','d')
#define DMUS_FOURCC_BANDITEM_CHUNK mmioFOURCC('b','d','i','h')
/* io structures */
typedef struct _DMUS_IO_BAND_TRACK_HEADER
{
BOOL bAutoDownload; /* Determines if Auto-Download is enabled. */
} DMUS_IO_BAND_TRACK_HEADER;
typedef struct _DMUS_IO_BAND_ITEM_HEADER
{
MUSIC_TIME lBandTime; /* Position in track list. */
} DMUS_IO_BAND_ITEM_HEADER;
/*
RIFF
(
'DMBT' // DirectMusic Band Track form-type
[<bdth-ck>] // Band track header
[<guid-ck>] // GUID for band track
[<vers-ck>] // Optional version info
[<UNFO-list>] // Name, author, copyright info., comments
<lbdl-list> // List of Band Lists
)
// <bnth-ck>
'bdth'
(
<DMUS_IO_BAND_TRACK_HEADER>
)
// <guid-ck>
'guid'
(
<GUID>
)
// <vers-ck>
vers
(
<DMUS_IO_VERSION>
)
// <lbdl-list>
LIST
(
'lbdl' // List of bands
<lbnd-list> // Each band is encapsulated in a list
)
// <lbnd-list>
LIST
(
'lbnd'
<bdih-ck>
<DMBD-form> // Band
)
// <bdih-ck> // band item header
(
<DMUS_IO_BAND_ITEM_HEADER> // Band item header
)
*/
/* File io for DirectMusic Band object
*/
/* RIFF ids: */
#define DMUS_FOURCC_BAND_FORM mmioFOURCC('D','M','B','D')
#define DMUS_FOURCC_INSTRUMENTS_LIST mmioFOURCC('l','b','i','l')
#define DMUS_FOURCC_INSTRUMENT_LIST mmioFOURCC('l','b','i','n')
#define DMUS_FOURCC_INSTRUMENT_CHUNK mmioFOURCC('b','i','n','s')
/* Flags for DMUS_IO_INSTRUMENT
*/
#define DMUS_IO_INST_PATCH (1 << 0) /* dwPatch is valid. */
#define DMUS_IO_INST_BANKSELECT (1 << 1) /* dwPatch contains a valid Bank Select MSB and LSB part */
#define DMUS_IO_INST_ASSIGN_PATCH (1 << 3) /* dwAssignPatch is valid */
#define DMUS_IO_INST_NOTERANGES (1 << 4) /* dwNoteRanges is valid */
#define DMUS_IO_INST_PAN (1 << 5) /* bPan is valid */
#define DMUS_IO_INST_VOLUME (1 << 6 ) /* bVolume is valid */
#define DMUS_IO_INST_TRANSPOSE (1 << 7) /* nTranspose is valid */
#define DMUS_IO_INST_GM (1 << 8) /* Instrument is from GM collection */
#define DMUS_IO_INST_GS (1 << 9) /* Instrument is from GS collection */
#define DMUS_IO_INST_XG (1 << 10) /* Instrument is from XG collection */
#define DMUS_IO_INST_CHANNEL_PRIORITY (1 << 11) /* dwChannelPriority is valid */
#define DMUS_IO_INST_USE_DEFAULT_GM_SET (1 << 12) /* Always use the default GM set for this patch, */
/* don't rely on the synth caps stating GM or GS in hardware. */
/* io structures */
typedef struct _DMUS_IO_INSTRUMENT
{
DWORD dwPatch; /* MSB, LSB and Program change to define instrument */
DWORD dwAssignPatch; /* MSB, LSB and Program change to assign to instrument when downloading */
DWORD dwNoteRanges[4]; /* 128 bits; one for each MIDI note instrument needs to able to play */
DWORD dwPChannel; /* PChannel instrument plays on */
DWORD dwFlags; /* DMUS_IO_INST_ flags */
BYTE bPan; /* Pan for instrument */
BYTE bVolume; /* Volume for instrument */
short nTranspose; /* Number of semitones to transpose notes */
DWORD dwChannelPriority; /* Channel priority */
} DMUS_IO_INSTRUMENT;
/*
// <DMBD-form> bands can be embedded in other forms
RIFF
(
'DMBD' // DirectMusic Band chunk
[<guid-ck>] // GUID for band
[<vers-ck>] // Optional version info
[<UNFO-list>] // Name, author, copyright info., comments
<lbil-list> // List of Instruments
)
// <guid-ck>
'guid'
(
<GUID>
)
// <vers-ck>
vers
(
<DMUS_IO_VERSION>
)
// <lbil-list>
LIST
(
'lbil' // List of instruments
<lbin-list> // Each instrument is encapsulated in a list
)
// <lbin-list>
LIST
(
'lbin'
<bins-ck>
[<DMRF-list>] // Optional reference to DLS Collection file.
)
// <bins-ck> // Instrument chunk
(
'bins'
<DMUS_IO_INSTRUMENT> // Instrument header
)
*/
/* File io for DirectMusic Segment object */
/* RIFF ids: */
#define DMUS_FOURCC_SEGMENT_FORM mmioFOURCC('D','M','S','G')
#define DMUS_FOURCC_SEGMENT_CHUNK mmioFOURCC('s','e','g','h')
#define DMUS_FOURCC_TRACK_LIST mmioFOURCC('t','r','k','l')
#define DMUS_FOURCC_TRACK_FORM mmioFOURCC('D','M','T','K')
#define DMUS_FOURCC_TRACK_CHUNK mmioFOURCC('t','r','k','h')
/* io structures:*/
typedef struct _DMUS_IO_SEGMENT_HEADER
{
DWORD dwRepeats; /* Number of repeats. By default, 0. */
MUSIC_TIME mtLength; /* Length, in music time. */
MUSIC_TIME mtPlayStart; /* Start of playback. By default, 0. */
MUSIC_TIME mtLoopStart; /* Start of looping portion. By default, 0. */
MUSIC_TIME mtLoopEnd; /* End of loop. Must be greater than dwPlayStart. By default equal to length. */
DWORD dwResolution; /* Default resolution. */
} DMUS_IO_SEGMENT_HEADER;
typedef struct _DMUS_IO_TRACK_HEADER
{
GUID guidClassID; /* Class id of track. */
DWORD dwPosition; /* Position in track list. */
DWORD dwGroup; /* Group bits for track. */
FOURCC ckid; /* chunk ID of track's data chunk if 0 fccType valid. */
FOURCC fccType; /* list type if NULL ckid valid */
} DMUS_IO_TRACK_HEADER;
/*
RIFF
(
'DMSG' // DirectMusic Segment chunk
<segh-ck> // Segment header chunk
[<guid-ck>] // GUID for segment
[<vers-ck>] // Optional version info
[<UNFO-list>] // Name, author, copyright info., comments
<trkl-list> // List of Tracks
[<DMTG-form>] // Optional ToolGraph
)
// <segh-ck>
'segh'
(
<DMUS_IO_SEGMENT_HEADER>
)
// <guid-ck>
'guid'
(
<GUID>
)
// <vers-ck>
vers
(
<DMUS_IO_VERSION>
)
// <trkl-list>
LIST
(
'trkl' // List of tracks
<DMTK-form>... // Each track is encapsulated in a RIFF chunk
)
// <DMTK-form> // Tracks can be embedded in a segment or stored as separate files.
RIFF
(
'DMTK'
<trkh-ck>
[<guid-ck>] // Optional GUID for track object instance (not to be confused with Class id in track header)
[<vers-ck>] // Optional version info
[<UNFO-list>] // Optional name, author, copyright info., comments
[<data>] // Track data. Must be a RIFF readable chunk.
)
// <trkh-ck> // Track header chunk
(
'trkh'
<DMUS_IO_TRACK_HEADER> // Track header
)
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -