HISE Logo Forum
    • Categories
    • Register
    • Login

    Global pitch modulator problem

    Scheduled Pinned Locked Moved General Questions
    60 Posts 4 Posters 4.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.
    • Christoph HartC
      Christoph Hart
      last edited by

      Ok, I think I finally get somewhere here.

      The LFO will now work as expected when used in the pitch modulation chain. The days of having a weird constant mod that offsets the pitch modulation is over. The fade in and intensity modulation will now start from the center so if the intensity is modulated to zero the pitch will be exactly the same as when you bypass the LFO (by the way this also affects the stereo FX modulation which is basically the same problem).

      However this will not solve the problem we have with the global modulators, but at least it's a solid foundation to build upon. Now my suggested solution is to add a new mode for the global modulators that can be switched between unipolar and bipolar. The default will be unipolar, but for our use case, we'll switch the LFO to bipolar and then all our problems are gone. The only thing that will be different is that now the gain modulation will be bipolar, but that's less of a problem than having to correct the pitch modulation.

      d.healeyD 1 Reply Last reply Reply Quote 3
      • d.healeyD
        d.healey @Christoph Hart
        last edited by

        @Christoph-Hart said in Global pitch modulator problem:

        global modulators that can be switched between unipolar and bipolar.

        Will that cause an issue if you want to use the same LFO for both gain and pitch?

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

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

          It will be different (not sure if it qualifies as "issue"): if you set it to bipolar, the LFO will oscillate around the center. In gain mode the center is -6dB (0.5) so you will notice some ducking if you enable the modulation (but the ducking will be constant if you modulate the LFO intensity so no weird compensation hacks anymore).

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

            @Christoph-Hart Well I can't see any immediate problems with the idea :)

            Would I still need a compensation hack to prevent the ducking? I'm thinking my vibrato is suddenly going to sound quieter than my sustain, unless I use two LFOs but again that negates the advantage of global LFOs. Could add the bipolar/unipolar thing to the target rather than the origin?

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

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

              @d-healey said in Global pitch modulator problem:

              Could add the bipolar/unipolar thing to the target rather than the origin?

              No, that's the entire problem. The LFO has to behave differently depending on whether it should be bipolar or not, thus the entire brainfuck.

              Would I still need a compensation hack to prevent the ducking?

              Add a simple gain with +6dB. Done.

              BTW, I've just committed everything, so you can check it for yourself if it works like you need it.

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

                @Christoph-Hart said in Global pitch modulator problem:

                Add a simple gain with +6dB. Done.
                BTW, I've just committed everything, so you can check it for yourself if it works like you need it.

                Thank you I'll take a look now. The simple gain will also boost regardless of the LFO intensity.

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

                Christoph HartC 1 Reply Last reply Reply Quote 0
                • Christoph HartC
                  Christoph Hart @d.healey
                  last edited by

                  @d-healey And the LFO will duck it regardless the LFO intensity so you're fine :)

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

                    @Christoph-Hart Aha that's good :)

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

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

                      Getting a few build errors - to do with the scriptnode additions I think

                      ../../../../../HISE/hi_backend/../hi_modules/nodes/HiseNodes.h:152:24: error: ‘extra_mod’ does not name a type
                        152 |   DEF_PARAMETER(Index, extra_mod);
                            |                        ^~~~~~~~~
                      ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/../hi_dsp/../hi_dsp_library/node_api/helpers/node_macros.h:51:112: note: in definition of macro ‘DEF_PARAMETER’
                         51 | #define DEF_PARAMETER(ParameterName, ClassName) if constexpr (P == (int)Parameters::ParameterName) static_cast<ClassName*>(obj)->set##ParameterName(value);
                            |                                                                                                                ^~~~~~~~~
                      ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/../hi_dsp/../hi_dsp_library/node_api/helpers/node_macros.h:51:121: error: expected ‘>’ before ‘*’ token
                         51 | #define DEF_PARAMETER(ParameterName, ClassName) if constexpr (P == (int)Parameters::ParameterName) static_cast<ClassName*>(obj)->set##ParameterName(value);
                            |                                                                                                                         ^
                      ../../../../../HISE/hi_backend/../hi_modules/nodes/HiseNodes.h:152:3: note: in expansion of macro ‘DEF_PARAMETER’
                        152 |   DEF_PARAMETER(Index, extra_mod);
                            |   ^~~~~~~~~~~~~
                      ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/../hi_dsp/../hi_dsp_library/node_api/helpers/node_macros.h:51:121: error: expected ‘(’ before ‘*’ token
                         51 | #define DEF_PARAMETER(ParameterName, ClassName) if constexpr (P == (int)Parameters::ParameterName) static_cast<ClassName*>(obj)->set##ParameterName(value);
                            |                                                                                                                         ^
                      ../../../../../HISE/hi_backend/../hi_modules/nodes/HiseNodes.h:152:3: note: in expansion of macro ‘DEF_PARAMETER’
                        152 |   DEF_PARAMETER(Index, extra_mod);
                            |   ^~~~~~~~~~~~~
                      ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/../hi_dsp/../hi_dsp_library/node_api/helpers/node_macros.h:51:122: error: expected primary-expression before ‘>’ token
                         51 | #define DEF_PARAMETER(ParameterName, ClassName) if constexpr (P == (int)Parameters::ParameterName) static_cast<ClassName*>(obj)->set##ParameterName(value);
                            |                                                                                                                          ^
                      ../../../../../HISE/hi_backend/../hi_modules/nodes/HiseNodes.h:152:3: note: in expansion of macro ‘DEF_PARAMETER’
                        152 |   DEF_PARAMETER(Index, extra_mod);
                            |   ^~~~~~~~~~~~~
                      In file included from ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/../hi_dsp/../hi_dsp_library/hi_dsp_library.h:111,
                                       from ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/../hi_dsp/hi_dsp.h:56,
                                       from ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/hi_components.h:57,
                                       from ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/hi_sampler.h:54,
                                       from ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/hi_scripting.h:80,
                                       from ../../../../../HISE/hi_backend/../hi_modules/hi_modules.h:57,
                                       from ../../../../../HISE/hi_backend/hi_backend.h:55,
                                       from ../../Source/../JuceLibraryCode/JuceHeader.h:17,
                                       from ../../Source/MainComponent.h:12,
                                       from ../../Source/MainComponent.cpp:12:
                      ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/../hi_dsp/../hi_dsp_library/node_api/helpers/node_macros.h:51:128: error: invalid use of ‘void’
                         51 | #define DEF_PARAMETER(ParameterName, ClassName) if constexpr (P == (int)Parameters::ParameterName) static_cast<ClassName*>(obj)->set##ParameterName(value);
                            |                                                                                                                                ^~
                      ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/../hi_dsp/../hi_dsp_library/node_api/helpers/node_macros.h:51:128: note: in definition of macro ‘DEF_PARAMETER’
                         51 | #define DEF_PARAMETER(ParameterName, ClassName) if constexpr (P == (int)Parameters::ParameterName) static_cast<ClassName*>(obj)->set##ParameterName(value);
                            |                                                                                                                                ^~
                      ../../../../../HISE/hi_backend/../hi_modules/../hi_scripting/../hi_sampler/../hi_components/../hi_dsp/../hi_dsp_library/node_api/helpers/node_macros.h:51:130: error: expected ‘)’ before ‘setIndex’
                         51 | #define DEF_PARAMETER(ParameterName, ClassName) if constexpr (P == (int)Parameters::ParameterName) static_cast<ClassName*>(obj)->set##ParameterName(value);
                      

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

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

                        oops, try again, it should work now.

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

                          @Christoph-Hart Yep that fixed it.

                          When the LFO is set to bipolar the intensity slider doesn't appear to do anything.

                          HiseSnippet 1193.3oc4X0saiSDE1tId0ltvBKrBgPfjufK5J5VkvVJ+cQZaZRUDIMQ0YKHwEql5bRxnZOiY73.QHtfG.dG3IfmAdD3NtkKg612.3L1NISZyllZkFsqvWX44bNi824m47iaK3tPXHWXXVnyn.vv70rbFwjCpLfPYF0Oxv79VMIgRPXmP5vQAjvPnqgoYtiUDLKj2vv3W+ke9OKeHwivbgTRwWmwotPCpOUNkZ68+JpmWMRWnC0WS5c2utKmUg6wiP7jypnQ.w8BRe3DhRrMrLLuS0tTIW3HIRHDk4Pd2QNC3eOKQ9yngzy8.0hRFN3KJgrQkATutsGqqgF3Kp8TMOWhl+PqlztzIzmZAdyXF1S2gtMvbiEAoR2.HYpAo7IP5AVNtBZfbJGEdtmUcF5P5QPSsNTRj0v72spvQAXxc7IW.0D3hIaXq8JVbaa71i9xdQLWIkyr4rS3RnEaqGs4OtYgM+oMsuLqd8lKO0mQv87.wbYq7thEswsXQ9mChssGR7hfIBhp+r1z6rb1T2DsVSPNqNiJaE.oqqw85prUpmupGvH0rgO8z5GQjDkSIkFJW.HjTEbLOBFhQ0ItnBVGAgWH4AXb8U7eXjCuajGQNa3j5bSJCzdLiOT4nXgT4noGKdd4KGik+EaOJpYOtFscIg6CrZSktClOd2XN3EsZ213M8D6qaUsWOvUNEr4sp8MK734JGJ2MAJum0wd7yIdSMfXbChJH4H6Gjx1dBe6IBT5EkSEu9ikMmZvRmS0L2pJgU9aqbnq03629Jtlva9IxbKGhulr9uQBLsrZTqUpUCeZJvJc8.6PZ.2iHTGMqIfuKBXti4a+aG+OkUQH0Y5QSeMYHziK7SSmM4M0.5ieScJc.+.N1cfq91c74b4.Jq+rwcOb+FbdPUFAsBc0eIsGPBUETBAsn2+tbknPI2eLVhK16Hgf3rvleq0d6tCd06iT2+7J3smzZ0r1X0U+dikNfS4Tm38Tt2WxKAjf3IwSuBf3EVzJ2+OKZcJORhmSaRjB5OfYYNIx2AqJ3BHRXLvC+PVlanZCJYcQ053i3.qa7h+EuRYVRs1LkYowL0U26mnt2yxAKxEOSQrx9NwqsUmzsOFvxeWMw1sdIvVtR7y2QPXgA7vYdwNfOsCmor5SI9zPPE7epJRRmdENQLWVOubMTIm6dbHxHQbH4A97HlblPvbKseWOWzrsSpI+5rlclq.t9ZaN6Eo0SsWXLFcn9AdPU1PvCmMHFiuENLPORjmbL0YCraxY7fAbFclJnmB3Ax98AgN1mqBcfThCDqWj8TvCH5Qve39MvHOh.sSPFsE27wTmq+5csRfqs5zn8KUi6j1y96m14mBfmQDTBSNQOhUA6wsFFqBohbiZGCybzgDiU0nRCwIHSDNlXRyMXmN3n.LHd1XCysWzjBewkZGbk4UWi0UWMsJWXM4B+K8Np07l4dUwal8tNxdF80QmFqiugOwUvelaxOqREAd2XJndyh+ijErZpVaWxH9GXolbq3NEM7wplOy0UYheLlJZ964iyvddRF1ytYXOeRF1ydYXOeZF1ymsv8nZX4fHbRxjjSHg1USNXZNYVTybF+GDUFkjG
                          

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

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

                            Yes thats the idea...

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

                              @Christoph-Hart Oh, well when it's set to unipolar, if I pull the intensity to 0 the pitch goes to the max

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

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

                                Set it to bipolar, add a MIDI CC to the intensity modulation.

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

                                  @Christoph-Hart That works, I understand why, but it works :) Now if I set the pitch modulator to unipolar and pull the CC down to 0 the pitch is left at + 1/2 of the set pitch value.

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

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

                                    @d-healey said in Global pitch modulator problem:

                                    Now if I set the pitch modulator to unipolar

                                    Then don't :)

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

                                      @Christoph-Hart lol but what if I want unidirectional pitch modulation? It's just occured to me also that it will require one simple gain per mic position to counteract the ducking, I might use a scriptFX instead.

                                      And now I've realised the +6 simple gain would only work if I leave the gain mod intensity at its max of 1, but if I adjust this I'd have to figure out a new settings for the simple gain to counteract it. I don't think we've reached a perfect solution yet but it's very close.

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

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

                                        @d-healey said in Global pitch modulator problem:

                                        lol but what if I want unidirectional pitch modulation?

                                        why?

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

                                          @Christoph-Hart I don't have a particular use case, I'm just thinking to the future. I actually think this won't be an issue though because you can use a bipolar mod and adjust the table to get the same effect as unipolar with the centre position at 0.

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

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

                                            I'm finding other problems with sharing the LFO with gain. Using the simple gain I can offset the gain when the intensity is 0, but as the intensity is increased I now get an undersirable gain boost from the LFO. Is there a way I could set the maximum upper gain?

                                            I think the same issue is going to occur with xfade, I don't see a way to counteract this as there is no equivelant of the simple gain solution. A constant mod might be a solution if the value could be inverted, but I think we're getting into hacky territory again.

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

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

                                            17

                                            Online

                                            1.8k

                                            Users

                                            12.0k

                                            Topics

                                            104.1k

                                            Posts