📄 dmusicf.h
字号:
)
// <coba-ck>
'coba'
(
// Alias, stored as NULL terminated string of WCHARs
)
// <cobh-ck>
'cobh'
(
<DMUS_IO_CONTAINED_OBJECT_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')
#define DMUS_FOURCC_TRACK_EXTRAS_CHUNK mmioFOURCC('t','r','k','x')
/* 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. Or, 0, indicating loop full segment. */
DWORD dwResolution; /* Default resolution. */
/* Following added for DX8: */
REFERENCE_TIME rtLength; /* Length, in reference time (overrides music time length.) */
DWORD dwFlags;
DWORD dwReserved; /* Reserved. */
} DMUS_IO_SEGMENT_HEADER;
#define DMUS_SEGIOF_REFLENGTH 1 /* Use the time in rtLength for the segment length. */
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. */
FOURCC fccType; /* list type if ckid is RIFF or LIST */
} DMUS_IO_TRACK_HEADER;
/* Additional parameters for the track header chunk, introduced in DX8 and
on, are stored in a separate chunk. */
typedef struct _DMUS_IO_TRACK_EXTRAS_HEADER
{
DWORD dwFlags; /* DX8 Added flags for control tracks. */
DWORD dwPriority; /* Priority for composition. */
} DMUS_IO_TRACK_EXTRAS_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
[<DMCN-form>] // Optional container of objects embedded in file. Must precede tracklist.
<trkl-list> // List of Tracks
[<DMTG-form>] // Optional ToolGraph
[<DMAP-form>] // Optional Audio Path
)
// <segh-ck>
'segh'
(
<DMUS_IO_SEGMENT_HEADER>
)
// <guid-ck>
'guid'
(
<GUID>
)
// <vers-ck>
vers
(
<DMUS_IO_VERSION>
)
// <trkl-list>
LIST
(
'trkl' // Array 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>
[<trkx-ck>] // Optional track flags.
[<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
)
// <trkx-ck> // Track flags chunk
(
'trkx'
<DMUS_IO_TRACK_EXTRAS_HEADER> // DX8 Track flags header
)
*/
/* File io for DirectMusic Song object */
/* Note: Song file format is not supported in DX8. */
/* RIFF ids: */
#define DMUS_FOURCC_SONG_FORM mmioFOURCC('D','M','S','O') /* Entire song. */
#define DMUS_FOURCC_SONG_CHUNK mmioFOURCC('s','n','g','h') /* Song header info. */
#define DMUS_FOURCC_SONGSEGMENTS_LIST mmioFOURCC('s','e','g','l') /* List of embedded segments. */
#define DMUS_FOURCC_SONGSEGMENT_LIST mmioFOURCC('s','s','g','l') /* Container for a segment or segment reference. */
#define DMUS_FOURCC_TOOLGRAPHS_LIST mmioFOURCC('t','l','g','l') /* List of embedded tool graphs. */
#define DMUS_FOURCC_SEGREFS_LIST mmioFOURCC('s','r','s','l') /* List of segment references. */
#define DMUS_FOURCC_SEGREF_LIST mmioFOURCC('s','g','r','l') /* Container for a segment reference. */
#define DMUS_FOURCC_SEGREF_CHUNK mmioFOURCC('s','g','r','h') /* Segment reference header. */
#define DMUS_FOURCC_SEGTRANS_CHUNK mmioFOURCC('s','t','r','h') /* Set of transitions to this segment. */
#define DMUS_FOURCC_TRACKREFS_LIST mmioFOURCC('t','r','s','l') /* Set of track references within the segment reference. */
#define DMUS_FOURCC_TRACKREF_LIST mmioFOURCC('t','k','r','l') /* Container for a track reference. */
#define DMUS_FOURCC_TRACKREF_CHUNK mmioFOURCC('t','k','r','h') /* Track reference header. */
/* io structures:*/
typedef struct _DMUS_IO_SONG_HEADER
{
DWORD dwFlags;
DWORD dwStartSegID; /* Id of the segment that starts playback. */
} DMUS_IO_SONG_HEADER;
typedef struct _DMUS_IO_SEGREF_HEADER
{
DWORD dwID; /* Each has a unique ID. Must be less than DMUS_SONG_MAXSEGID. */
DWORD dwSegmentID; /* Optional segment to link to. */
DWORD dwToolGraphID; /* Optional tool graph to use for processing. */
DWORD dwFlags; /* Various control flags. Currently reserved for future use. Must be 0. */
DWORD dwNextPlayID; /* ID of next segment, to chain segments into a song. */
} DMUS_IO_SEGREF_HEADER;
typedef struct _DMUS_IO_TRACKREF_HEADER
{
DWORD dwSegmentID; /* Which segment to find this in. */
DWORD dwFlags; /* Reference control flags. */
} DMUS_IO_TRACKREF_HEADER;
/* Transition definition chunk defines a transition, using an optional transition template
segment.
*/
typedef struct _DMUS_IO_TRANSITION_DEF
{
DWORD dwSegmentID; /* Segment the transition goes to. */
DWORD dwTransitionID; /* Template segment to use for the transition. */
DWORD dwPlayFlags; /* Flags to use for transition. */
} DMUS_IO_TRANSITION_DEF;
#define DMUS_SONG_MAXSEGID 0x7FFFFFFF /* Segment ids can not go higher than this. */
#define DMUS_SONG_ANYSEG 0x80000000 /* Special ID to indicate any segment. */
#define DMUS_SONG_NOSEG 0xFFFFFFFF /* Special ID to indicate no segment. */
#define DMUS_SONG_NOFROMSEG 0x80000001 /* Special ID for dwSegmentID to indicate transition from nothing (or outside the song) into this segment. */
/*
RIFF
(
'DMSO' // DirectMusic Song chunk
<sngh-ck> // Song header chunk
[<guid-ck>] // GUID for song
[<vers-ck>] // Optional version info
[<UNFO-list>] // Name, author, copyright info., comments
[<DMCN-form>] // Optional container of objects embedded in file. Must precede segment list.
<segl-list> // List of Segments
[<tlgl-list>] // Optional list of ToolGraphs
[<DMAP-form>] // Optional Audio Path - to be shared by all segments in song.
<srsl-list> // List of segment references.
)
// <sngh-ck>
'sngh'
(
<DMUS_IO_SONG_HEADER>
)
// <segl-list>
LIST
(
'segl' // Array of segments
<ssgl-list>... // Each segment is wrapped in this.
)
// <ssgl-list>
LIST
(
'ssgl' // Segment container.
[DMSG-form] // Each segment is either a full embedded segment RIFF form.
[DMRF-list] // Or a reference to an external segment.
)
// <tlgl-list>
LIST
(
'tlgl' // Array of toolgraphs
<DMTG-form>... // Each toolgraph is a full RIFF form.
)
// <srsl-list>
LIST
(
'srsl' // Array of segment references
<sgrl-list>... // Each segment reference is contained in a RIFF list.
)
// <sgrl-list> // Segment reference container.
LIST
(
'sgrl'
<sgrh-ck> // Segment reference header chunk.
<segh-ck> // Segment header chunk. Defines the segment.
<UNFO-list> // Name, author, etc. Primarily for name, though, which is required for Song->GetSegment().
[<strh-ck>] // Segment transition chunk. Defines how to do transitions from other segments.
[<trsl-list>] // List of track references, to create a segment from tracks in multiple segments.
)
// <sgrh-ck> // Segment reference header chunk
(
'sgrh'
<DMUS_IO_SEGREF_HEADER> // Segment reference header
)
// <strh-ck> // Segment transition chunk.
(
'strh'
<DMUS_IO_TRANSITION_DEF> // Default transition.
<DMUS_IO_TRANSITION_DEF>... // Additional transitions.
)
// <trsl-list> // Array of track references
(
'trsl'
<tkrl-list>... // Each track reference is multiple chunks in a tkrl list.
)
// <tkrl-list> // Track reference container
(
'tkrl'
<tkrh-ck> // Track reference header chunk.
<trkh-ck> // Normal track header chunk.
[<trkx-ck>] // Optional track flags.
)
// <tkrh-ck> // Track reference header chunk
(
'tkrh'
<DMUS_IO_TRACKREF_HEADER> // Track reference header
)
*/
/* File io for DirectMusic reference chunk.
This is used to embed a reference to an object.
*/
/* RIFF ids: */
#define DMUS_FOURCC_REF_LIST mmioFOURCC('D','M','R','F')
#define DMUS_FOURCC_REF_CHUNK mmioFOURCC('r','e','f','h')
#define DMUS_FOURCC_DATE_CHUNK mmioFOURCC('d','a','t','e')
#define DMUS_FOURCC_NAME_CHUNK mmioFOURCC('n','a','m','e')
#define DMUS_FOURCC_FILE_CHUNK mmioFOURCC('f','i','l','e')
typedef struct _DMUS_IO_REFERENCE
{
GUID guidClassID; /* Class id is always required. */
DWORD dwValidData; /* Flags. */
} DMUS_IO_REFERENCE;
/*
LIST
(
'DMRF' // DirectMusic Reference chunk
<refh-ck> // Reference header chunk
[<guid-ck>] // Optional object GUID.
[<date-ck>] // Optional file date.
[<name-ck>] // Optional name.
[<file-ck>] // Optional file name.
[<catg-ck>] // Optional category name.
[<vers-ck>] // Optional version info.
)
// <refh-ck>
'refh'
(
<DMUS_IO_REFERENCE>
)
// <guid-ck>
'guid'
(
<GUID>
)
// <date-ck>
date
(
<FILETIME>
)
// <name-ck>
name
(
// Name, stored as NULL terminated string of WCHARs
)
// <file-ck>
file
(
// File name, stored as NULL terminated string of WCHARs
)
// <catg-ck>
catg
(
// Category name, stored as NULL terminated string of WCHARs
)
// <vers-ck>
vers
(
<DMUS_IO_VERSION>
)
*/
/* Chord Maps */
/* runtime chunks */
#define DMUS_FOURCC_CHORDMAP_FORM mmioFOURCC('D','M','P','R')
#define DMUS_FOURCC_IOCHORDMAP_CHUNK mmioFOURCC('p','e','r','h')
#define DMUS_FOURCC_SUBCHORD_CHUNK mmioFOURCC('c','h','d','t')
#define DMUS_FOURCC_CHORDENTRY_CHUNK mmioFOURCC('c','h','e','h')
#define DMUS_FOURCC_SUBCHORDID_CHUNK mmioFOURCC('s','b','c','n')
#define DMUS_FOURCC_IONEXTCHORD_CHUNK mmioFOURCC('n','c','r','d')
#define DMUS_FOURCC_NEXTCHORDSEQ_CHUNK mmioFOURCC('n','c','s','q')
#define DMUS_FOURCC_IOSIGNPOST_CHUNK mmioFOURCC('s','p','s','h')
#define DMUS_FOURCC_CHORDNAME_CHUNK mmioFOURCC('I','N','A','M')
/* runtime list chunks */
#define DMUS_FOURCC_CHORDENTRY_LIST mmioFOURCC('c','h','o','e')
#define DMUS_FOURCC_CHORDMAP_LIST mmioFOURCC('c','m','a','p')
#define DMUS_FOURCC_CHORD_LIST mmioFOURCC('c','h','r','d')
#define DMUS_FOURCC_CHORDPALETTE_LIST mmioFOURCC('c','h','p','l')
#define DMUS_FOURCC_CADENCE_LIST mmioFOURCC('c','a','d','e')
#define DMUS_FOURCC_SIGNPOSTITEM_LIST mmioFOURCC('s','p','s','t')
#define DMUS_FOURCC_SIGNPOST_LIST mmioFOURCC('s','p','s','q')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -