📄 dmusici.h
字号:
typedef struct _DMUS_TRANSPOSE_PMSG
{
/* begin DMUS_PMSG_PART */
DMUS_PMSG_PART
/* end DMUS_PMSG_PART */
short nTranspose;
/* Following exists only under DX8 and on (check dwFlags for DMUS_PMSGF_DX8) */
WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.)*/
} DMUS_TRANSPOSE_PMSG;
/* DMUS_CHANNEL_PRIORITY_PMSG */
typedef struct _DMUS_CHANNEL_PRIORITY_PMSG
{
/* begin DMUS_PMSG_PART */
DMUS_PMSG_PART
/* end DMUS_PMSG_PART */
DWORD dwChannelPriority;
} DMUS_CHANNEL_PRIORITY_PMSG;
/* DMUS_TEMPO_PMSG */
typedef struct _DMUS_TEMPO_PMSG
{
/* begin DMUS_PMSG_PART */
DMUS_PMSG_PART
/* end DMUS_PMSG_PART */
double dblTempo; /* the tempo */
} DMUS_TEMPO_PMSG;
#define DMUS_TEMPO_MAX 1000
#define DMUS_TEMPO_MIN 1
#define DMUS_MASTERTEMPO_MAX 100.0f
#define DMUS_MASTERTEMPO_MIN 0.01f
/* DMUS_SYSEX_PMSG */
typedef struct _DMUS_SYSEX_PMSG
{
/* begin DMUS_PMSG_PART */
DMUS_PMSG_PART
/* end DMUS_PMSG_PART */
DWORD dwLen; /* length of the data */
BYTE abData[1]; /* array of data, length equal to dwLen */
} DMUS_SYSEX_PMSG;
/* DMUS_CURVE_PMSG */
typedef struct _DMUS_CURVE_PMSG
{
/* begin DMUS_PMSG_PART */
DMUS_PMSG_PART
/* end DMUS_PMSG_PART */
MUSIC_TIME mtDuration; /* how long this curve lasts */
MUSIC_TIME mtOriginalStart; /* must be set to either zero when this PMSG is created or to the original mtTime of the curve */
MUSIC_TIME mtResetDuration; /* how long after the curve is finished to allow a flush or
invalidation to reset to the reset value, nResetValue */
short nStartValue; /* curve's start value */
short nEndValue; /* curve's end value */
short nResetValue; /* curve's reset value, set when a flush or invalidation
occurs within mtDuration + mtResetDuration */
WORD wMeasure; /* Measure in which this curve occurs */
short nOffset; /* Offset from grid at which this curve occurs */
BYTE bBeat; /* Beat (in measure) at which this curve occurs */
BYTE bGrid; /* Grid offset from beat at which this curve occurs */
BYTE bType; /* type of curve */
BYTE bCurveShape; /* shape of curve */
BYTE bCCData; /* CC# if this is a control change type */
BYTE bFlags; /* Curve reset and start from current value flags. */
/* Following exists only under DX8 and on (check dwFlags for DMUS_PMSGF_DX8) */
WORD wParamType; /* RPN or NRPN parameter number. */
WORD wMergeIndex; /* Allows multiple parameters to be merged (pitchbend, volume, and expression.)*/
} DMUS_CURVE_PMSG;
typedef enum enumDMUS_CURVE_FLAGS
{
DMUS_CURVE_RESET = 1, /* When set, the nResetValue must be sent when the
time is reached or an invalidate occurs because
of a transition. If not set, the curve stays
permanently stuck at the new value. */
DMUS_CURVE_START_FROM_CURRENT = 2/* Ignore Start, start the curve at the current value.
This only works for volume, expression, and pitchbend. */
} DMUS_CURVE_FLAGS;
#define DMUS_CURVE_RESET 1
/* Curve shapes */
enum
{
DMUS_CURVES_LINEAR = 0,
DMUS_CURVES_INSTANT = 1,
DMUS_CURVES_EXP = 2,
DMUS_CURVES_LOG = 3,
DMUS_CURVES_SINE = 4
};
/* curve types */
#define DMUS_CURVET_PBCURVE 0x03 /* Pitch bend curve. */
#define DMUS_CURVET_CCCURVE 0x04 /* Control change curve. */
#define DMUS_CURVET_MATCURVE 0x05 /* Mono aftertouch curve. */
#define DMUS_CURVET_PATCURVE 0x06 /* Poly aftertouch curve. */
#define DMUS_CURVET_RPNCURVE 0x07 /* RPN curve with curve type in wParamType. */
#define DMUS_CURVET_NRPNCURVE 0x08 /* NRPN curve with curve type in wParamType. */
/* DMUS_TIMESIG_PMSG */
typedef struct _DMUS_TIMESIG_PMSG
{
/* begin DMUS_PMSG_PART */
DMUS_PMSG_PART
/* end DMUS_PMSG_PART */
/* Time signatures define how many beats per measure, which note receives */
/* the beat, and the grid resolution. */
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_TIMESIG_PMSG;
/* notification type values */
/* The following correspond to GUID_NOTIFICATION_SEGMENT */
#define DMUS_NOTIFICATION_SEGSTART 0
#define DMUS_NOTIFICATION_SEGEND 1
#define DMUS_NOTIFICATION_SEGALMOSTEND 2
#define DMUS_NOTIFICATION_SEGLOOP 3
#define DMUS_NOTIFICATION_SEGABORT 4
/* The following correspond to GUID_NOTIFICATION_PERFORMANCE */
#define DMUS_NOTIFICATION_MUSICSTARTED 0
#define DMUS_NOTIFICATION_MUSICSTOPPED 1
#define DMUS_NOTIFICATION_MUSICALMOSTEND 2
/* The following corresponds to GUID_NOTIFICATION_MEASUREANDBEAT */
#define DMUS_NOTIFICATION_MEASUREBEAT 0
/* The following corresponds to GUID_NOTIFICATION_CHORD */
#define DMUS_NOTIFICATION_CHORD 0
/* The following correspond to GUID_NOTIFICATION_COMMAND */
#define DMUS_NOTIFICATION_GROOVE 0
#define DMUS_NOTIFICATION_EMBELLISHMENT 1
/* The following corresponds to GUID_NOTIFICATION_RECOMPOSE */
#define DMUS_NOTIFICATION_RECOMPOSE 0
/* DMUS_NOTIFICATION_PMSG */
typedef struct _DMUS_NOTIFICATION_PMSG
{
/* begin DMUS_PMSG_PART */
DMUS_PMSG_PART
/* end DMUS_PMSG_PART */
GUID guidNotificationType;
DWORD dwNotificationOption;
DWORD dwField1;
DWORD dwField2;
} DMUS_NOTIFICATION_PMSG;
/* DMUS_WAVE_PMSG */
typedef struct _DMUS_WAVE_PMSG
{
/* begin DMUS_PMSG_PART */
DMUS_PMSG_PART
/* end DMUS_PMSG_PART */
REFERENCE_TIME rtStartOffset; /* How far into the wave to start, in reference time units only. */
REFERENCE_TIME rtDuration; /* Duration of the wave, in either reference time or music time. */
long lOffset; /* Offset from actual time to logical time, in music or ref time. */
long lVolume; /* Initial volume, in 100ths of a dB. */
long lPitch; /* Initial pitch, in 100ths of a semitone. */
BYTE bFlags; /* Flags, including DMUS_WAVEF_OFF... */
} DMUS_WAVE_PMSG;
#define DMUS_WAVEF_OFF 1 /* If wave is playing and this is the off message. */
#define DMUS_WAVEF_STREAMING 2 /* If wave is streaming. */
#define DMUS_WAVEF_NOINVALIDATE 4 /* Don't invalidate this wave. */
#define DMUS_WAVEF_NOPREROLL 8 /* Don't preroll any wave data. */
/* DMUS_LYRIC_PMSG */
typedef struct _DMUS_LYRIC_PMSG
{
/* begin DMUS_PMSG_PART */
DMUS_PMSG_PART
/* end DMUS_PMSG_PART */
WCHAR wszString[1]; /* null-terminated Unicode lyric string (structure is actually larger than size 1) */
} DMUS_LYRIC_PMSG;
#define DMUS_MAX_NAME 64 /* Maximum object name length. */
#define DMUS_MAX_CATEGORY 64 /* Maximum object category name length. */
#define DMUS_MAX_FILENAME MAX_PATH
typedef struct _DMUS_VERSION {
DWORD dwVersionMS;
DWORD dwVersionLS;
}DMUS_VERSION, FAR *LPDMUS_VERSION;
/* Time Signature structure, used by IDirectMusicStyle */
/* Also used as a parameter for GetParam() and SetParam */
typedef struct _DMUS_TIMESIGNATURE
{
MUSIC_TIME mtTime;
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_TIMESIGNATURE;
typedef struct _DMUS_VALID_START_PARAM
{
MUSIC_TIME mtTime; /* Time of the first legal start
point after (or including) the requested time.
This is a returned value.
Time format is the relative offset from requested time. */
} DMUS_VALID_START_PARAM;
typedef struct _DMUS_PLAY_MARKER_PARAM
{
MUSIC_TIME mtTime; /* Time of the first legal segment play
marker before (or including) the requested time.
This is a returned value.
Time format is the relative offset from requested time. */
} DMUS_PLAY_MARKER_PARAM;
/* The DMUSOBJECTDESC structure is used to communicate everything you could */
/* possibly use to describe a DirectMusic object. */
typedef struct _DMUS_OBJECTDESC
{
DWORD dwSize; /* Size of this structure. */
DWORD dwValidData; /* Flags indicating which fields below are valid. */
GUID guidObject; /* Unique ID for this object. */
GUID guidClass; /* GUID for the class of object. */
FILETIME ftDate; /* Last edited date of object. */
DMUS_VERSION vVersion; /* Version. */
WCHAR wszName[DMUS_MAX_NAME]; /* Name of object. */
WCHAR wszCategory[DMUS_MAX_CATEGORY]; /* Category for object (optional). */
WCHAR wszFileName[DMUS_MAX_FILENAME]; /* File path. */
LONGLONG llMemLength; /* Size of Memory data. */
LPBYTE pbMemData; /* Memory pointer for data. */
IStream * pStream; /* Stream with data. */
} DMUS_OBJECTDESC;
typedef DMUS_OBJECTDESC *LPDMUS_OBJECTDESC;
/* Flags for dwValidData. When set, a flag indicates that the */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -