📄 dmusicf.h
字号:
/* values for dwChord field of DMUS_IO_PERS_SIGNPOST */
/* DMUS_SIGNPOSTF_ flags are also used in templates (DMUS_IO_SIGNPOST) */
#define DMUS_SIGNPOSTF_A 1
#define DMUS_SIGNPOSTF_B 2
#define DMUS_SIGNPOSTF_C 4
#define DMUS_SIGNPOSTF_D 8
#define DMUS_SIGNPOSTF_E 0x10
#define DMUS_SIGNPOSTF_F 0x20
#define DMUS_SIGNPOSTF_LETTER (DMUS_SIGNPOSTF_A | DMUS_SIGNPOSTF_B | DMUS_SIGNPOSTF_C | DMUS_SIGNPOSTF_D | DMUS_SIGNPOSTF_E | DMUS_SIGNPOSTF_F)
#define DMUS_SIGNPOSTF_1 0x100
#define DMUS_SIGNPOSTF_2 0x200
#define DMUS_SIGNPOSTF_3 0x400
#define DMUS_SIGNPOSTF_4 0x800
#define DMUS_SIGNPOSTF_5 0x1000
#define DMUS_SIGNPOSTF_6 0x2000
#define DMUS_SIGNPOSTF_7 0x4000
#define DMUS_SIGNPOSTF_ROOT (DMUS_SIGNPOSTF_1 | DMUS_SIGNPOSTF_2 | DMUS_SIGNPOSTF_3 | DMUS_SIGNPOSTF_4 | DMUS_SIGNPOSTF_5 | DMUS_SIGNPOSTF_6 | DMUS_SIGNPOSTF_7)
#define DMUS_SIGNPOSTF_CADENCE 0x8000
/* values for dwFlags field of DMUS_IO_CHORDMAP */
#define DMUS_CHORDMAPF_VERSION8 1 /* Chordmap is version 8 or above. */
/* values for dwChord field of DMUS_IO_PERS_SIGNPOST */
#define DMUS_SPOSTCADENCEF_1 2 /* Use the first cadence chord. */
#define DMUS_SPOSTCADENCEF_2 4 /* Use the second cadence chord. */
/* run time data structs */
typedef struct _DMUS_IO_CHORDMAP
{
WCHAR wszLoadName[20];
DWORD dwScalePattern;
DWORD dwFlags; /* Various flags. Only lower 16 bits are significant. */
} DMUS_IO_CHORDMAP;
typedef struct _DMUS_IO_CHORDMAP_SUBCHORD
{
DWORD dwChordPattern;
DWORD dwScalePattern;
DWORD dwInvertPattern;
BYTE bChordRoot;
BYTE bScaleRoot;
WORD wCFlags;
DWORD dwLevels; /* parts or which subchord levels this chord supports */
} DMUS_IO_CHORDMAP_SUBCHORD;
/* Legacy name... */
typedef DMUS_IO_CHORDMAP_SUBCHORD DMUS_IO_PERS_SUBCHORD;
typedef struct _DMUS_IO_CHORDENTRY
{
DWORD dwFlags;
WORD wConnectionID; /* replaces runtime "pointer to this" */
} DMUS_IO_CHORDENTRY;
typedef struct _DMUS_IO_NEXTCHORD
{
DWORD dwFlags;
WORD nWeight;
WORD wMinBeats;
WORD wMaxBeats;
WORD wConnectionID; /* points to an ioChordEntry */
} DMUS_IO_NEXTCHORD;
typedef struct _DMUS_IO_CHORDMAP_SIGNPOST
{
DWORD dwChords; /* 1bit per group */
DWORD dwFlags;
} DMUS_IO_CHORDMAP_SIGNPOST;
/* Legacy name... */
typedef DMUS_IO_CHORDMAP_SIGNPOST DMUS_IO_PERS_SIGNPOST;
/*
RIFF
(
'DMPR'
<perh-ck> // Chord map header chunk
[<guid-ck>] // guid chunk
[<vers-ck>] // version chunk (two DWORDS)
[<UNFO-list>] // Unfo chunk
<chdt-ck> // subchord database
<chpl-list> // chord palette
<cmap-list> // chord map
<spsq-list> // signpost list
)
<cmap-list> ::= LIST('cmap' <choe-list> )
<choe-list> ::= LIST('choe'
<cheh-ck> // chord entry data
<chrd-list> // chord definition
<ncsq-ck> // connecting(next) chords
)
<chrd-list> ::= LIST('chrd'
<INAM-ck> // name of chord in wide char format
<sbcn-ck> // list of subchords composing chord
)
<chpl-list> ::= LIST('chpl'
<chrd-list> ... // chord definition
)
<spsq-list> ::== LIST('spsq' <spst-list> ... )
<spst-list> ::= LIST('spst'
<spsh-ck>
<chrd-list>
[<cade-list>]
)
<cade-list> ::= LIST('cade' <chrd-list> ...)
<perh-ck> ::= perh(<DMUS_IO_CHORDMAP>)
<chdt-ck> ::= chdt(<cbChordSize::WORD>
<DMUS_IO_PERS_SUBCHORD> ... )
<cheh-ck> ::= cheh(<DMUS_IO_CHORDENTRY>)
<sbcn-ck> ::= sbcn(<cSubChordID:WORD> ...)
<ncsq-ck> ::= ncsq(<wNextChordSize:WORD>
<DMUS_IO_NEXTCHORD>...)
<spsh-ck> ::= spsh(<DMUS_IO_PERS_SIGNPOST>)
*/
/* File io for DirectMusic Script object */
/* RIFF ids: */
#define DMUS_FOURCC_SCRIPT_FORM mmioFOURCC('D','M','S','C')
#define DMUS_FOURCC_SCRIPT_CHUNK mmioFOURCC('s','c','h','d')
#define DMUS_FOURCC_SCRIPTVERSION_CHUNK mmioFOURCC('s','c','v','e')
#define DMUS_FOURCC_SCRIPTLANGUAGE_CHUNK mmioFOURCC('s','c','l','a')
#define DMUS_FOURCC_SCRIPTSOURCE_CHUNK mmioFOURCC('s','c','s','r')
/* io structures:*/
typedef struct _DMUS_IO_SCRIPT_HEADER
{
DWORD dwFlags; /* DMUS_SCRIPTIOF_ flags */
} DMUS_IO_SCRIPT_HEADER;
#define DMUS_SCRIPTIOF_LOAD_ALL_CONTENT (1 << 0)
/* If set, when the script loads it will also load all the content in its container. */
#define DMUS_SCRIPTIOF_DOWNLOAD_ALL_SEGMENTS (1 << 1)
/* 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;
/* DX6 time signature track
'tims'
(
//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -