I tried the test program with a suprising result. The timing sounds rock solid, with normal permissions, and with a duration of 62.5 ms.
P.S. When I selected realtime permission, the process was killed by das_watchdog, and I heard nothing. (das_watchdog guards for realtime processes that block the system) William Andrew Burnson wrote: > 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" <[email protected]> >> Subject: Re: [CM] Fwd: Linux/Midi Test >> To: lieven moors <[email protected]> >> Cc: Heinrich Taube <[email protected]>, [email protected], Andrew >> Burnson <[email protected]> >> >> >> >> 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); >> >> } >> >> > > _______________________________________________ Cmdist mailing list [email protected] http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist
