Juce_faustllvm module - JIT compile faust DSPs as AudioProcessors


This is a work in progress but feedback is welcome...

I'd like to present a JUCE module for embedding the FAUST LLVM JIT compiler in your JUCE projects.

For those who don't know, Faust is an awesome functional programming language for audio DSP see http://faust.grame.fr/

recently the team at Grame have added a LLVM backend to faust, which allows you to JIT compile the faust code to run very efficiently. I have adapted their work on the faustgen~ max msp external to a FaustAudioPluginInstance class.

here is the module


and a CLI test project that uses the module


I would like to know if you are able to compile it for starters. I am not sure if the recently add "OSXLibs" section of juce_module_info is working correctly since i had to add the linker flags manually.

tommorow i will upload a more substantial project that uses it.




ps OSX and Linux only for now! subject to change etc!


Another darn reason to look into faust!




updated the projects. and here is the bigger project i mentioned


naf vid: https://vimeo.com/122268573


This looks great. Have you considering providing Csound based nodes? I am working on somthing similar myself where each node can be a Csound instrument, or a VST/AU etc. But I like how you have everthing packed into a single instance. That's not somthing I am in a position to even think about just now. If you're interested I'm happy to help out. 


yes actually ;-) i was speaking to steven yi about how to embed csound with the goal of having csound nodes in pMix. I haven't had time to look at it yet but i'll be in touch! 


Great. All the code is basically there. 


Hi Oli and all,
any progress on integrating Faust in Juce on the Windows side of the moon?


hi alfonso,

unfortunately not, sorry



Thanks Oli for the info.
Any project goin’ on on this direction?




I’ve been looking for a solution to combine visual and textual progamming like you have done (kinda) with pmix2 where you can create audio objects in code and then attach things together visually, kinda like max/msp… well, EXACTLY like http://forum.cockos.com/showthread.php?t=46286 jsfxgen.

With jsfxgen you create visual objects which are represented by code and attach things together. That would then spit out new code for compiling into a single object.

Problem with jesusonic is that it’s a limited programming language. Faust can be faster than compiled C++ according to faust.

I’m failing to see why faust could not be used to make max, puredata, jesusonic, and protoplug obsolete.

Edit: Does faust lack class/object functionality? That would make faust difficult to use for anything complex. I’m probably missing something.

Edit: this?: http://faust.grame.fr/news/2016/01/13/polyphonic-instruments.html


Faust is a functional programming language, and has some limitations. It’s a fundamentally different programming paradigm to C++, jesusonic, et cetera. so it’s not really gonna make any of those things obsolete. Here’s a video of my presentation at the JUCE Summit on Faust