Bipolar LFO's

  • I hear you guys, however the modulation system in HISE is so fundamental that I can't go around and change the behaviour of things without breaking every single project made with HISE and any addition I will do has to be with the minimum amount of overhead.

    To be honest when I designed the modulation system, I tried to mimic the way KONTAKT is doing it's modulation as close as possible to make the transition more smooth (LOL), but I agree that while this modulation system works well for sample libraries, it's not as versatile as you need it to be for proper synth design.

    I might have a solution that allows total flexibility and this is to just add a small SNEX snippet that processes the modulation signal as you need it to be that can be inserted to any modulator. In the end, every single modulator creates a signal between 0 and 1, and HISE tries to convert this range into a "sensible" range depending on the context with the intensity being applied correctly.

    This code mimics the conventional HISE (gain) modulation way:

    /*  the modSignal is a float array, the intensity the value from the slider.
    void process(block modSignal, float intensity)
        for(auto& sample: modSignal)
            sample = (1.0f - intensity) + intensity * sample;

    So in order to get a truly bipolar modulation for the LFO, all you need to do is to change this

        sample = (1.0f - intensity) + intensity * sample;


        sample =  1.0f + (sample - 0.5f) * intensity;

  • @Christoph-Hart said in Bipolar LFO's:

    his code mimics the conventional HISE (gain) modulation way:

    Not entirely sure how to apply this , do I need to use a scriptnode modulator and use this as a SNEX/Jit or can I somehow place a SNEX snippet into the normal lfo ?

    @Lunacy-Audio Do you understand how to use this ?
    @orange . thoughts ?

  • @lalalandsynth Was going to ask you 😂

    @Christoph-Hart Could you possibly upload a simple snippet? Would be greatly appreciated!


  • @orange . thoughts ?

    I haven't used that yet.

  • It's not implemented yet, so a snippet would make no sense, but the idea is to be able to click on the modulation bar (maybe a context menu on the intensity slider) which opens a small popup where you can edit this code.

  • @Christoph-Hart

    Did this ever get implemented? This would be super helpful.

  • ycdiws (you can do it with scriptnode) 🙂

  • @Christoph-Hart

    Is there an example I could look at of how to do this with scriptnode?

    Is this something that could be easily changed in the Hise source code for those who want it?


  • There are some scriptnode LFO examples in this thread which might help you get started.

  • @d-healey

    I will check out those examples but I'm not sure that will help me.
    I think the issue is not with the LFO but how the modulator target behaves.

    Now it goes from 0 to the cutoff amount rather than plus or minus around the filter cutoff amount.

    I see how I could create a filter in scriptnode with LFOs to modulate the cutoff amount in the way that I want but now how I would integrate that into the rest of the instrument. Especially since if you want a filter to respond to voice events like polyphonic envelopes they need to be attached to a sampler/synth module.

  • @Christoph-Hart

    Do you recommend I build a filter as a polyphonic scriptFX that includes a poly adsr and lfo all in one scriptFX? Is there a way yet to route global modulators into a scriptFX?

    I am having some success with mono envelopes in scriptnode but haven't had much luck with poly envelopes or the mod chain in general.

Log in to reply