BASS_MIDI_StreamGetMark
Retrieves a marker from a MIDI file stream.
BOOL BASS_MIDI_StreamGetMark(
HSTREAM handle,
DWORD type,
DWORD index,
BASS_MIDI_MARK *mark
);
Parameters
handle | The MIDI stream to retrieve the marker from.
|
type | The type of marker to retrieve, one of the following.
BASS_MIDI_MARK_COPY | Copyright notice events (MIDI meta event 2).
| BASS_MIDI_MARK_CUE | Cue events (MIDI meta event 7).
| BASS_MIDI_MARK_INST | Instrument name events (MIDI meta event 4).
| BASS_MIDI_MARK_KEYSIG | Key signature events (MIDI meta event 89). The marker text is in the form of "a b", where a is the number of sharps (if positive) or flats (if negative), and b signifies major (if 0) or minor (if 1).
| BASS_MIDI_MARK_LYRIC | Lyric events (MIDI meta event 5).
| BASS_MIDI_MARK_MARKER | Marker events (MIDI meta event 6).
| BASS_MIDI_MARK_SEQSPEC | Sequencer specific (MIDI meta event 127). The marker is not text but rather a variable length value and data, as it is in the MIDI file.
| BASS_MIDI_MARK_TEXT | Text events (MIDI meta event 1).
| BASS_MIDI_MARK_TIMESIG | Time signature events (MIDI meta event 88). The marker text is in the form of "a/b c d", where a is the numerator, b is the denominator, c is the metronome pulse, and d is the number of 32nd notes per MIDI quarter-note.
| BASS_MIDI_MARK_TRACK | Track name events (MIDI meta event 3).
| BASS_MIDI_MARK_TRACKSTART | Start of a track in a standard MIDI format 2 file. The marker text is the track number (0 = the first).
| BASS_MIDI_MARK_TICK | Flag: Get the marker's position in ticks rather than bytes.
|
|
index | The marker to retrieve... 0 = the first.
|
mark | Pointer to a structure to receive the marker details.
|
Return value
If successful, TRUE is returned, else FALSE is returned. Use BASS_ErrorGetCode to get the error code.
Error codes
BASS_ERROR_HANDLE | handle is not valid.
|
BASS_ERROR_ILLTYPE | type in not valid.
|
BASS_ERROR_ILLPARAM | index in not valid.
|
Remarks
The markers are ordered chronologically, and by track number (lowest first) if multiple markers have the same position.
Syncs can be used to be informed of when markers are encountered during playback.
If a lyric marker text begins with a / (slash) character, that means a new line should be started. If the text begins with a \ (backslash) character, the display should be cleared. Lyrics can sometimes be found in BASS_MIDI_MARK_TEXT instead of BASS_MIDI_MARK_LYRIC markers.
Example
List a MIDI stream's markers.
BASS_MIDI_MARK mark;
int a;
for (a = 0; BASS_MIDI_StreamGetMark(handle, BASS_MIDI_MARK_MARKER, a, &mark); a++)
printf("marker @ %d = %s\n", mark.pos, mark.text); // display marker position and text
See also
BASS_MIDI_StreamCreateFile, BASS_MIDI_StreamGetMarks, BASS_MIDI_MARK structure