}
+
+
/* ===================================================================*/
-int ReadSMFTrack(
+int SMF_SetMidiResetEvent(
+ DWord *pdw_varsize,
+ DWord *pdw_first_delta,
Word w_dataflag )
{
- int i_result;
- int i_now_track;
- int i_endtracks;
- int i_cnt;
- MidiEventInfo *p_midievent;
- MidiEventInfo *p_now_event;
+ int i_events;
+ MidiEventInfo *p_mevent;
Byte *pb_vardata;
- Byte *pb_now_vardata;
- Byte b_data;
Byte b_reset_gs[] = MIDI_RESET_GS;
Byte b_reset_gm[] = MIDI_RESET_GM;
Byte b_reset_xg[] = MIDI_RESET_XG;
DWord dw_events;
- DWord dw_now_varsize;
- DWord dw_delta;
+ DWord dw_varsize;
DWord dw_first_delta;
- DWord dw_temp;
- TrackInfo *p_now_track;
- TrackInfo *p_track;
- size_t sz_size;
MidiInfo t_midi;
+
MidiEvent_GetMidiInfo( &t_midi );
- p_midievent = t_midi.p_event;
+ p_mevent = t_midi.p_event;
pb_vardata = t_midi.pb_vardata;
dw_events = t_midi.dw_max_events;
- assert( NULL != p_midievent );
-
+ assert( NULL != p_mevent );
assert( NULL != pb_vardata );
- p_now_event = p_midievent;
- pb_now_vardata = pb_vardata;
- dw_now_varsize = 0;
-
- i_now_track = 0;
- p_now_track = (gp_trackinfo + 0);
-
- i_endtracks = 0;
-
- dw_delta = 0;
+ i_events = 0;
+ dw_varsize = 0;
dw_first_delta = 0;
if( !(w_dataflag & DATAFLAG_MASK_RESET) ) {
if( w_dataflag & DATAFLAG_XG ) {
- p_now_event->b_data[0] = SMF_EVENT_SYSEX_F0;
- p_now_event->dw_delta = 0;
- p_now_event->dw_dataptr = dw_now_varsize;
- p_now_event->dw_length = MIDI_RESETSIZE_GM;
-
- memcpy( pb_now_vardata, b_reset_gm, MIDI_RESETSIZE_GM );
-
- pb_now_vardata += MIDI_RESETSIZE_GM;
- dw_now_varsize += MIDI_RESETSIZE_GM;
- p_now_event++;
- dw_events--;
+ /* GM Reset ------------------------------*/
+ p_mevent->b_data[0] = SMF_EVENT_SYSEX_F0;
+ p_mevent->dw_delta = 0;
+ p_mevent->dw_dataptr = dw_varsize;
+ p_mevent->dw_length = MIDI_RESETSIZE_GM;
+
+ memcpy( pb_vardata, b_reset_gm, MIDI_RESETSIZE_GM );
+
+ pb_vardata += MIDI_RESETSIZE_GM;
+ dw_varsize += MIDI_RESETSIZE_GM;
+ p_mevent++;
+ i_events++;
puts(" GM reset");
- p_now_event->b_data[0] = SMF_EVENT_SYSEX_F0;
- p_now_event->dw_delta = (DWord)(t_midi.uw_division) / 10; /* = 50ms */
- p_now_event->dw_dataptr = dw_now_varsize;
- p_now_event->dw_length = MIDI_RESETSIZE_XG;
+ /* XG Reset ------------------------------*/
+ p_mevent->b_data[0] = SMF_EVENT_SYSEX_F0;
+ p_mevent->dw_delta = (DWord)(t_midi.uw_division) / 10; /* = 50ms */
+ p_mevent->dw_dataptr = dw_varsize;
+ p_mevent->dw_length = MIDI_RESETSIZE_XG;
- memcpy( pb_now_vardata, b_reset_xg, MIDI_RESETSIZE_XG );
+ memcpy( pb_vardata, b_reset_xg, MIDI_RESETSIZE_XG );
- pb_now_vardata += MIDI_RESETSIZE_XG;
- dw_now_varsize += MIDI_RESETSIZE_XG;
+ pb_vardata += MIDI_RESETSIZE_XG;
+ dw_varsize += MIDI_RESETSIZE_XG;
puts(" XG reset");
-
}
else if( w_dataflag & DATAFLAG_GS ) {
- p_now_event->b_data[0] = SMF_EVENT_SYSEX_F0;
- p_now_event->dw_delta = 0;
- p_now_event->dw_dataptr = dw_now_varsize;
- p_now_event->dw_length = MIDI_RESETSIZE_GS;
+ /* GS Reset ------------------------------*/
+ p_mevent->b_data[0] = SMF_EVENT_SYSEX_F0;
+ p_mevent->dw_delta = 0;
+ p_mevent->dw_dataptr = dw_varsize;
+ p_mevent->dw_length = MIDI_RESETSIZE_GS;
- memcpy( pb_now_vardata, b_reset_gs, MIDI_RESETSIZE_GS );
+ memcpy( pb_vardata, b_reset_gs, MIDI_RESETSIZE_GS );
- pb_now_vardata += MIDI_RESETSIZE_GS;
- dw_now_varsize += MIDI_RESETSIZE_GS;
+ pb_vardata += MIDI_RESETSIZE_GS;
+ dw_varsize += MIDI_RESETSIZE_GS;
puts(" GS reset");
}
else {
- p_now_event->b_data[0] = SMF_EVENT_SYSEX_F0;
- p_now_event->dw_delta = 0;
- p_now_event->dw_dataptr = dw_now_varsize;
- p_now_event->dw_length = MIDI_RESETSIZE_GM;
+ /* GM Reset ------------------------------*/
+ p_mevent->b_data[0] = SMF_EVENT_SYSEX_F0;
+ p_mevent->dw_delta = 0;
+ p_mevent->dw_dataptr = dw_varsize;
+ p_mevent->dw_length = MIDI_RESETSIZE_GM;
- memcpy( pb_now_vardata, b_reset_gm, MIDI_RESETSIZE_GM );
+ memcpy( pb_vardata, b_reset_gm, MIDI_RESETSIZE_GM );
- pb_now_vardata += MIDI_RESETSIZE_GM;
- dw_now_varsize += MIDI_RESETSIZE_GM;
+ pb_vardata += MIDI_RESETSIZE_GM;
+ dw_varsize += MIDI_RESETSIZE_GM;
puts(" GM reset");
}
- p_now_event++;
- dw_events--;
+ p_mevent++;
+ i_events++;
dw_first_delta = (DWord)(t_midi.uw_division) / 10; /* = 50ms */
}
+ *pdw_varsize = dw_varsize;
+ *pdw_first_delta = dw_first_delta;
+
+ return i_events;
+}
+
+
+/* ===================================================================*/
+int ReadSMFTrack(
+ Word w_dataflag )
+{
+ int i_result;
+ int i_now_track = 0;
+ int i_endtracks = 0;
+ int i_cnt;
+ MidiEventInfo *p_midievent;
+ MidiEventInfo *p_now_event;
+ Byte *pb_vardata;
+ Byte *pb_now_vardata;
+ Byte b_data;
+ DWord dw_events;
+ DWord dw_now_varsize = 0;
+ DWord dw_delta = 0;
+ DWord dw_first_delta = 0;
+ DWord dw_temp;
+ TrackInfo *p_now_track;
+ TrackInfo *p_track;
+ size_t sz_size;
+ MidiInfo t_midi;
+
+ MidiEvent_GetMidiInfo( &t_midi );
+ p_midievent = t_midi.p_event;
+ pb_vardata = t_midi.pb_vardata;
+ dw_events = t_midi.dw_max_events;
+
+ assert( NULL != p_midievent );
+ assert( NULL != pb_vardata );
+
+ p_now_event = p_midievent;
+ pb_now_vardata = pb_vardata;
+ p_now_track = (gp_trackinfo + 0);
+
+ i_result = SMF_SetMidiResetEvent( &dw_now_varsize, &dw_first_delta, w_dataflag );
+ pb_now_vardata += dw_now_varsize;
+ p_now_event += i_result;
+ dw_events -= i_result;
+
+
do {
#ifndef NDEBUG