📄 dmusicf.h
字号:
/* If set and LOAD_ALL_CONTENT is also set, when the script initializes it will also download all the segments in its container.
If set and LOAD_ALL_CONTENT is not set, when the script calls segment.Load on a segment then the segment will also be downloaded.
If not set, the script must manually download and unload by calling segment.DownloadSoundData and segment.UnloadSoundData. */
/*
RIFF
(
'DMSC' // DirectMusic Script chunk
<schd-ck> // Script header chunk
[<guid-ck>] // GUID for script
[<vers-ck>] // Optional version info
[<UNFO-list>] // Name, author, copyright info., comments
<scve-ck> // Version of DirectMusic this script was authored to run against
<DMCN-form> // Container of content referenced by the script.
<scla-ck> // ActiveX scripting language in which the script is written
<scsr-ck> or <DMRF> // The script's source code.
// If scsr-ck, the source is embedding in the chunk.
// If DMRF, it is a reference of where to find a text file with the source.
// Class id (guidClassID in DMUS_IO_REFERENCE) must be GUID_NULL because
// this text file is not a DirectMusic object in its own right.
)
// <schd-ck>
'schd'
(
<DMUS_FOURCC_SCRIPT_CHUNK>
)
// <guid-ck>
'guid'
(
<GUID>
)
// <vers-ck>
vers
(
<DMUS_IO_VERSION>
)
// <scve-ck>
scve
(
<DMUS_IO_VERSION>
)
'scla'
(
// Language name, stored as NULL terminated string of WCHARs
)
'scsr'
(
// Source code, stored as NULL terminated string of WCHARs
)
*/
/* Signpost tracks */
#define DMUS_FOURCC_SIGNPOST_TRACK_CHUNK mmioFOURCC( 's', 'g', 'n', 'p' )
typedef struct _DMUS_IO_SIGNPOST
{
MUSIC_TIME mtTime;
DWORD dwChords;
WORD wMeasure;
} DMUS_IO_SIGNPOST;
/*
// <sgnp-list>
'sgnp'
(
//sizeof DMUS_IO_SIGNPOST: DWORD
<DMUS_IO_SIGNPOST>...
)
*/
#define DMUS_FOURCC_MUTE_CHUNK mmioFOURCC('m','u','t','e')
typedef struct _DMUS_IO_MUTE
{
MUSIC_TIME mtTime;
DWORD dwPChannel;
DWORD dwPChannelMap;
} DMUS_IO_MUTE;
/*
// <mute-list>
'mute'
(
//sizeof DMUS_IO_MUTE:DWORD
<DMUS_IO_MUTE>...
)
*/
/* Used for both style and chord map tracks */
#define DMUS_FOURCC_TIME_STAMP_CHUNK mmioFOURCC('s', 't', 'm', 'p')
/* Style tracks */
#define DMUS_FOURCC_STYLE_TRACK_LIST mmioFOURCC('s', 't', 't', 'r')
#define DMUS_FOURCC_STYLE_REF_LIST mmioFOURCC('s', 't', 'r', 'f')
/*
// <sttr-list>
LIST('sttr'
(
<strf-list>... // Array of Style references
)
// <strf-list>
LIST('strf'
(
<stmp-ck>
<DMRF>
)
// <stmp-ck>
'stmp'
(
// time:DWORD
)
*/
/* Chord map tracks */
#define DMUS_FOURCC_PERS_TRACK_LIST mmioFOURCC('p', 'f', 't', 'r')
#define DMUS_FOURCC_PERS_REF_LIST mmioFOURCC('p', 'f', 'r', 'f')
/*
// <pftr-list>
LIST('pftr'
(
<pfrf-list>... // Array of Chord map references
)
// <pfrf-list>
LIST('pfrf'
(
<stmp-ck>
<DMRF>
)
// <stmp-ck>
'stmp'
(
// time:DWORD
)
*/
#define DMUS_FOURCC_TEMPO_TRACK mmioFOURCC('t','e','t','r')
/*
// tempo array
'tetr'
(
// sizeof DMUS_IO_TEMPO_ITEM: DWORD
<DMUS_IO_TEMPO_ITEM>...
)
*/
#define DMUS_FOURCC_SEQ_TRACK mmioFOURCC('s','e','q','t')
#define DMUS_FOURCC_SEQ_LIST mmioFOURCC('e','v','t','l')
#define DMUS_FOURCC_CURVE_LIST mmioFOURCC('c','u','r','l')
/*
// sequence track
'seqt'
(
// sequence array
'evtl'
(
// sizeof DMUS_IO_SEQ_ITEM: DWORD
<DMUS_IO_SEQ_ITEM>...
)
// curve array
'curl'
(
// sizeof DMUS_IO_CURVE_ITEM: DWORD
<DMUS_IO_CURVE_ITEM>...
)
)
*/
#define DMUS_FOURCC_SYSEX_TRACK mmioFOURCC('s','y','e','x')
/*
// sysex track
'syex'
(
{
<DMUS_IO_SYSEX_ITEM>
<BYTE>... // Array of bytes, length defined in the DMUS_IO_SYSEXITEM structure
}...
)
*/
#define DMUS_FOURCC_TIMESIGNATURE_TRACK mmioFOURCC('t','i','m','s')
typedef struct _DMUS_IO_TIMESIGNATURE_ITEM
{
MUSIC_TIME lTime;
BYTE bBeatsPerMeasure; /* beats per measure (top of time sig) */
BYTE bBeat; /* what note receives the beat (bottom of time sig.) */
/* we can assume that 0 means 256th note */
WORD wGridsPerBeat; /* grids per beat */
} DMUS_IO_TIMESIGNATURE_ITEM;
/* DirectX6 time signature track
'tims'
(
// size of DMUS_IO_TIMESIGNATURE_ITEM : DWORD
<DMUS_IO_TIMESIGNATURE_ITEM>...
)
*/
/* DirectX8 Time signature track. The track has been updated from DirectX7 to support a list of
RIFF chunks. This will allow the time signature track to expand in the future.
*/
#define DMUS_FOURCC_TIMESIGTRACK_LIST mmioFOURCC('T','I','M','S')
#define DMUS_FOURCC_TIMESIG_CHUNK DMUS_FOURCC_TIMESIGNATURE_TRACK
/*
LIST
(
'TIMS' // Time Signature Track list-type
<tims-ck> // Chunk containing an array of time signatures
)
'tims'
(
// size of DMUS_IO_TIMESIGNATURE_ITEM : DWORD
<DMUS_IO_TIMESIGNATURE_ITEM>...
)
*/
/* DirectX8 Marker track. This is used to store valid start points and other
flow control parameters that may come later. For example, if we want
to implement more sophisticated looping and branching constructs, they
would live in this track.
*/
#define DMUS_FOURCC_MARKERTRACK_LIST mmioFOURCC('M','A','R','K')
#define DMUS_FOURCC_VALIDSTART_CHUNK mmioFOURCC('v','a','l','s')
#define DMUS_FOURCC_PLAYMARKER_CHUNK mmioFOURCC('p','l','a','y')
/* io structures */
typedef struct _DMUS_IO_VALID_START
{
MUSIC_TIME mtTime; /* Time of a legal start. */
} DMUS_IO_VALID_START;
typedef struct _DMUS_IO_PLAY_MARKER
{
MUSIC_TIME mtTime; /* Time of a next legal play point marker. */
} DMUS_IO_PLAY_MARKER;
/*
LIST
(
'MARK' // Marker Track list-type
[<vals-ck>] // Chunk containing an array of start points
[<play-ck>] // Chunk containing an array of play start markers
)
'vals'
(
// size of DMUS_IO_VALID_START : DWORD
<DMUS_IO_VALID_START>...
)
'play'
(
// size of DMUS_IO_PLAY_MARKER : DWORD
<DMUS_IO_PLAY_MARKER>...
)
*/
/* segment trigger tracks */
/* RIFF ids: */
#define DMUS_FOURCC_SEGTRACK_LIST mmioFOURCC('s','e','g','t')
#define DMUS_FOURCC_SEGTRACK_CHUNK mmioFOURCC('s','g','t','h')
#define DMUS_FOURCC_SEGMENTS_LIST mmioFOURCC('l','s','g','l')
#define DMUS_FOURCC_SEGMENT_LIST mmioFOURCC('l','s','e','g')
#define DMUS_FOURCC_SEGMENTITEM_CHUNK mmioFOURCC('s','g','i','h')
#define DMUS_FOURCC_SEGMENTITEMNAME_CHUNK mmioFOURCC('s','n','a','m')
/* io structures */
typedef struct _DMUS_IO_SEGMENT_TRACK_HEADER
{
DWORD dwFlags; /* Reserved leave as 0. */
} DMUS_IO_SEGMENT_TRACK_HEADER;
typedef struct _DMUS_IO_SEGMENT_ITEM_HEADER
{
MUSIC_TIME lTimeLogical; /* Position in track list. Time in the music with which the event is associated. */
MUSIC_TIME lTimePhysical; /* Precise time event will be triggered. Should be close to logical time. */
DWORD dwPlayFlags; /* Flags for PlaySegment(). */
DWORD dwFlags; /* Flags. */
} DMUS_IO_SEGMENT_ITEM_HEADER;
/* values for dwflags field of DMUS_IO_SEGMENT_ITEM_HEADER */
#define DMUS_SEGMENTTRACKF_MOTIF 1 /* interpret DMRF as link to style, and use snam as the name of a motif within the style */
/*
LIST
(
'segt' // DirectMusic Segment Trigger Track form-type
[<sgth-ck>] // Segment track header
<lsgl-list> // List of Segment Lists
)
// <sgth-ck>
'sgth'
(
<DMUS_IO_SEGMENT_TRACK_HEADER>
)
// <lsgl-list>
LIST
(
'lsgl' // Array of segments
<lseg-list>... // Each segment is encapsulated in a list (that way it can still be riff parsed.)
)
// <lseg-list>
LIST
(
'lseg'
<sgih-ck>
<DMRF-list> // Link to a segment or style file.
[<snam-ck>] // Name field. Used with DMUS_SEGMENTTRACKF_MOTIF flag.
)
// <sgih-ck> // segment item header
(
<DMUS_IO_SEGMENT_ITEM_HEADER> // Segment item header
)
// <snam-ck>
(
// Name, stored as NULL terminated string of WCHARs
)
*/
/* Script track. */
/* RIFF ids: */
#define DMUS_FOURCC_SCRIPTTRACK_LIST mmioFOURCC('s','c','r','t')
#define DMUS_FOURCC_SCRIPTTRACKEVENTS_LIST mmioFOURCC('s','c','r','l')
#define DMUS_FOURCC_SCRIPTTRACKEVENT_LIST mmioFOURCC('s','c','r','e')
#define DMUS_FOURCC_SCRIPTTRACKEVENTHEADER_CHUNK mmioFOURCC('s','c','r','h')
#define DMUS_FOURCC_SCRIPTTRACKEVENTNAME_CHUNK mmioFOURCC('s','c','r','n')
/* Flags for DMUS_IO_SCRIPTTRACK_TIMING
*/
#define DMUS_IO_SCRIPTTRACKF_PREPARE (1 << 0) /* Fire event in advance of time stamp, at Prepare time. This is the default because it leaves the script time to change the music happening at the target time. */
#define DMUS_IO_SCRIPTTRACKF_QUEUE (1 << 1) /* Fire event just before time stamp, at Queue time. */
#define DMUS_IO_SCRIPTTRACKF_ATTIME (1 << 2) /* Fire event right at the time stamp. */
typedef struct _DMUS_IO_SCRIPTTRACK_EVENTHEADER
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -