HISE Logo Forum
    • Categories
    • Register
    • Login

    Faust is here...

    Scheduled Pinned Locked Moved Faust Development
    96 Posts 21 Posters 13.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • StraticahS
      Straticah @Christoph Hart
      last edited by

      @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. ^^

      building user interfaces in HISE :)
      web: www.vst-design.com

      Christoph HartC 1 Reply Last reply Reply Quote 0
      • Christoph HartC
        Christoph Hart @Straticah
        last edited by

        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:

        1. Design the effects in scriptnode
        2. Compile them to C++ effects
        3. 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.

        StraticahS S 2 Replies Last reply Reply Quote 1
        • StraticahS
          Straticah @Christoph Hart
          last edited by Straticah

          @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 . . .
          

          building user interfaces in HISE :)
          web: www.vst-design.com

          Christoph HartC 1 Reply Last reply Reply Quote 0
          • Christoph HartC
            Christoph Hart @Straticah
            last edited by

            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".

            StraticahS 1 Reply Last reply Reply Quote 0
            • StraticahS
              Straticah @Christoph Hart
              last edited by

              @Christoph-Hart okay, good to know :)

              building user interfaces in HISE :)
              web: www.vst-design.com

              1 Reply Last reply Reply Quote 0
              • S
                Sawer @Christoph Hart
                last edited by

                @Christoph-Hart
                Ok, do I need to compile the whole scriptnode into a custom-project c++ class or only the faust node?

                Thanks

                Christoph HartC 1 Reply Last reply Reply Quote 0
                • Christoph HartC
                  Christoph Hart @Sawer
                  last edited by

                  @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.

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    Sawer @Christoph Hart
                    last edited by Sawer

                    @Christoph-Hart
                    Thanks so much.

                    So I'm currently trying to export the full effect as a DLL and here are the issues facing:

                    1. The autogenerated Juce file comes without all the paths and flags to activate Faust.
                      Screenshot 2022-11-18 at 09.00.56.png .
                      Is there a way to automate this process?

                    2. 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:
                      Screenshot 2022-11-18 at 09.05.28.png
                      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?

                    3. 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).
                      Screenshot 2022-11-18 at 09.05.48.png .

                    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

                    Christoph HartC 1 Reply Last reply Reply Quote 0
                    • Christoph HartC
                      Christoph Hart @Sawer
                      last edited by

                      You've got it wrong somewhere at the beginning, it is supposed to be a fully automated process without having to move files around or add custom flags.

                      I'll check again here on my Macbook if something broke the export along the way.

                      S 1 Reply Last reply Reply Quote 0
                      • S
                        Sawer @Christoph Hart
                        last edited by

                        @Christoph-Hart Ok I Will also try again on my end to see if the project settings are on point

                        Christoph HartC 1 Reply Last reply Reply Quote 0
                        • Christoph HartC
                          Christoph Hart @Sawer
                          last edited by

                          Nope, works here perfectly.

                          Have you copied the faust files into the HISE tools/faust folder? I changed the build configuration on macOS so that you don't need to fiddle around with compiler flags anymore and this might have broken the export if you're still using a faust path at another location. Here's the instruction list:

                          Link Preview Image
                          HISE/tools/faust at develop · christophhart/HISE

                          The open source framework for sample based instruments - HISE/tools/faust at develop · christophhart/HISE

                          favicon

                          GitHub (github.com)

                          S 2 Replies Last reply Reply Quote 0
                          • S
                            Sawer @Christoph Hart
                            last edited by Sawer

                            @Christoph-Hart You are right:
                            Screenshot 2022-11-18 at 09.33.18.png
                            I only have the fakelib..

                            1 Reply Last reply Reply Quote 0
                            • S
                              Sawer @Christoph Hart
                              last edited by

                              @Christoph-Hart If I am right I've just copied and pasted the folders from the main Faust folder into tools/faust. Hope this works

                              Christoph HartC 1 Reply Last reply Reply Quote 0
                              • Christoph HartC
                                Christoph Hart @Sawer
                                last edited by

                                @Sawer Have you installed the x64 version of Faust? You must not copy the ARM binaries in there if you're on a M1 machine.

                                S 1 Reply Last reply Reply Quote 1
                                • S
                                  Sawer @Christoph Hart
                                  last edited by

                                  @Christoph-Hart The copying and pasting works perfectly. Now I have the effect working in the Hardcodedmaster FX.

                                  Thank you so much Christoph!

                                  Christoph HartC 1 Reply Last reply Reply Quote 0
                                  • Christoph HartC
                                    Christoph Hart @Sawer
                                    last edited by

                                    @Sawer Alright. FYI I've also added a new post with the current updated build instructions that will hopefully clear things up.

                                    1 Reply Last reply Reply Quote 1
                                    • hisefiloH
                                      hisefilo @Christoph Hart
                                      last edited by

                                      @Christoph-Hart said in Faust is here...:

                                      • support for MIDI and polyphony (at the moment it's only possible to use Faust for audio effects)

                                      I can't get Faust MIDI instrument to be polyphonic. I'm adding in into a ScriptFX module. Within a Midi chain. How do I enable polyphony?

                                      HiseSnippet 1044.3ocuWrsaZbDcVLiSg5dIRsuyiNRtVPaRZkxCAC1zhZMAk00JuEMd1AyHlclMyNXBIpR8g9P+S5uQ+U5eP+CZOmcV7tXnTaRZAIzdte+bVFZMbQZpwRBpc17DAIXOZ3bsab2wLolz+XRvGSOkk5D1FdTclmvRSEQjffc9VDQPspjrO+4S6vTLMWTfhPN2H4hePFKcEXG196kJUOVj3LYbIteX69bitqQYlB9yNzljDFeB6Rw.FxVEJIX2ShjNiMzwbhTfmNln4giMyzd9OWlJuPIPfVjPPQdzjtikpngKh0TBIn5vhHeGej+YzSkQxqwWjA9zLBMJjnbNHnxlboV2AWJnjKU06R2mFxsxDWAEze9PZeMTPFwfTcYWwyKI32ocM.CZ2gwrIhdV.3ZA1+wMadPC3mG7jQS0bmznaXzCLNwyz6+f5usds5+T8F2jznQqkFZFqQoD10RFqt1MI395owWHrGz3JlZp3ZFgve4b5t2tbJ2G0kXzn6qktmkHxg6YTQXtBed0J.IOsAO8i8Ol4XXQIGGvWhv5jn6Dbr3Jnq1WhpQOVjNwYRf95UpePmiIZph4VtcBmaxI.4ikpgXgRmJcyKOWcydrp+y4ilkxG+KQ6szcuOcnzwGud+sxZ7WHq8es+lOw9QzSFMRvcENaUZuWrwwyp2tVoBW41NpVOeTErO5H6kC1n2KZs1gzekVLPjXEILq3LyPEa99or3Dk34f+dPiKTF9jP4aDqNEk3cgNHG6yGyzZgJcaF1188zBLxyMScR8kmxbV4qIAzASiCgU4bQ2buCvETAmy7vMQXreITnix.9K3SNwVHbPNwVKHVZDcfvMyXmjUNxeFhEet+3zjEnNRoLyFZTySFazRddLIroXmbv8nMOD954pqINQl2iCUJO3Bm+nXyTvt4Qv2wROiIU3DPPkAlHH8P6w3PZb9PlaLN0faif1Rg8P90smK4YEcEX9DUxhSe9rBX+XLTyN7sCR2Gqdq4ODDCGl7peIq+4krdAKu6F7dzQrootkM1dfwrhC8Tta1nzVU.SNDrJoBZrZztJPW8iHmicrn0gFTWqrMAkY7SvNsgLK7VBvUtzErm0kVBMZuEPPmxoRcNiKVb0u8orWuLtjeqcnSjfSf43Z+Gu4WdZ3DwLeNn7ZZzW1kNxJdEYYs7yusMYyllPVwzfBuql9RrJuhVdeXZOtMZZmfrhlIgyvaGmwrWJbY6vKUNHKU8CtQQcOZ+zyQpblZghgQu2YEzwXlDyx1arcW4++XKWLiaMuj6WbiA2GjgA5f0YuJbM3cxA3FsHW4CLJtGifi5ujywyfeALlrdY9xsPluZKj4gagLOZKj4wagLe8VHy2rQYv+gvQSclX+4C.wvSxZtBBNQyf6mYG+I+sILhYM
                                      

                                      Faust Code:

                                      import("stdfaust.lib");
                                      freq = hslider("freq",440,50,3000,0.01);
                                      gain = hslider("gain",1,0,1,0.01);
                                      gate = button("gate");
                                      envelope = gain*gate : si.smoo;
                                      process = os.osc(freq),os.osc(freq*2),os.osc(freq*3) :> /(3)*envelope <:_,_;
                                      

                                      Screen Shot 2022-11-18 at 7.50.44 AM.png

                                      hisefiloH 1 Reply Last reply Reply Quote 0
                                      • hisefiloH
                                        hisefilo @hisefilo
                                        last edited by

                                        @hisefilo I guess Scriptnode Synthesiser is the right way! Not a Script FX
                                        I'm polyphonic now! Yeah!!!!

                                        Screen Shot 2022-11-18 at 8.19.42 AM.png

                                        1 Reply Last reply Reply Quote 2
                                        • S
                                          Sounddiy
                                          last edited by

                                          Hi

                                          I compiled yesterday last Hise develop branch with faust release.
                                          I Carefully did what We need to do for installation :

                                          [https://resonant-bytes.de/blog/gsoc-final-submission/](link url)

                                          I tried to import the script from christopher but I have an error :

                                          *import("stdfaust.lib");
                                          "This expression is not a function"

                                          faust1.PNG

                                          faust 2.PNG

                                          Any idea?

                                          thanks

                                          Mathieu

                                          DabDabD 1 Reply Last reply Reply Quote 0
                                          • DabDabD
                                            DabDab @Sounddiy
                                            last edited by DabDab

                                            @Sounddiy You will have to run this code on Faust Editor
                                            https://forum.hise.audio/topic/6619/unable-to-open-file-stdfaust-lib/7?_=1669828543774

                                            Bollywood Music Producer and Trance Producer.

                                            S 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            27

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.7k

                                            Posts