Re: [LAD] [64studio-users] MIDI jitter

From: Ralf Mardorf <ralf.mardorf@email-addr-hidden-dsl.net>
Date: Sat Jun 19 2010 - 15:23:53 EEST

Ichthyostega wrote:
> Ralf Mardorf schrieb:
>> Another stupid question induced by an argument regarding to MIDI jitter by
>> Daniel James.
>>
>>> [snip] I'm sceptical that the realtime kernel is the cause of your MIDI
>>> problems. If they got this right in the 80's, on computers which could not
>>> do anything near realtime audio processing, then I think it's more likely
>>> to be a question of MIDI application design.
>
> At that point we should call back, how that whole story with "realtime"
> started. At the begining was a design mismatch. Many things related to
> the Linux kernel started out with a kind of "I feel fine" pragmatism.
> Which, btw isn't to criticise as it is, because this also accounts
> for the freshness and sometime unconventional new approach to some
> problems. But with regards to timings, for all of the first decade
> of Linux development, there seemed to be a completely different
> mental model, which we could summarise as: permormance == throughput,
> and timings are only relevant, when you get a network timeout, or
> a sluggish response in your application's GUI.
>
> Thus, if we now consider to use a Linux kernel for making music, we must
> assess that the whole design isochronously assumed about 1000 times more
> headroom as there really is.
>
> Thus, as writing a new Kernel doesn't seem to be an option, this whole
> tedious undertaking of the "realtime patches" can be described as an
> attempt to fix this "problem" (which was never assumed to be a problem
> in the initial design) by hunting down one by one each individual instance
> where the existing kernel could possibly be reacting too slow.
>
> Thus, we should rather be surprised, how good these realtime kernels work.
> OTOH, is isn't a surprise the machines from the 80s meet these criteria;
> their OS software was written with an awareness for a much more limited
> processing capability right from start.
>
>
>> Why do people (not only me) report jitter for external MIDI equipment, but I
>> couldn't find any report for real-time audio jitter? Resp. what's about async
>> and disconnecting clients by JACK?
>
> Audio and MIDI are two quite different beasts.
> Sound is processed in Blocks, where the individual unity (1 Sample) is
> much more fine grained and way below anything which can be discerned by
> a human ear. Moreover, Sound as such already exists and 'just' has to
> be piped through. To the contrary, MIDI consists of events, which
> immediately trigger a reaction, which could be that a piece of software
> and at the same time a piece of external hardware starts a processing
> cycle. You see, thats a completely different situation and thus it's
> obvious, why for these two media the same problem causes so different
> symptoms.
>
>> OTOH on Windows audio clients don't disconnect,
>> just MIDI jitter is an issue too.
>
> IIRC, this was a design decision for JACK. It never tries to conceal
> any timeout problem, rather it requires its clients to keep up with
> a very tight schedule and comply to very strict rules.
>
> I don't know the MIDI part of Jack well enough to judge, if it was
> designed with the same "you're required to comply" policy. And besides,
> when the MIDI interface is hooked up via USB, we again face a completely
> different situation. USB is a complicated protocol, which multiple
> versions and levels and is certainly not designed to get an individual
> event transfered reliably with less than 2ms jitter.
> There is even the possibility that the USB peers negotiate to use a
> lower transfer rate or protocol version transparently, when they
> determine the connection can't keep up with the higher speed.
>
> Cheers
> Hermann V.

It's said that USB MIDI interfaces should be the better choice. But this
explains a lot. Dunno how to read Fons JACK MIDI jitter test, but ...

Subject: Re: [LAD] Again MIDI jitter - tested with Fons test applications
Date: Sat, 27 Mar 2010 18:26:33 +0100
From: Ralf Mardorf <ralf.mardorf@email-addr-hidden-dsl.net>
To: fons@email-addr-hidden
CC: linux-audio-dev@email-addr-hidden
References: <4BADBD42.4030505@alice-dsl.net> <20100327164326.GD1545@zita2>

> Hi Fons :)
>
> fons@email-addr-hidden wrote:
> > On Sat, Mar 27, 2010 at 09:09:38AM +0100, Ralf Mardorf wrote:
> >
> >
> >> Regular it shifted between 2395 and 2404, but with a few exceptions,
> >> one time 2302, three times 2304, two times 2305 and two time 2494.
> >> See attachment.
> >> What might cause this exceptions? Could it be access to the RAM by
> >> the graphics? Is there something bad because of the IRQs?
> >>
> >> Regular shift 2404 - 2395 = 9 frames of jitter, exceptional maximal
> >> shift 2494 - 2302 = 192 frames of jitter.
> >>
> >> I guess this does mean ...
> >> 5.3 ms / 512 frames = 0.010351562 ms/frame
> >> Maximal difference for regular jitter 0.093164062 ms.
> >> Maximal difference for exceptional jitter 1.9875 ms.
> >> ... am I wrong?
> >>
> >
> > Wrong once or twice, if twice in such a way that the two
> > errors cancel out.
> >
> > First note that the test prints the difference between
> > events. That means that e.g. if *one* note is 100 samples
> > late you could see 2400 2500 2300 2400.
> >
> > The '2300' is just because the previous one was late,
> > not because this one arrives too early. So you should
> > divide the jitter as you measure it by two.
> >
>
> Aha, okay this is plausible.
>
> > Second, 5.33 ms = 256 frames at 48 kHz. But maybe you
> > are using 96 kHz ??
> >
>
> So you didn't read the attachment ;), yes I did use 96 KHz.
> [snip]

Subject: Again MIDI jitter - tested with Fons test applications
Date: Sat, 27 Mar 2010 09:09:38 +0100
From: Ralf Mardorf <ralf.mardorf@email-addr-hidden-dsl.net>
To: Linux Audio Developers <linux-audio-dev@email-addr-hidden>

