void MidiDriver_ALSA::send_event(int do_flush) { snd_seq_ev_set_direct(&ev); snd_seq_ev_set_source(&ev, my_port); snd_seq_ev_set_dest(&ev, seq_client, seq_port); snd_seq_event_output(seq_handle, &ev); if (do_flush) snd_seq_flush_output(seq_handle); }
/* * Start the queue */ void SeqContext::seq_start_queue() { #ifdef USE_DRAIN snd_seq_drain_output(handle); #else snd_seq_flush_output(handle); #endif snd_seq_start_queue(handle, queue, 0); if( verbose ) fprintf(stderr, "Queue started\n"); }
SeqContext::~SeqContext() { snd_seq_event_t ev; unsigned long t; snd_seq_drop_output(handle); t = 0; if( connected == 3 ) { seq_midi_event_init( &ev, t, 0); seq_midi_control( &ev, 0, MIDI_CTL_ALL_SOUNDS_OFF, 0); seq_send_to_all( &ev); #ifdef USE_DRAIN snd_seq_drain_output(handle); #else snd_seq_flush_output(handle); #endif } if( queue ) snd_seq_free_queue(handle, queue); snd_seq_close(handle); }