Пример #1
0
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);
}
Пример #2
0
/*
 * 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");

}
Пример #3
0
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);
}