HISE Logo Forum
    • Categories
    • Register
    • Login

    Custom Dsp Nodes 101

    Scheduled Pinned Locked Moved ScriptNode
    24 Posts 5 Posters 1.9k 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.
    • S
      Sawer
      last edited by

      Hello everyone.

      I am currently learning how to make fx from scratch using scriptnode . I am referencing from the book "Hack Audio" By Erick Tarr.

      I want to make a vibrato FX ( there's already one using the Pitch modulation FX ) however I need more flexibility (routing, delay etc) in order to achieve that, and maybe use that to create chorus later.
      This is my starting point, and it sounds bad :) . How can I improve it ?
      Screenshot 2023-07-05 at 10.59.40.png

      Secondly, Scriptnode has been here for a while and there's little tutorial or documentation(Snex even worse, although super interested) .
      I truly understand how Christoph is busy mantaining and improving HISE, so I want to take the opportunity to this this thread to learn, share and improve our custom dsp scriptnodes together.

      Thirdly, what is the difference with using RNBO and scriptnode?
      Are there any advantages or disadvantages?

      What are the limits of scriptnode?
      Is it possible for example build a whole custom algorithmic reverb?

      ustkU 1 Reply Last reply Reply Quote 0
      • ustkU
        ustk @Sawer
        last edited by ustk

        @Sawer said in Custom Dsp Nodes 101:

        I want to make a vibrato FX ( there's already one using the Pitch modulation FX ) however I need more flexibility (routing, delay etc) in order to achieve that, and maybe use that to create chorus later.
        This is my starting point, and it sounds bad :) . How can I improve it ?

        The main issue here is the container. a fixblock isn't adapted, prefer a frame for this task
        Set a low freq of 1 or 2Hz as starting point and lower the gain
        Set the max delay time to 10
        The very secret trick now is to square the sine. Because changing the time with a sinus creates a derivative that result in a non sinusoid that isn't pleasant to the ear (I probably explain it very badly though...). So if you square it first, the result is a nice sine (try with a triangle without squaring it, it will be obvious that what you hear isn't a triangle but a saw instead)
        Note that I used a pow operator but there's a square node in the math section too
        Also this multiplies the frequency by two, so you might want to set the Freq Ratio to 0.5

        Screenshot 2023-07-05 at 12.09.58.png

        Thirdly, what is the difference with using RNBO and scriptnode?
        Are there any advantages or disadvantages?

        They are just two distinct DSP environments, so it depends on which one you feel more comfortable with.
        Even if I don't use RNBO personally, it is probably more powerful. That been said if you are just getting your marks into DSP scriptnode is probably a good choice because it is simple and there's no extra headache to integrate within a Hise project.

        What are the limits of scriptnode?

        Audio wise, not many! Especially once you combine it with SNEX (or C++) node

        Is it possible for example build a whole custom algorithmic reverb?

        Absolutely, you can build complex networks such as a reverb.
        The only limitation is the power of your computer. I have made a big reverb and my old iMac is suffering, but it holds. So if you have a decent machine it's all good

        Many people are wondering how to make a DSP and I've been there and still be for a long time.

        The best advice I can give is to read and watch DSP content as much as you can, and soon the different concepts will be clearer so it will make sense how to use the nodes, operators, etc... In the end it is just transferring DSP code into a graph. This code will soon appear like a graph representation in your mind.
        Many DSP are represented with a diagram, which is almost a scriptnode graph already so the implementation is even easier.

        An aspect that isn't alway obvious is where to use the different containers like frame, fixblock, and oversample

        Can't help pressing F5 in the forum...

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

          @ustk Amazing! I got so much progress out of it!
          However, the oscillation in terms of pitch is the same even if I change the frequency amount.
          It shifts only by a semitone or something like that... Is it normal?

          Thanks so much for the full description of scriptnode.

          ustkU 1 Reply Last reply Reply Quote 0
          • ustkU
            ustk @Sawer
            last edited by

            @Sawer The precise amount of shifting is hard to predict
            Because it depends both on the amplitude, and on the frequency.
            It's strange that you don't get it going higher when changing the Freq... Try to raise the Gain
            Also this is a starting point that I made in 2min, it's not perfect and needs some tweaking

            Can't help pressing F5 in the forum...

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

              @ustk I am trying to just emulate the LFO modulator in the pitch FX.
              I realised with your example that the frequency changes the amount of oscillations.
              So what is missed is the intensity, just like in the picture here:

              Screenshot 2023-07-09 at 14.40.01.png

              How can I achieve that particular property in the scriptnode?

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

                @ustk Update: I just had to change the amount of delay.

                ustkU 1 Reply Last reply Reply Quote 1
                • ustkU
                  ustk @Sawer
                  last edited by

                  @Sawer Yes, or you can also change the gain. If it's already set to 1.0, then you can add a math.mul

                  Can't help pressing F5 in the forum...

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

                    @ustk Thank so much, will modify it again now. However, I'm getting compilation errors:
                    Screenshot 2023-07-09 at 17.19.32.png

                    Any idea of what i'm missing?

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

                      @Sawer Update: Error is that the smoother class is not properly setup with parameters

                      template <int NV>
                      using modchain_t_ = container::chain<parameter::empty, 
                                                       wrap::fix<1, oscillator_t<NV>>, 
                                                       core::smoother //Here's the problem, 
                                                       math::pow<NV>, 
                                                       math::sig2mod<NV>, 
                                                       peak_t>;
                      
                      

                      The solution is to put everytime

                      template <int NV>
                      using modchain_t_ = container::chain<parameter::empty, 
                                                           wrap::fix<1, oscillator_t<NV>>, 
                                                           core::smoother<NV> //Why does it not make it automatically?, 
                                                           math::pow<NV>, 
                                                           math::sig2mod<NV>, 
                                                           peak_t>;
                      
                      

                      Why does it not complete the parameters automatically, just like the other nodes?
                      Is there a solution?

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

                        @Sawer Are you using the latest HISE version? I remember fixing this a few months ago.

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

                          @Christoph-Hart Okk, thanks will checkout soon then!

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

                            I've been working on multiple FX so far.

                            Just as the default fx that are always incorporated in any new Hise project, how can I save and recall my fx in a way that I do not have to do them again for each project?

                            S 1 Reply Last reply Reply Quote 0
                            • Dominik MayerD Dominik Mayer moved this topic from Presets / Scripts / Ideas on
                            • S
                              Sawer @Sawer
                              last edited by

                              Hello everyone.

                              Trying to improve a vibrato FX I created in scriptnode.
                              When using the node on the scriptfX, everything works.

                              However, when it is compiled, and loaded in HardcodedScriptFX, it does now work properly anymore. the Vibrato only starts it's processing when I move the Rate knob. If I do not touch anything, then the processing is not happening.

                              Am I doing Something wrong? Screenshot 2023-08-13 at 13.44.53.png

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

                                @Sawer Are you using the latest develop branch of HISE?

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

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  Sawer @d.healey
                                  last edited by

                                  @d-healey Yeah, the 3.5. Wanted to make this work before moving to the newly 3.6 version

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

                                    @Sawer But the bug is in 3.5 :p

                                    Link Preview Image
                                    - fix delay node in hardcoded network not being initialised correctly… · christophhart/HISE@f9b4ae0

                                    The open source framework for sample based instruments - - fix delay node in hardcoded network not being initialised correctly… · christophhart/HISE@f9b4ae0

                                    favicon

                                    GitHub (github.com)

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

                                    S 1 Reply Last reply Reply Quote 1
                                    • S
                                      Sawer @d.healey
                                      last edited by

                                      @d-healey Yes ahah thanks for pointing it out.
                                      I have successfuly updated to the new version on mac and windows.

                                      But unfortunately, Hise Keep crashing when compiling DSP Network. (Happening on windows for now, will test on mac soon).

                                      Is this happened to anyone of you?

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

                                        @Sawer same Issue on mac, I cannot even export any of the plugins.

                                        When compiling any plugin :
                                        Screenshot 2023-08-14 at 09.54.17.png

                                        When compiling a Dsp Network to DLL:
                                        Screenshot 2023-08-14 at 09.52.12.png

                                        Is there anything I've done wrong in the process of building the new version of Hise?

                                        Will create a new thread soon..

                                        ulrikU 1 Reply Last reply Reply Quote 0
                                        • ulrikU
                                          ulrik @Sawer
                                          last edited by

                                          @Sawer I had similar problems and I deleted the "AdditionalSourceCode" folder inside the project, compiled Networks again and compiled the plugin without any errors.

                                          Hise Develop branch
                                          MacOs 15.3.1, Xcode 16.2
                                          http://musikboden.se

                                          S 2 Replies Last reply Reply Quote 1
                                          • S
                                            Sawer @ulrik
                                            last edited by

                                            @ulrik Will try that asap! thanks

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

                                            11

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            103.2k

                                            Posts