diff -crB 2.0-ongoing-4499/libs/midi++2/alsa_sequencer_midiport.cc 2.0-ongoing-4499_patch/libs/midi++2/alsa_sequencer_midiport.cc
*** 2.0-ongoing-4499/libs/midi++2/alsa_sequencer_midiport.cc	2009-02-08 22:42:57.000000000 +0200
--- 2.0-ongoing-4499_patch/libs/midi++2/alsa_sequencer_midiport.cc	2009-02-08 23:02:41.000000000 +0200
***************
*** 45,50 ****
--- 45,51 ----
  using namespace PBD;
  
  snd_seq_t* ALSA_SequencerMidiPort::seq = 0;
+ char alsa_port_write = 0;
  
  ALSA_SequencerMidiPort::ALSA_SequencerMidiPort (const XMLNode& node)
  	: Port (node)
***************
*** 102,107 ****
--- 103,113 ----
  	TR_FN ();
  	int R;
  	int totwritten = 0;
+ 	
+ 	if(alsa_port_write)  	// Abort if the port is still being written to by another instance 
+ 		return totwritten;
+ 	alsa_port_write = 1;		// Initiate the instance 
+ 	
  	snd_midi_event_reset_encode (encoder);
  	int nwritten = snd_midi_event_encode (encoder, msg, msglen, &SEv);
  	TR_VAL (nwritten);
***************
*** 119,124 ****
--- 125,131 ----
  			}
  		} else {
  			TR_VAL(R);
+ 			alsa_port_write = 0;  // Code added to only enable a single ALSA port write 
  			return R;
  		}
  
***************
*** 133,138 ****
--- 140,146 ----
  		}
  	}
  
+ 	alsa_port_write = 0;  // Code added to only enable a single ALSA port write 
  	return totwritten;
  }
  
Only in 2.0-ongoing-4499_patch/libs/midi++2: alsa_sequencer_midiport.cc~
