static void midoflus_done(void *arg) { pthread_cancel(syn_thr); pthread_join(syn_thr, NULL); sem_destroy(&syn_sem); delete_fluid_sequencer(sequencer); delete_fluid_synth(synth); delete_fluid_settings(settings); }
int main (int argc, char *argv[]) { int n; fluid_settings_t *settings; settings = new_fluid_settings (); if (argc < 2) { usage (argv[0]); } else { /* create the synth, driver and sequencer instances */ synth = new_fluid_synth (settings); audiodriver = new_fluid_audio_driver (settings, synth); sequencer = new_fluid_sequencer (); /* register the synth with the sequencer */ synth_destination = fluid_sequencer_register_fluidsynth (sequencer, synth); /* register the client name and callback */ client_destination = fluid_sequencer_register_client (sequencer, "fluidsynth_metronome", sequencer_callback, NULL); /* load a SoundFont */ n = fluid_synth_sfload (synth, argv[1], 1); if (n != -1) { if (argc > 2) { n = atoi (argv[2]); if (n > 0) pattern_size = n; } if (argc > 3) { n = atoi (argv[3]); if (n > 0) note_duration = 60000 / n; } /* get the current time in ticks */ time_marker = fluid_sequencer_get_tick (sequencer); /* schedule patterns */ schedule_pattern (); schedule_timer_event (); schedule_pattern (); /* wait for user input */ printf ("press <Enter> to stop\n"); n = getchar (); } /* clean and exit */ delete_fluid_sequencer (sequencer); delete_fluid_audio_driver (audiodriver); delete_fluid_synth (synth); } delete_fluid_settings (settings); return 0; }
static void delete_data(Data *data){ if(data->event!=NULL) delete_fluid_event(data->event); if(data->sequencer!=NULL) delete_fluid_sequencer(data->sequencer); if(data->synth!=NULL) delete_fluid_synth(data->synth); if(data->settings!=NULL) delete_fluid_settings(data->settings); if(data->filename!=NULL) free((wchar_t*)data->filename); if(data->signal_from_RT!=NULL) RSEMAPHORE_delete(data->signal_from_RT); free(data); }
void free() { if (s_initialized) { stop(); if (s_midiFormat == MFMT_GUS_PATCH) { WildMidi_Shutdown(); } else if (s_midiFormat == MFMT_SOUND_FONT) { delete_fluid_settings(s_fluidSettings); delete_fluid_synth(s_fluidSynth); delete_fluid_sequencer(s_fluidSeq); delete_fluid_player(s_fluidPlayer); unloadFluidsynthDLL(); } s_initialized = false; delete s_mutex; } }
SynthSequencer::~SynthSequencer() { delete_fluid_sequencer(m_sequencer); }