Custom Dsp Nodes 101
-
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 ?
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? -
@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.5Thirdly, 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 goodMany 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
-
@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.
-
@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 -
@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:How can I achieve that particular property in the scriptnode?
-
@ustk Update: I just had to change the amount of delay.
-
@Sawer Yes, or you can also change the gain. If it's already set to
1.0
, then you can add amath.mul
-
@ustk Thank so much, will modify it again now. However, I'm getting compilation errors:
Any idea of what i'm missing?
-
@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 <NV> 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? -
@Sawer Are you using the latest HISE version? I remember fixing this a few months ago.
-
@Christoph-Hart Okk, thanks will checkout soon then!
-
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?
-
-
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?
-
@Sawer Are you using the latest develop branch of HISE?
-
@d-healey Yeah, the 3.5. Wanted to make this work before moving to the newly 3.6 version
-
@Sawer But the bug is in 3.5 :p
https://github.com/christophhart/HISE/commit/f9b4ae07f40632508bcdbabda26f958f8591e8ab
-
@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?
-
@Sawer same Issue on mac, I cannot even export any of the plugins.
When compiling any plugin :
When compiling a Dsp Network to DLL:
Is there anything I've done wrong in the process of building the new version of Hise?
Will create a new thread soon..
-
@Sawer I had similar problems and I deleted the "AdditionalSourceCode" folder inside the project, compiled Networks again and compiled the plugin without any errors.
-
@ulrik Will try that asap! thanks