Faust is here...
-
@Sawer i'm actually at work, i'll have a look at it later. Did you already check the SVG diagram (the Button with the eye on the faust node)?
-
@toxonic
3x2 Also on the svg. -
@Sawer ahh, okay, i'm still at work, but try to use this as process line instead:
process = _,_:re.dattorro_rev(bw, inputDiff1, inputDiff2, decay, decDiff1, decDiff2, damping);
-
@toxonic Trying now, thanks.
-
Ahahha, this is way too strange...
-
@Sawer Okay, this was not that simple to figure out: There was an error in the description of the reverb in the library. There's missing the parameter for the predelay.
The code should probably rather look like this:import("stdfaust.lib"); predelay = hslider("Predelay",0.5 ,0 , 1,0.1); bw = hslider("BandWidth",0.5 ,0 , 1,0.1); inputDiff1 = hslider("Diffusor1",0.5 ,0 ,1 ,0.1); inputDiff2 = hslider("Diffusor2",0.5 ,0 ,1 ,0.1); decay = hslider("Decay", 0.5,0 ,1 , 0.1); decDiff1 = hslider("dDiffusor1",0.5 ,0 ,1 ,0.1); decDiff2 = hslider("dDiffusor2",0.5 ,0 ,1 ,0.1); damping = hslider("damping",0.5 ,0 ,1 ,0.1); process = re.dattorro_rev(predelay,bw, inputDiff1, inputDiff2, decay, decDiff1, decDiff2, damping);
Note, that this is not really working like it should, because this is just the wet reverb, you would have to add a mixing unit for the dry sound.
-
@toxonic or a
dry_wet
template that does that for you in scriptnode... -
@Christoph-Hart Is it possible to "auto compile" Faust nodes on export to still be able to debug or reroute effects in the HISE project after the export is done?
-
@Straticah no because then you would need the end user to have faust installed and setup correctly.
-
@Christoph-Hart ah i see, i thought compiling would make it usable without jit. Where do i get information on how i need to prepare Faust nodes to work properly for the end user? :)
-
@toxonic Perfect, thanks!
-
@Straticah ah that‘s a misunderstanding I thought you wanted to use the JIT node in a exported project. But yes when you export a network with a faust file it will generate C++ code from it that runs on its own.
Now what was your initial question? :)
-
@Christoph-Hart I see, sorry for the misunderstanding. I had the problem that my FX plugin uses scriptnodes and faust nodes, but on VST export they are all bypassed.
My solution was now to create hardcoded dlls and reroute the effects to my knobs and delete the scriptnodes.
Im quite new to nodes and faust but was bit frustrated after my VST had some script and faust fx missing on VST export. :)This is where my question came from if there is a way to automate the compilation from nodes to c++ on VST export/build.
Hope this makes sense and you get what i want to bring across. ^^ -
No you need to export a DLL to create the C++ classes from scriptnode / SNEX / Faust nodes before you export your plugin.
My solution was now to create hardcoded dlls and reroute the effects to my knobs and delete the scriptnodes.
Yes this is the recommended approach:
- Design the effects in scriptnode
- Compile them to C++ effects
- Replace the scriptnode module with a HardcodedFX
This removes the overhead of the scriptnode interpreter. The replacement step itself is rather easy because you just need to replace the module, give the hardcoded module the same ID as the scriptnode module, then reload the HISE project which should update all connections as the parameters & complex data type interface should be the same.
-
@Christoph-Hart got it, thank you for your time and energy you put into this project. :) I will look into that, didnt work the first time - i am getting an error on compiling a DSP network to a dll. I guess this could be the reason why it did not work in the first place.
Finished saving: Xcode (macOS) Finished saving: Linux Makefile Compiling 64bit HISE ... MSBuild version 17.4.0+18d5aef85 for .NET Framework Main.cpp include_hi_dsp_library_01.cpp include_hi_dsp_library_02.cpp include_hi_tools.cpp include_juce_audio_basics.cpp include_juce_audio_formats.cpp include_juce_core.cpp include_juce_data_structures.cpp include_juce_dsp.cpp include_juce_events.cpp include_juce_graphics.cpp Z:\Audio Programming\VST Projects\HISE\DspNetworks\Binaries\Source\Main.cpp(70,1): warning C4190: "getError" hat C-Bind ung angegeben, aber gibt UDT "scriptnode::Error" zurück, was mit C inkompatibel ist [Z:\Audio Programming\VST Projects\ HISE\DspNetworks\Binaries\Builds\VisualStudio2022\HISE_DynamicLibrary.vcxproj] Z:\Audio Programming\HISE-develop\hi_dsp_library\node_api\helpers\Error.h(63,8): message : Siehe Deklaration von "scrip tnode::Error" [Z:\Audio Programming\VST Projects\HISE\DspNetworks\Binaries\Builds\VisualStudio2022\HISE_DynamicLibrary. vcxproj] include_juce_gui_basics.cpp Bibliothek ".\..\..\dll\Dynamic Library\HISE.lib" und Objekt ".\..\..\dll\Dynamic Library\HISE.exp" werden erstell t. Code wird generiert. Codegenerierung ist abgeschlossen. HISE_DynamicLibrary.vcxproj -> Z:\Audio Programming\VST Projects\HISE\DspNetworks\Binaries\dll\Dynamic Library\HISE.d ll Drücken Sie eine beliebige Taste . . .
-
Yellow is not an error, even if the warning is about a function that has error in its name :)
Codegenerierung ist abgeschlossen.
That's german for "Everything OK".
-
@Christoph-Hart okay, good to know :)
-
@Christoph-Hart
Ok, do I need to compile the whole scriptnode into a custom-project c++ class or only the faust node?Thanks
-
@Sawer The whole scriptnode patch, but you can create a subpatch that only contains the faust node if you want to use a interpreted scriptnode patch in your exported plugin.
-
@Christoph-Hart
Thanks so much.So I'm currently trying to export the full effect as a DLL and here are the issues facing:
-
The autogenerated Juce file comes without all the paths and flags to activate Faust.
.
Is there a way to automate this process? -
I solved this issue by setting all the paths and flags to make it work. I opened Xcode to build the file and the DSP file is not in the expected folder:
The file is saved in _PROJECT/DspNetworks/Code library, but the program expects it to be in _PROJECT/DspNetworks/ThirdParty/Src. Is the program supposed to fetch the file from the Code library and transfer it to src? Or, should I do it every time? -
I solved the issue by copying and pasting the file to src. I again saved the .juicer file and opened xcode to see if it compiles, unfortunately, I get a lot of syntax-compiling errors related to the whole scriptnode effect itself (script_fx1.h).
.
That's how far I've got... Wondering if you have any idea of all of this happening and if @Straticah got the same issues as well.
Thanks
-