[LAU] Linux audio app design: The nature of xruns

lanas lanas at securenet.net
Mon Dec 28 16:24:48 EST 2009


Le Lundi, 28 Décembre 2009 22:06:47 +0100,
Guido Scholz <guido.scholz at bayernline.de> a écrit :

> Am Mon, 28. Dec 2009 um 15:24:02 -0500 schrieb lanas:
> 
> > Not really.  And I forgot to mention jackmix which looks like
> > another quick hack.
> 
> Hm, yes that sounds pretty persuading.

Well, one or both (jackmix, QARecord) are doing it.  Now, I think it is
clear, without looking at the code, that there's more effort put in
Ardour than jackmix, not on the amount of features obviously, but on
making it well-behaved in the context of Linux audio/jack apps.  I'm
not certain, but I think the author of jackd is also author of Ardour.
Do not quote me on that.
 
>> This is because it was not much of an experiment to start with but
>> rather an observation derived from finding a way to record the song
>> without so many xruns.
 
> I am aware of that and chose this wording to encourage you to discover
> the real root cause. Currently we suffer from hypotheses (at least I
> do).

If, when I start my little project, I face the same number of xruns,
then I'll take a look.  if not, my purpose is not to debug jackmix
and/or QARecord.  I simply made an orbservation.

> > As such, the observation was quite clear: kernel real-time
> > capabilities, although they might play a role somewhere, had nothing
> > to do in producing xruns since switching applications resolved the
> > problem.  From that observation then a question arose: there must
> > be a bad way and a good way of writing a Linux audio/jack
> > application: what is it ?
> 
> So did you get the answer?

Yes.  See the first two replies in ths thread, by David and Dominic.
As I added, treating jack callbacks as bottom part ISRs could certainly
improve performance and who knows (not I so far, do you ?) avoid a good
deal of xruns ?

> > > For mathematical reasons I would like to get your result from this
> > > alternative setup (also giving better access to a root cause):
> > > 
> > >   3) noise -> jackmix -> Ardour -> wav-file
>  
> > Indeed.  That's the possibility I haven't explored since I think the
> > result of the observation was to see that there's a bad and good
> > way of writing such applications.
> 
> I see, so you are more interested from a philosophical (or moral?)
> point of view.

I always tend to approach projects with a high-level overview before
delving into the details.  As such I get a first round on how to define
objects, data paths, responsibilities, etc... Of course these will get
refined when details come in.  That's how I do it.

> > Now, that the bad way lies with jackmix
> > and/or Qarecord is a second point that has more to do with technical
> > performance in the context of writing such an audio/jack
> > application. Which is not the case at the moment.
> 
> Hm sorry, I didn't get that.

In other words, this is not about debugging jackmix and/or QARecord.
are you the author of QARecord by any chance ?

> > > Some other interesting information would be, what program versions
> > > (jackmix, QARecord) are you using?

> > Hmmm.. I'd disagree with this insofar as debugging these apps is
> > certainly not the matter.

> So yes well, but are you sure, you understood my question?

Yes.  Program versions do not matter in that observation.

Tschüß.



More information about the Linux-audio-user mailing list