> When I once tested it by recording I got this result for ALSA MIDI on
> Linux, Cubase runs on Windows on the same machine:
>
> ||Cubase|HR tmr|System|PCM pl|PCM ca
> ------++------+------+------+------+------
> 500.0 || 493.0| 504.9| 505.6| 503.4| 503.2
> 1000.0|| 993.4|1005.4|1005.8|1005.3|1006.4
> 1500.0||1494.5|1503.6|1506.4|1507.4|1507.3
> 2000.0||1994.8|2003.8|2007.2|2007.9|2009.5
> 2500.0||2492.4|2504.1|2504.3|2503.6|2503.2
> 3000.0||2992.9|3006.0|3006.2|3005.9|3007.6
> 3500.0||3493.7|3502.7|3505.4|3506.5|3509.5
> 4000.0||3994.6|4003.1|4003.2|4008.8|4009.9
> msec +/- 0.1 msec
> maxDif|| 4.8| 6.0| 7.2| 8.8| 9.9
> minDif|| -2.4| -2.7| -3.2| -3.4| -3.2
> --------------+------+------+------+------
> Jitter|| 2.4| 3.3| 4.0| 5.4| 6.7
> msec +/- 0.2 msec

... as you can see, for Cubase I got this 2ms of jitter. So regarding to
your explanation Herman, Windows + ASIO + Cubase does a good job, just
the USB interface will limit it, while for Linux there seems to be
another issue too, but the USB interface. Btw. Linux HR tmr is a PITA,
just System, PCM pl and PCM ca are usable without issues for all Linux apps.

What could be the cause that Windows just is limited to the USB
interface by 2.4 ms, but Linux comes with 4.0 ms on my machine?

Joshua Boyd on LAD wrote:
> On Thu, Jun 17, 2010 at 10:37:25AM -0400, Gene Heskett wrote:
>
>>> At my school we transfered the CAD files per floppy to a DOS box that
>>> controlled the CNC machine, guess that's for the same reason, bad rt
>>> capabilities of newer OSes and machines.
>> The RTAI works pretty well, I can start a job, switch away from that window,
>> and talk to the guys on IRC, or browse the web without hurting the job.
>> That to me is true multitasking.
>
> So, that leaves me wondering why no one seems to be trying RTAI for
> audio work? Or is someone doing that and I'm just not aware?

Today I tried to do so.

I tried to run JACK2 with -R switch by user and by sudo, the result was
the same as here, when I launched JACK2 without -R switch on 64 Studio
3.0 beta based on Ubuntu Hardy:

$ uname -r
2.6.24-16-rtai

$ jackd -dalsa -dhw:0 -r96000 -p512 -n2
jackdmp 1.9.3
Copyright 2001-2005 Paul Davis and others.
Copyright 2004-2009 Grame.
jackdmp comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK server starting in non-realtime mode
creating alsa driver ... hw:0|hw:0|512|2|96000|0|0|nomon|swmeter|-|32bit
control open "hw:0" (No such file or directory)
Cannot initialize driver
no message buffer overruns
JackServer::Open() failed with -1
Failed to start server

ALSA seq couldn't start too.

I run the EMC2 / HAL latency-test:

Servo thread (1.0 ms): max interval 999180 ns, max jitter 10949 ns, last
interval 992259 ns
Base thread (25.0 us): max interval 34551 ns, max jitter 9640 ns, last
interval 24887 ns

The same test couldn't be used for my kernel-rt:

$ uname -r
2.6.31.12-rt20

$ latency-test
insmod: can't read '/usr/realtime-2.6.31.12-rt20/modules/rtai_hal.ko':
No such file or directory
RTAPI: ERROR: could not open shared memory (errno=2)
HAL: ERROR: rtapi init failed
halcmd: hal_init() failed: -9
NOTE: 'rtapi' kernel module must be loaded
RTAPI: ERROR: could not open shared memory (errno=2)
HAL: ERROR: rtapi init failed
halcmd: hal_init() failed: -9
NOTE: 'rtapi' kernel module must be loaded
RTAPI: ERROR: could not open shared memory (errno=2)
HAL: ERROR: rtapi init failed
halcmd: hal_init() failed: -9
NOTE: 'rtapi' kernel module must be loaded
ERROR: Module hal_lib does not exist in /proc/modules
ERROR: Module rtapi does not exist in /proc/modules
ERROR: Module rtai_math does not exist in /proc/modules
ERROR: Module rtai_sem does not exist in /proc/modules
ERROR: Module rtai_fifos does not exist in /proc/modules
/usr/bin/emc_module_helper: Invalid usage with args: remove rtai_ksched
[snip]
ERROR: Module rtai_hal does not exist in /proc/modules

Btw. should I commend out the EMC2 memlock when doing audio work again
or doesn't have it an impact?

$ cat /etc/security/limits.conf | grep memlock
# - memlock - max locked-in-memory address space (KB)
@audio - memlock unlimited
# @audio - memlock 2000000
* hard memlock 20480 #EMC2

Cheers!

Ralf

PS: What now? It's my second hardware set up. I just bought a new
computer a long time ago, because the old computer wasn't ok for Linux
too, but I don't have the money to pay for one machine after the other,
until I might have good luck. Both machines are 100% stable for Windows,
for Linux I also get asyncs + distortion when using JACK2. I didn't test
if current JACK1 is ok, or if it would disconnect clients. Don't get me
wrong, I never was a private Windows user, it just were installs for
testings. I'm using Linux only at home.
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Sat Jun 19 16:15:03 2010

This archive was generated by hypermail 2.1.8 : Sat Jun 19 2010 - 16:15:03 EEST