grame-cncm / faust

Functional programming language for signal processing and sound synthesis
http://faust.grame.fr
Other
2.48k stars 316 forks source link

FAuSt 2 AUv3 #403

Open ashshaosh opened 4 years ago

ashshaosh commented 4 years ago

AUv3 is modern and now popular plugin format used on Apple platforms. This would be great and useful to have ability to translate FAuSt code to AUv3 template. At this time C++ export can't be used with Apple's plugin template as is.

sletz commented 4 years ago

For now you can a least do that using the faust2juce way.

ashshaosh commented 4 years ago

faust2juce is nice, but juce is overkill when you need just couple of classes to get yourself to the Appstore ) More of that it's near impossible to cut out such classes from juce way to solve this. And you need to be stitched to juce rules and limitations. So, while I'm waiting for someone smart from your team, I try to became smart myself :) :) for now I haven't enough skills to write wrapper around C++ from FAuSt to be embed in AUv3 extension.

josmithiii commented 4 years ago

At this time C++ export can't be used with Apple's plugin template as is.

What goes wrong with this? I wrote the first faust2vst script doing it this way (starting with the simple gain example).

In general I use Faust to write .h files that I include in whatever C++ I want.

On Sun, Feb 23, 2020 at 12:45 AM ashshaosh notifications@github.com wrote:

faust2juce is nice, but juce is overkill when you need just couple of classes to get yourself to the Appstore ) More of that it's near impossible to cut out such classes from juce way to solve this. And you need to be stitched to juce rules and limitations. So, while I'm waiting for someone smart from your team, I try to became smart myself :) :) for now I haven't enough skills to write wrapper around C++ from FAuSt to be embed in AUv3 extension.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

--

Julius O. Smith III jos@ccrma.stanford.edu Professor of Music and, by courtesy, Electrical Engineering CCRMA, Stanford University http://ccrma.stanford.edu/~jos/

ashshaosh commented 4 years ago

You can use C++ code for standalone applications, no problem, you even can enable Inter-app audio(but it's dying format). But when you need to create AUv3 its an extension and must correspond to certain template and FAuSt's export just doesn't fit. In this article we can see the basics. So there is no problem to create extension from scratch, but if we need to import something to the template it must correspond to it, have needed methods and so on.

At this time C++ export can't be used with Apple's plugin template as is. What goes wrong with this? I wrote the first faust2vst script doing it this way (starting with the simple gain example). In general I use Faust to write .h files that I include in whatever C++ I want. - Julius

sletz commented 4 years ago

A faust2au script has been developed years ago using this template code. I guess a almost full rewrite for AUv3 would be needed.

josmithiii commented 4 years ago

I am curious to hear the problems with "juce rules and limitations". I have some projects in JUCE, and have not hit any barriers, although I haven't yet pushed on any GUI look-and-feel aspects. Again I just use normal JUCE templates and include my Faust-generated .h files in the code I write. So far the biggest problem is a name collision on 'dsp', but there's a workaround.

On Sun, Feb 23, 2020 at 8:20 AM Stéphane Letz notifications@github.com wrote:

A faust2au has been developed years ago using this template code https://github.com/grame-cncm/faust/tree/master-dev/architecture/AU. I guess a almost full rewrite for AUv3 would be needed.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/grame-cncm/faust/issues/403?email_source=notifications&email_token=AAQZKFNNJXJOG42ZTPGR6ILREKO3JA5CNFSM4KZQVV6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEMWAAUQ#issuecomment-590086226, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAQZKFPH5XSU2662F2XK6DDREKO3JANCNFSM4KZQVV6A .

--

Julius O. Smith III jos@ccrma.stanford.edu Professor of Music and, by courtesy, Electrical Engineering CCRMA, Stanford University http://ccrma.stanford.edu/~jos/

ashshaosh commented 4 years ago

I'm talking about splashscreen, paid license and not needed code-mess in the project. Why use of military cruiser to get to the groceries?

I am curious to hear the problems with "juce rules and limitations".

olilarkin commented 4 years ago

iPlug2 includes FAUST support directly, and duplicating this project will let you compile a faust .dsp as an AUv3

https://github.com/iPlug2/iPlug2/tree/master/Examples/IPlugFaustDSP

You can then do the GUI with IPlug's gui library or UIKit etc (see other examples)

sletz commented 4 years ago

Thanks Oli, iPlug2 is indeed a simpler alternative to JUCE....

ashshaosh commented 4 years ago

iPlug2 for today is the best thing that happens with FAuSt since FAuSt itself :)
And it's works for FAuSt->AUv3, but for now it's only for METAL-enabled devices and it's still a big library for everything. Beside this iPlug2 is becoming the motivating solution - don't stop on one platform, do everyone else? //Anyway, faust2auv3 is needed as enhancement 👍

iPlug2 includes FAUST support directly, and duplicating this project will let you compile a faust .dsp as an AUv3

olilarkin commented 4 years ago

Metal is not required. You can use skia cpu igraphics backend and Like I said you can put uikit swift ui etc on top of iplug2.

it must be a lot of work for Faust team to to maintain all the different faust2x scripts, I think it makes more sense to rely on faust2juce for plugin support

ashshaosh commented 4 years ago

Metal is not required. You can use skia cpu igraphics backend and Like I said you can put uikit swift ui etc on top of iplug2.

Since iPlug2 is the best way to get AUv3 running (+ other platforms benefits) I'm going to dive into it, great possibilities and lessons. There is no tutorial explaining the creation of the project from scratch, without universal IGraphics solutions, only copy existing one and tweaking configs trying to unravel how and what are running under the hood. So instead of something simple like faust2auv3 we need to explore libraries. This is absolutely pleasant adventure and I love to examine how things work, but it's takes time.

it must be a lot of work for Faust team to to maintain all the different faust2x scripts, I think it makes more sense to rely on faust2juce for plugin support

Updating the faust2au is necessary, but not urgently, I'm sure there is many more important things to do with FAuSt itself. We better to leave issue opened :)

MacroMachines commented 3 years ago

yes this would be dope