[CM] Fwd: Linux/Midi Test

William Andrew Burnson burnson2 at illinois.edu
Tue Aug 11 09:33:34 PDT 2009


Here is my test program to play back notes in a single JUCE thread to help detect jitter:
http://williamburnson.com/midi-test.tar.gz

To use it, follow INSTRUCTIONS (basically, drop juce_amalgamated.cpp/h into the folder and type make)

I tried using snd_seq_drain_output and I didn't notice any difference...

---- Original message ----
>Date: Tue, 11 Aug 2009 15:43:31 +0200 (CEST)
>From: "Kjetil S. Matheussen" <k.s.matheussen at notam02.no>  
>Subject: Re: [CM] Fwd: Linux/Midi Test  
>To: lieven moors <lievenmoors at gmail.com>
>Cc: Heinrich Taube <taube at uiuc.edu>, cmdist at ccrma.Stanford.EDU, Andrew Burnson <burnson2 at uiuc.edu>
>
>
>
>On Tue, 11 Aug 2009, lieven moors wrote:
>
>> I think I might know what the problem is with Juce. I had a look at the
>> Juce code myself,
>> and it looks like sendMessageNow() is not calling the
>> snd_seq_drain_output().
>
>For what its worth, the one time I've written code which sends
>midi via alsa, the code calls snd_seq_drain_output as last
>operation. I don't remember what I did back then, but this
>could definitely be the problem. It sounds likely, at least.
>
>
>static void alsaseq_PutMidi(
> 			    struct MidiLink *midilink,
> 			    uint32_t msg
> 			    )
>{
>   unsigned int d3=(msg>>8)&0xff;
>   unsigned int d2=(msg>>16)&0xff;
>   unsigned int d1=(msg>>24)&0xff;
>
>   unsigned char buffer[3]={d1,d2,d3};
>   snd_seq_event_t ev;
>   snd_midi_event_t *midi_ev;
>   snd_midi_event_new( 10, &midi_ev );
>
>   snd_seq_ev_clear( &ev );
>   snd_midi_event_encode(midi_ev,
> 			buffer,
> 			3,
> 			&ev);
>   snd_midi_event_free( midi_ev );
>
>   snd_seq_ev_set_source(&ev,midilink->port);
>   snd_seq_ev_set_subs(&ev);
>
>   snd_seq_ev_schedule_tick( &ev, radium_queue, 1, 1);
>
>   snd_seq_event_output(radium_seq, &ev);
>
>   snd_seq_drain_output(radium_seq);
>
>}
>



More information about the Cmdist mailing list