On Sat, Jul 2, 2016 at 6:24 PM, Thomas Brand
<tom(a)trellis.ch> wrote:
On Sat, July 2, 2016 23:14, Stéphane Letz
wrote:
Faust was the first thing that came to mind indeed! The introduction
paragraphs in the documentation says
-specification language
-describe signal processors from a mathematical point of view
-free from implementation details
But right after that:
-FAUST programs are fully compiled, not interpreted.
I can imagine to bundle FAUST code from different processors
semi-automatically or handcrafted to one unit relatively easily. However
i was thinking in a direction where the units live in a host still as
single units, to be connected in different ways, and the host would
dynamically derive a single math operation of the current graph. I
understand this would include recompilation or some kind of JIT
compilation in order to work. If possible at all, i think Faust would
currently be the best fit, since it already offers some of the
fundamental concepts needed to even think about doing something like
this. That would allow large graphs with almost no context switches
(this is pure speculation).
You are cordially invited to provide a faust implementation of 1 or more
of the following:
Ardour
QTractor
Bitwig/Live
Kontakt
FreqTweak
When done, for bonus points, convince the members of the plugin
development communities to implement their work in Faust and make the
Faust code
available for refactoring by the sort of algorithm Stephane referenced in
his reply.
There were plugin APIs long before JACK came along. JACK has very little
to do with the lower level aspects of how to chain together DSP blobs (aka
plugins) in arbitrary ways, and everything to do with how to connect
applications together.
There are all kinds of cool ideas for how to do things inside a single
process - Faust is one of them. The inter-application stuff is really a
different ball of wax. Fons sounds as if he has some interesting insights
there, but it would be hard to integrate them into any host that wants
to be able to run without JACK.
agreed, points taken.
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 dream
:)
Greetings
Thomas