diff --git a/src/jackmidi.c b/src/jackmidi.c index f29ba3b..b60d264 100644 --- a/src/jackmidi.c +++ b/src/jackmidi.c @@ -26,7 +26,7 @@ jack_port_t *input_port; jack_port_t *output_ports[MAX_NUMBER_OF_TRACKS]; static volatile gboolean BufferEmpty = TRUE; -static volatile gboolean AllSoundOff=FALSE; +static volatile gboolean IMMEDIATE = TRUE; /*TODO replace with structure containing @@ -292,10 +292,9 @@ process_midi_output(jack_nframes_t nframes) if (!be_quiet) warn_from_jack_thread_context/*g_debug*/("End of song."); playback_started = -1; - if (!use_transport) stop_midi_output = 1; - + IMMEDIATE=TRUE; break; } @@ -388,9 +387,11 @@ process_callback(jack_nframes_t nframes, void *notused) } process_midi_input(nframes); + if (IMMEDIATE) if (Denemo.gui->si && output_ports && Denemo.prefs.immediateplayback){ send_midi_event(nframes); } + if (!IMMEDIATE) if (Denemo.gui->si && Denemo.gui->si->smf && output_ports) process_midi_output(nframes); #ifdef MEASURE_TIME @@ -610,6 +611,7 @@ jack_midi_playback_start() { DenemoGUI *gui = Denemo.gui; playback_started = -1, song_position = 0, stop_midi_output = 0; + IMMEDIATE=FALSE; /* set tranport on/off */ use_transport = (int)Denemo.prefs.jacktransport; /* set tranport start_stopped */ @@ -684,6 +686,7 @@ jack_midi_playback_stop () stop_midi_output = 1; if(jack_client) jack_transport_stop(jack_client); + IMMEDIATE=TRUE; }