On Sun, July 3, 2016 11:52, Fons Adriaensen wrote:
On Sun, Jul 03, 2016 at 05:04:17AM +0200, Thomas Brand
Given that a processing graph doesn't change
constantly (except in some
special cases), i'd imagine to kind of "freeze" the plugins setup to a
single instance to gain more room per cycle. Maybe this is just a pipe
dream. Having all involved DSP in a declarative text language instead
of BLOBs. Whole DAWs could be built like this. As i said, just a pipe
Keep in that in all but the simplest algorithms, audio processing doesn't
just involve calculations on samples, but also logic, maintaining state,
and in general things that don't happen at the audio sample rate but
have their own independent timing which isn't regular and can't be
predicted. Faust isn't particularly good at any of that.
In theory all of that could be expressed in a 'formula', but the
complexity of such a formula will explode exponentially unless you express
it as a chain or graph of separete operations with no or limited
interaction. And then we are back where we started.
it's a very theoretical thing indeed, with the premise that as long as a
plugin acts deterministically, it could be expressed as a formula (which
can get large/complex). That alone doesn't make it "better" or solve any
problem yet, easy to agree.
You may think that running the entire combined
algorithm sample per
sample, avoiding all intermediate buffers, would be more efficient than
having separate modules which communicate by passing blocks of samples
between them. But that is NOT the case. Short loops using a small set of
variables make much better use of CPU registers and the cache, and will be
In other words, even if it would practically possible to do what you
suggest, nothing will be gained, on the contrary.
OK. Thanks for your insights Fons! As always much appreciated.
A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)
Jack-Devel mailing list