[LAD] Project proposition: llvm based dsp engine
letz at grame.fr
Tue Dec 7 13:28:01 UTC 2010
Le 7 déc. 2010 à 13:00, linux-audio-dev-request at lists.linuxaudio.org a écrit :
> Message: 6
> Date: Tue, 07 Dec 2010 11:40:08 +0100
> From: Maurizio De Cecco <jmax at dececco.name>
> Subject: Re: [LAD] Project proposition: llvm based dsp engine
> To: linux-audio-dev at lists.linuxaudio.org
> Message-ID: <1291718408-fa0519db02fe30b9a7fa6ef94f6d44d6 at dececco.name>
> Content-Type: text/plain; charset="iso-8859-1"
> I realised that my yesterday answer miss the point a little,
> so here it is a few linse of complement.
> Going back to the Paul comment:
>> I can say for sure that, for example,
>> Ardour3 has an object called a Processor whose ::run() method
>> encapsulates all DSP done within Ardour, but nevertheless it would be
>> more or less impossible to do any kind of optimization that looked
>> "across" all the Processors in a signal chain (eg. gain, pan, plugins,
>> etc, etc).
> This is exactly the point: what about having a way to build the 'run' methods
> for a class of applications (PD have such a method, jMax have such a method,
> many others application have such a methods) that *would* allow cross plugin
> optimisations for a certain class of plugins (those written or compiled according
> to the engine 'native' rules) and being able to use the other plugins keeping the
> glue code run time cost very low thanks to dynamic code generation.
> Essentially a generic basic infrastructure using LLVM code generation and optimisation
> And by the way, i am not sure to understand the reference to Faust, that is one of the
> language/system used to define and assemble DSP algorithms, and to generate plugins,
> but it is not a generic container for DSP executions, AFAIK.
Doing "cross plugin optimisations" is something that can be done at the Faust source code level, where sophisticated optimization and code reorganisation can be done because we stay at a pure functional signal level, thus avoiding all the complex issues related to state management. If you want to combine plug-ins coded in any kind of imperative language, then some really hairy issues are coming quite rapidly.
More information about the Linux-audio-dev