diff src/amidi-plug/backend-alsa/b-alsa.c @ 1414:5f892afeb8e1 audacious-plugins-1.4.0-dr2

- amidi-plug 0.8 beta1; support for gthread and v3 plugin system; needs testing and refinements
author Giacomo Lozito <james@develia.org>
date Mon, 06 Aug 2007 14:01:24 +0200
parents d2e508857ded
children
line wrap: on
line diff
--- a/src/amidi-plug/backend-alsa/b-alsa.c	Mon Aug 06 03:20:01 2007 +0200
+++ b/src/amidi-plug/backend-alsa/b-alsa.c	Mon Aug 06 14:01:24 2007 +0200
@@ -179,6 +179,12 @@
 }
 
 
+gint sequencer_queue_stop( void )
+{
+  return snd_seq_stop_queue( sc.seq , sc.queue , NULL );
+}
+
+
 gint sequencer_event_init( void )
 {
   /* common settings for all our events */
@@ -291,6 +297,31 @@
 }
 
 
+gint sequencer_event_allnoteoff( gint unused )
+{
+  gint i = 0 , c = 0;
+  /* send "ALL SOUNDS OFF" to all channels on all ports */
+  sc.ev.type = SND_SEQ_EVENT_CONTROLLER;
+  sc.ev.time.tick = 0;
+  snd_seq_ev_set_fixed(&sc.ev);
+  sc.ev.data.control.param = MIDI_CTL_ALL_SOUNDS_OFF;
+  sc.ev.data.control.value = 0;
+  for ( i = 0 ; i < sc.dest_port_num ; i++ )
+  {
+    sc.ev.queue = sc.queue;
+    sc.ev.dest = sc.dest_port[i];
+
+    for ( c = 0 ; c < 16 ; c++ )
+    {
+      sc.ev.data.control.channel = c;
+      snd_seq_event_output(sc.seq, &sc.ev);
+      snd_seq_drain_output(sc.seq);
+    }
+  }
+  return 1;
+}
+
+
 gint sequencer_output( gpointer * buffer , gint * len )
 {
   snd_seq_event_output( sc.seq , &sc.ev );