[ardour-dev] Butler, Exporting, pauses

Mark Jones mdjones0978-ardour at yahoo.com
Sat Jul 14 21:29:32 PDT 2007

When exporting data from a 20-24 channel recording I see a fair amount of pausing in the progress.
 I'm attributing this to Disk I/O that isn't keeping up with the mix and think that it might even
have something to do with the Async I/O of the butler.  So far I haven't figured it all out, but I
was going to ask if anyone thought I was barking up the right tree.

I'm not really sure what to use when profiling code under linux.  Until recently I've been on
Windoze and was using the Compuware tools which do a really good job of profiling.  Any tips in
this area would be welcome.

What I'm trying to figure out is how to optimize rendering.  I'm wanting to figure out how to make
it run:

A) In parallel if possible
B) In the background.
C) Without those time killing pauses

I know the CPU isn't overtaxed, It's a core 2 duo and one processor at least is only 25% occupied.
 I thought maybe I could adjust the Butler via the options but that doesn't seem to be possible.

What I really need to be able to do is Render 45 minutes worth of audio in about 5 minutes.  I
could open the session on several different machines, render a portion on all of them and then
combine the output (at least that is a thought).  My other possibility is to render the output
while the mixing is ongoing.  Rendering up to a point and "pausing" until the "CD" marker is moved
forward.  I'm not feeling very confident about this pausing aspect, nor am I feeling very positive
about the reloading of the state to update the session while in the middle of rendering.

My thoughts on the pause/reload/continue were going along like so:
A "CD" marker is inserted that defines the stop point on the path.  The Mixing machine is being
manipulated by a mix engineer and as he masters each song, he moves the "CD" marker forward. 
Another machine named render is rendering up to the "CD" marker.  When it gets there, it pauses
watching for the session.ardour file to be modified (saved).  When it is, it does a
Session::load_state() and the continues rendering up to the "CD" marker.  When the Mixing guy is
finished, he removes the "CD" marker and rendering finishes.

My plan was to build a render app that is non gui based to run on a separate machine.  What I
can't figure out is how to get multiple processors to work on this task faster without using
multiple machines (because of Jack/Jamin interaction)

The reason we are doing this is that we are trying to mix a live performance while it is being
recorded/mixed.  To a large degree (with a fair number of hacks, I have it all working excepting
rendering.  Without rendering, the rest is sort of pointless.  Looking for ideas.....

More information about the Ardour-Dev mailing list