Faustgen~ for Max7

Hi Folks
While linking someone the definition of LADSPA i was re-introduced to FAUST

I forgot that in the documentation it’s possible to create a LADSPA plugin from FAUST code.
So it’s possible if you have C/C++ skills to generate your own unique LADSPA plugins. I am going to finish tidying/updating the Fluidsynths~ then i am going to endeavor to make one as proof of concept.

I think technobear said he has a bunch of C++ skills as well so maybe we can get together code wise and eventually make a set of LADSPA plugins specifically for Organelle. I think that would be incredibly cool IMHO.
There is also a Max7 external “faustgen~” which makes the construction & compilation of plugins more streamlined.

Of course this is just an idea but i love these kind of connections and i know Faust is pretty robust.


1 Like

you don’t really need C++ skills to generate LADSPA plugins for Organelle with Faust.
the point of faust, is you write dsp code in the ‘fault dsp language’ , and then the faust compiler (you can use the online one) generates the C++ code … for various platforms e.g. LADSPA, puredata vsts.

in theory, it will give the executable directly, but I’ve noticed it doesn’t seem to have compile options for ARM … (pity no reason for them not to run a cross compiler)
anyway, in this case all you need to do is take the C++ code it generates, write a small makefile, compile and your done.
… all trivial stuff really.

I’m not sure you’d want faustgen~ on a Organelle, as this is the compiler side which would be pretty slow on organelle, and you’d then need to start uploading the dsp file, telling it to compile… blah blah.
the only real gain from this would be if it compiled so fast, you used the dsp files as the ‘patch’, so you could create a fast workflow - but that’s not going to be the case.
on the tech side, id need to review the status of llvm for open source/arm projects.

apart from that Faust seems to be quite popular, not sure how many useful dsp files there are out there, or how efficient the code is it generates (which is pretty important for a system like organelle).

related, do you know of any central repository for faust dsp files? or some kind of faust community where this stuff is shared?

Ive only seen the examples with faust compiler , which are not very exciting, hence why Ive never really bothered with it :wink:

yeah i am not talking about running it ON organelle. i am looking at the Max7 patch right now and it seems pretty simple to understand. I looked at the online compiler and it has a drop-down menu for Raspi but i need to try some examples. i think if we have a few simple Reverbs/Chorus etc people can play with they could add their own effects easily which would be nice

the OWL page has a ton of examples so i am going to see if i can pluck a few and see what shakes. for the plugin~ external we will need a usable .so but again i just glanced at it and i am still needing some hot brown water


i just searched the Faust Tag and found a few

that’s the point, that’s what faustgen~ does, it uses libfaust so it can generate the c++ code from the dsp file, then uses llvm to compile it.

as I say, you don’t need any of that to create plugins.

also if your planning to glue together in PD, then you might as well create pure data externals rather than plugins … no point in wrapping a wrapper :wink:

I think what would make this much more interesting, is to create faust target for organelle, which incorporated a UI (menus), that would make the process much more streamlined.

there are a number of other similar options…
Max, some are now taking C++ code created by gen~ and creating things from that (MODDEP/Owl).
In the past Ive also used Axoloti to create patches for other (arm) platforms… this is nice as the objects are optimised for arm (neon), and so the code is very light in cpu.

anyway, lots of options… just a matter of deciding what is most appropriate…
I’m tied up for a couple of weeks, but after that Ive something I want to work on that will (at least for me) have a bit of an impact on this kind of stuff :wink:

yeah for my owl pedal i have been just using the Heavy Compiler and i made a few really nice effects for it but often it’s easier to just code it in PD
I like the idea of translating things, The main reason i wanted the LADSPA code was because of the PVOC stuff written by Trevor Wishart and those sound really nice
but i am not interested in going down a rabbit hole and wasting my time. When people say web compiler that evokes the idea of ease and streamlining

But dropping some of these examples into gen~ they work right out of the box in Max7 if i could spit out a bunch of working .so’s rapidly that could be fun if it’s not a nightmare to use

I guess one cool thing would be if we could translate some VST~ plugins for use on Organelle with having to deal with WINE that would be an advantage.
I built the LVM plugin do-dad but it’s predominantly concerned with the GUI aspects so;…

1 Like

I’m extremely interested in being able to write orac-compatible modules for Organelle using FAUST. Is there any guidance for someone who knows quite a bit about computers in general, but virtually nothing about Pd externals or cross-compiling? Ideally my build system would be MacOS, but I could use a Linux VM if using MacOS really hard for some reason. (If it could do the compilation itself on the Organelle that would be even better, but I assume even an Organelle M is going to be way too slow… although FAUST compilation is fast enough now that they have a web IDE (https://faustide.grame.fr/) that just compiles and runs your code every time you stop typing, so maybe worth considering?)


Faust developer here. Would a specific architecture file help integrate Faust DSP on Organelle?

Personally, the Pure Data architecture makes it fine for Organelle. As used to making simple adjustments to fit.

Compiling 32 bit linux Pure Data Faust externals from the web gui would be awesome though. As I don’t like mucking with Organelle OS (such as installing Faust command line stuff) so used a Rasp Pi to do it which not everyone would have available.