HISE Logo Forum
    • Categories
    • Register
    • Login

    Faust is here...

    Scheduled Pinned Locked Moved Faust Development
    96 Posts 21 Posters 13.3k 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.
    • Christoph HartC
      Christoph Hart
      last edited by Christoph Hart

      Hi everybody,

      I'm very thrilled to announce that the Faust integration is merged into the develop branch and ready to test.

      The implementation of the Faust integration was a Google Summer of Code project that I was mentoring together with Stéphane Letz, @sletz from the GRAME Research Lab. The project was carried out by @etXzat which I would like to introduce with a warm welcome and I'm sure he's happy to answer some questions about the process or anything Faust related as he knows much more about the actual language than I do.

      The Faust language allows you to write DSP algorithms using a very concise language. It's been around for quite some time and has a lively community of developers and a vast library of existing DSP algorithms that I know all of you are dying to play around with.

      Bildschirmfoto 2022-10-11 um 23.12.59.png

      The current state of the Faust integration allows the full production cycle of using Faust within a HISE project:

      • add the core.faust node
      • write / import Faust code using the LLVM Jit compiler. Parameters will be parsed automatically and show up as node parameters that can be connected / modulated like any other parameter
      • export faust code as C++ nodes (a DSP network with a faust node will create a C++ class from the faust node and use the C++ class instead when you export the network to the DLL)
      • reload them as HardcodedFX modules or nodes in scriptnode

      @etXzat has written a extensive blog post about the integration process as well as the build instructions and a quick getting started guide:

      GSoC: Final Submission – ResonantBytes

      favicon

      (resonant-bytes.de)

      By default Faust is disabled in HISE because it requires a few non-trivial configuration steps and let's be honest, HISE isn't the most easiest software to get started with so there's no need to make it even harder...

      So if you want to dive into Faust development in HISE, make sure to read the build instructions on the blog post and let us know if there are any roadblocks (we've been testing it on all three platforms the last week but I wouldn't be too surprised if we missed some build issues).

      Also we would like to start the discussion on what steps should be next as there are quite a few features that we couldn't realize within the projects timeframe but hopefully will be added over the next months:

      • support for MIDI and polyphony (at the moment it's only possible to use Faust for audio effects)
      • enhanced IDE features (editing within HISE, SVG path diagram preview, etc).
      • support for complex data communication (tables / slider packs / audio files in Faust)

      I've also added a new category in the HISE forum for anything faust related, so that this topic will not explode with all kinds of different questions.

      orangeO hisefiloH lalalandsynthL 4 Replies Last reply Reply Quote 15
      • Christoph HartC Christoph Hart pinned this topic on
      • orangeO
        orange @Christoph Hart
        last edited by orange

        @Christoph-Hart @etXzat @sletz That's awesome guys. Thank You!

        develop Branch / XCode 13.1
        macOS Monterey / M1 Max

        1 Reply Last reply Reply Quote 1
        • E
          etXzat
          last edited by

          Hi there!
          This is Roman and I implemented the Faust integration as Christoph mentioned.
          I'm happy to be here and hear about your experiences and help out if you encounter some of the still rough edges!
          Also I'm excited to see and hear what you guys come up with! :)

          LindonL 1 Reply Last reply Reply Quote 9
          • d.healeyD
            d.healey
            last edited by

            Excellent work, well done!

            Libre Wave - Freedom respecting instruments and effects
            My Patreon - HISE tutorials
            YouTube Channel - Public HISE tutorials

            1 Reply Last reply Reply Quote 1
            • d.healeyD
              d.healey
              last edited by

              I'm particularly looking forward to the MIDI and sound generators. So where does this leave SNEX?

              Libre Wave - Freedom respecting instruments and effects
              My Patreon - HISE tutorials
              YouTube Channel - Public HISE tutorials

              1 Reply Last reply Reply Quote 0
              • Dan KorneffD
                Dan Korneff
                last edited by

                I'm so so so happy about this! Thanks so much for making this happen!

                Dan Korneff - Producer / Mixer / Audio Nerd

                Christoph HartC 1 Reply Last reply Reply Quote 0
                • LindonL
                  Lindon @etXzat
                  last edited by

                  @etXzat well done . Great Work.

                  HISE Development for hire.
                  www.channelrobot.com

                  DanHD 1 Reply Last reply Reply Quote 0
                  • DanHD
                    DanH @Lindon
                    last edited by

                    much excite :)

                    DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                    https://dhplugins.com/ | https://dcbreaks.com/
                    London, UK

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

                      So as a little teaser that goes beyond hello world: here's a little snippet that includes a much much much better sounding reverb than the stock JUCE / HISE reverb:

                      // Faust Source File: reverbtest
                      // Created with HISE on 2022-10-12
                      import("stdfaust.lib");
                      
                      // approximate reverberation time in seconds ([0.1..60] sec) (T60 - the time for the reverb to decay by 60db when damp == 0 ). Does not effect early reflections
                      t60 = hslider("ReverbTime", 4.2, 0.1, 12, 0.1); 
                      
                      // controls damping of high-frequencies as the reverb decays. 0 is no damping, 1 is very strong damping. Values should be between ([0..1])
                      damp = hslider("Damping", 0.5, 0.0, 1.0, 0.01); 
                      
                      // scales size of delay-lines within the reverberator, producing the impression of a larger or smaller space. Values below 1 can sound metallic. Values should be between [0.5..5]
                      size = hslider("Size", 3.5, 0.5, 5.0, 0.01); 
                      
                      // controls shape of early reflections. Values of 0.707 or more produce smooth exponential decay. Lower values produce a slower build-up of echoes. Values should be between ([0..1])
                      early_diff = hslider("Diffusion", 0.707, 0.0, 1.0, 0.01); 
                      
                      // depth ([0..1]) of delay-line modulation. Use in combination with mod_freq to set amount of chorusing within the structure
                      mod_depth = hslider("Mod Depth", 0.1, 0.0, 1.0, 0.01);
                      
                      // frequency ([0..10] Hz) of delay-line modulation. Use in combination with modDepth to set amount of chorusing within the structure
                      mod_freq = hslider("Mod Frequency", 0.1, 0.0, 10.0, 0.01); 
                      
                      // multiplier ([0..1]) for the reverberation time within the low band
                      low = hslider("LF Gain", 1.0, 0.0, 1.0, 0.01);
                      
                      mid = 1.0; // multiplier ([0..1]) for the reverberation time within the mid band
                      
                      // multiplier ([0..1]) for the reverberation time within the high band
                      high = hslider("HF Gain", 1.0, 0.0, 1.0, 0.01); 
                      
                      lowcut = 600;// frequency (100..6000 Hz) at which the crossover between the low and mid bands of the reverb occurs
                      highcut = 5000; // frequency (1000..10000 Hz) at which the crossover between the mid and high bands of the reverb
                      
                      process = re.jpverb(t60, damp, size, early_diff, mod_depth, mod_freq, low, mid, high, lowcut, highcut);
                      

                      There's absolutely no IP from my side involved here, I'm just wrapping an existing reverb from the library (and there are plenty of other reverbs / delays that can be imported without too much knowledge of the faust language).

                      Link Preview Image
                      Faust Libraries

                      Faust Libraries Documentation.

                      favicon

                      (faustlibraries.grame.fr)

                      Just be careful about the license of those effects, not all of them are permissively licensed and some can only be used under the GPL license (this particular one should be fine as it's MIT licensed if I read the license header correctly).

                      So where does this leave SNEX?

                      SNEX is here to stay and I still think it has a reason of existence as a gateway drug into C++ and more simple tasks (using the ThirdParty code C++ API is pretty much the same as writing SNEX code). Also the integration with HISE is more tight than with Faust (at least at the moment) so Faust is just a (really powerful) addition to the arsenal of tools in HISE.

                      DabDabD 1 Reply Last reply Reply Quote 5
                      • NatanN
                        Natan
                        last edited by

                        Amazing 👏🙌💯🔥🥃
                        You guys rock 🤛⭐️⭐️⭐️⭐️⭐️ @Christoph-Hart @etXzat 👏

                        1 Reply Last reply Reply Quote 0
                        • Matt_SFM
                          Matt_SF
                          last edited by

                          Great job @Christoph-Hart @sletz @etXzat !!! Thank you very much for all the effort!

                          Develop branch
                          Win10 & VS17 / Ventura & Xcode 14. 3

                          DanHD 1 Reply Last reply Reply Quote 0
                          • DanHD
                            DanH @Matt_SF
                            last edited by

                            @Christoph-Hart just tried building on osx and this popped up and failed:

                            Screenshot 2022-10-12 at 14.04.35.png

                            DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                            https://dhplugins.com/ | https://dcbreaks.com/
                            London, UK

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

                              @DanH Have you installed faust and setup the include directories like described in the build instructions?

                              DanHD 1 Reply Last reply Reply Quote 0
                              • DanHD
                                DanH @Christoph Hart
                                last edited by DanH

                                @Christoph-Hart oops - do I need to do that even if I don't want to use faust right now?

                                DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                https://dhplugins.com/ | https://dcbreaks.com/
                                London, UK

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

                                  @DanH actually no that was an oversight - the idea is that there is absolutely no overhead unless you want to use Faust, then you're in a world of pain setting up all those include paths :)

                                  Try again, it should now build without faust.

                                  DanHD 1 Reply Last reply Reply Quote 1
                                  • DanHD
                                    DanH @Christoph Hart
                                    last edited by

                                    @Christoph-Hart thanks!

                                    DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                    https://dhplugins.com/ | https://dcbreaks.com/
                                    London, UK

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

                                      @Christoph-Hart OMG this is awesome. Thanks Christoph

                                      1 Reply Last reply Reply Quote 0
                                      • lalalandsynthL
                                        lalalandsynth @Christoph Hart
                                        last edited by

                                        @Christoph-Hart This is crazy !

                                        https://lalalandaudio.com/

                                        https://lalalandsynth.com/

                                        https://www.facebook.com/lalalandsynth

                                        https://www.facebook.com/lalalandsynth

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          sletz
                                          last edited by

                                          @etXzat and @Christoph-Hart did most of the hard work of "inside HISE" integration and they have to be thanked for that.

                                          On the Faust side, the project adds to the existing ecosystem (https://faust.grame.fr/community/made-with-faust/) and we are quite happy with that :beaming_face_with_smiling_eyes:

                                          @etXzat or @Christoph-Hart do you have a nice screenshot we could add on the https://faust.grame.fr/community/made-with-faust/ page?

                                          1 Reply Last reply Reply Quote 5
                                          • P
                                            ps
                                            last edited by

                                            What an awesome addition! Thanks for all the effort.
                                            So I compiled Hise with Faust enabled and made a Faust node in Scriptnode using the reverb example (in a dry/wet split node) - it compiled inside scriptnode like a charm and sounds just great :)
                                            To make sure everything works as expected in a compiled plugin I at first compiled as an FX Plugin with leaving the network "open" - it compiled without errors. (AU Mac M1) but inside the DAW the test plugin showed but the reverb was not audible, like if the node was bypassed.
                                            So I tried compiling the network as .dll first. Once I hit the compile button HISE instantly crashed and also the HISE preset crashes instantly now when I try to open it again.
                                            Did I miss something?
                                            Thanks for the help!

                                            Christoph HartC 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            47

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            101.8k

                                            Posts