#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
{
DWORD dwFlags; /* various bits (see DMUS_IO_SCRIPTTRACKF_*) */
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. */
} DMUS_IO_SCRIPTTRACK_EVENTHEADER;
/*
// Script Track
// <scrt-list>
LIST
(
<scrl-list> // List of script events
)
// <scrl-list>
LIST
(
<scre-list>... // Array of event descriptions
)
// <scre-list>
LIST
(
<scrh-ck> // Event header chunk
<DMRF>
<scrn-ck> // Routine name
)
'scrh'
(
<DMUS_IO_SCRIPTTRACK_EVENTHEADER>
)
'scrn'
(
// Name, stored as NULL terminated string of WCHARs
DWORD dwTimingFlags; /* Combination DMUS_PMSGF_TOOL_* flags. Determines the precise timing of when the notification happens. Invalid with the flag DMUS_PMSGF_REFTIME, DMUS_PMSGF_MUSICTIME, DMUS_PMSGF_TOOL_FLUSH, or DMUS_PMSGF_LOCKTOREFTIME. */
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. */
} DMUS_IO_LYRICSTRACK_EVENTHEADER;
/*
// Lyrics/Notification Track
// <lyrt-list>
LIST
(
<lyrl-list> // List of notification events
)
// <lyrl-list>
LIST
(
<lyre-list>... // Array of event descriptions
)
// <lyre-list>
LIST
(
<lyrh-ck> // Event header chunk
<lyrn-ck> // Notification text
)
'lyrh'
(
<DMUS_IO_LYRICSTRACK_EVENTHEADER>
)
'lyrn'
(
// Name, stored as NULL terminated string of WCHARs