-
Notifications
You must be signed in to change notification settings - Fork 404
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can we author Surge oscillators or FX in Faust? #3669
Comments
Awesome! I hope this gets in! :D
Would you mind explaining like i'm an audio-engineer, not a coder? |
There is no non-coder explanation really. The filters use a particular style of coding to do voice-level parallelism which isn’t how Faust outputs C++. It’s described here https://github.com/surge-synthesizer/surge/blob/main/src/common/dsp/QuadFilterChain.h |
So you think faust filters will be too CPU intensive? |
I think implementing a voice filter in Faust (like another one int he filter bank next to obxd) would not have the right code structure; and unrolling that code structure would yes increase cpu at least 4x over coding them in parallel |
OK, thanks for the explanation! |
That said: prototyping a filter in Faust is easy to do. And then we just have to re-code it as parallel stuff. But the idea of “you write a Faust function and have production ready oscillator or fx with no c++” is not one available for our filter architecture as easily. I’m also looking at libfaust.... man it is tempting for the scripting language rather than LuaJIT. I really need to understand what the full set of dependencies would be. Is there a Faust dev forum where I can hang out which is friendly and responsive? |
Woohooo!!!!!!!!!!!!!!!!!!!! Very exiting!!! :D
Going by the package I wrote for a faust JIT lv2, it can't be much, as far as I can tell, just faust. BTW: personally I like the approach they take to get an editor: they include libvterm and run $EDITOR inside that in the plugin.
I recommend the faustaudio slack channel |
What do we gain by using Faust for function modulator/waveform generator, instead of Lua? I know the con to using it already - Lua is a lot more established. |
|
Familiarity is indeed an advantage of LuaJIT. Faust OTOH has advantages in this use case too, appart from the ones Paul mentioned:
EDIT:
|
So now don’t get all excited. JUCe has to come first. But short answer to @mkruselj question is exactly as @magnetophon said: Faust is a language for signal manipulation Lua is for general purpose scripting. We want signal manipulation.... But both require careful consideration and nothing is decided yet. Anything including nothing at all may be what we do in the short term :) |
Ha well the real trick is I have to not get excited. We can’t have surge 1.9 be an unrunnable pile of semi finished ideas. Gotta wrap things up in order. |
Hmm, github is messing with me: my excited comment was displayed twice, so I deleted it, and now both are gone.
|
Note that libfaust even contains an interpreter, much simpler to deploy compared to the LLVM backend. It has been used in the Faust support for VCV Prototype here: https://github.com/VCVRack/VCV-Prototype/tree/faust, https://github.com/VCVRack/VCV-Prototype/blob/faust/Faust.md, https://github.com/VCVRack/VCV-Prototype/blob/faust/src/FaustEngine.cpp |
https://faustdoc.grame.fr/manual/architectures/ and pushing this (compile time only) into 1.9 |
@baconpaul Move to XT? |
I have still not given up on doing this one this cycle! |
from eyal on tap discord (to be clear he's working with JOS not me)
|
Filters are super hard because of the SSE architecture, but oscillators and fx may be less so. the faust architecture is basically a templating model. The sliders are basically params. Can I take this simple oscillator and make it show up in surge?
https://github.com/magnetophon/faustOscillators/blob/master/example.dsp
The text was updated successfully, but these errors were encountered: