On Tue, Jan 31, 2012 at 05:05:59PM +0400, Alexandre Prokoudine wrote:
We've been toying an idea for some years to
rewrite the processing
backend after release of 2.0. We even have some initial code. How it
will look architecture-wise, AFAIK, remains an open question.
But we still need some sort of abstraction, because a huge part of the
user base is on Windows, and getting Audacity to work properly on
WIndows 7 was already quite an effort.
There are two separte issues.
The first is using Jack via Portaudio + autoconnect which reduces
it to 'a soundcard'. It creates problems when the record source is not
a soundcard, quite a normal thing to do when using Jack. For example
the OP of this thread wanted to record from Jack ports representing
Firefox output, and the autoconnect added his soundcard leading to
the DC offset problem. Having to fix this once when setting up a
session may be accectable, but together with the point below it
isn't.
The second is the way Audicity manages its record signal chain. It
exists (or is active) only when armed for record. This emulates the
low-cost tape decks of 30 years ago (where it was done to share the
electronics). But even the more advanced consumer ones at that time
(those with a separate record head) had the record signal chain
active all the time, and for anything 'pro' it is really essential.
You really want to be able to set up a recording session, check
levels, create a monitor mix, etc. once and while stopped, and not
having to repeat this each time you arm for record.
As to the abstraction you need I see two options. The first is very
Jack-centric and probably not acceptable: create dedicated Jack
ports for each track, bus, or whatever. It is what Ardour does.
The other option can be used with a normal soundcard as well, and
would even allow to continue using Jack via Portaudio. Keep the
sound card 'open' all the time, providing silence on the outputs
when there is nothing else to do. When using Jack, create a
configurable size pool of input and output ports. In either case,
within Audacity, allow any track, bus, module,... input or output
to be assigned to any soundcard channel or Jack port. This still
presents Jack as 'a soundcard', but it's much more flexible even
when not using Jack.
Ciao,
--
FA
Vor uns liegt ein weites Tal, die Sonne scheint - ein Glitzerstrahl.