[linux-audio-dev] ardour: cross fades, fade ins, fade outs

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: [linux-audio-dev] ardour: cross fades, fade ins, fade outs
From: Paul Barton-Davis (pbd_AT_Op.Net)
Date: Sun Dec 17 2000 - 00:39:29 EET


I am pleased to mention that I believe I have solved the whole
xfade/fade-in/fade-out/gain problem within ardour. I took a little
inspiration from ProTools, though my system is really quite different
from Digidesign's in some very important respects.

The current implementation in CVS can only do 2 things: automatically
apply fade in/fade out to each piece in the track, and automatically
apply cross-fades to each piece-junction that is not already
cross-faded. However, the way that both of these operations have been
coded means that its just a matter of some GUI coding to get the same
core functions to apply custom fades to specific regions, or do a
single cross fade, for example.

There is also a gain system in place now that will allow for full gain
automation. It seems to have little impact on the overall performance
of the system, at least not when the expected situation is in place:
most of the tracks at unity gain and/or without any gain
descriptor. There is no GUI access to this yet.

There are 2 important provisos to the new xfade system. First of all,
what you can't do: you cannot apply a fade in/fade out to a selection
that crosses an existing edit point. This may change at some point.
If this seems harsh, recall that the gain system will allow for
adjusting volume across the boundary.

The second point is more subtle, perhaps. ProTools has an interesting
limitation on xfades: you can only xfade material that has
"tails". That is, the fade-out material MUST have audio data that
extends beyond its apparent "end", and the fade-in material MUST have
audio data that extends before its apparent "start". I did not like
this design at all, and it seems quite wrong to me. If I do careful
selection of a region and then insert it into a track, I don't want
data from before the region showing up as part of the xfade. In
addition, xfades in Protools are "attached" to the regions they are
created from. There are certain kinds of editing operations that
cannot be applied to an xfade.

In ardour, the basic model for xfades is as follows:

    * first, you (or ardour, while recording) carries out
        an edit operation that creates a junction between
        two "pieces"
    * you can leave the edit just as it is, if that happens
        to work for you, OR
    * you can apply a crossfade to the junction.

think of this model as "butt two pieces up against each other, then
optionally overlap their ends and apply a xfade".

if you apply a crossfade (which can be done automatically, either at
edit time or later), then a specified amount of audio data from the
end and beginning of the fade-out/fade-in pieces respectively are
copied, faded, mixed and written that track's fade buffer. The two
fade-out/fade-in pieces are adjusted for length and start, and then
the new xfade piece is inserted between them.

the result of this design seems to me better than the protools
model. its better because:

       (1) you can xfade from the end of 1 area into material that
             comes from the very start of an external audio file (for example).
       (2) the data in the track remains completely uniform: it
             continues to be a list of "pieces". you can edit them
             all in exactly the same way as you could before the
             xfade.
       (3) precise editing is not altered by xfades.
             
the only difference between an xfade piece and a regular one is that
if you use the "Fades -> Auto Cross Fade" item of the track edit menu,
ardour will skip all piece junctions that have a cross fade piece on
one side of them.

there's quite a bit of grunt work to get this all properly integrated
and accessible from the GUI, but i am pretty confident that it will
work without any problems.

to give you an idea of the speed of the whole thing, it takes about 2-3
seconds on my PII-450 (this op is single threaded) to automatically
create about 80 cross-fades in a track that is 5 minutes long. as
usual, its all totally non-destructive.

--p

              


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Sun Dec 17 2000 - 06:39:00 EET