Forum
    • Categories
    • Register
    • Login

    Which modulation routing method would you recommend for my project?

    Scheduled Pinned Locked Moved General Questions
    19 Posts 4 Posters 121 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.
    • David HealeyD
      David Healey @griffinboy
      last edited by

      @griffinboy said in Which modulation routing method would you recommend for my project?:

      He's talking about block and frame sizes though?

      I only see that in Method 4, but he's mentions "fidelity" and "Resolution" in method's 1 and 3 as well.

      Free HISE Bootcamp Full Course for beginners.
      YouTube Channel - HISE tutorials
      My Patreon - More HISE tutorials

      1 Reply Last reply Reply Quote 0
      • observantsoundO
        observantsound
        last edited by

        Hey guys. I do indeed mean the speed of the LFO modulation.
        I should have been more clear.

        Slow methods like the global LFO to cable will sound mushy and uninteresting at speeds higher than 20Hz. Native LFOs add some nice audio rate modulation distortion at those speeds, which the other methods do not.
        At least the way I've set them up

        David HealeyD 1 Reply Last reply Reply Quote 0
        • David HealeyD
          David Healey @observantsound
          last edited by

          @observantsound What about using global LFOs and global modulators, this is what we did back in the good ol' days before global cables. :)

          Free HISE Bootcamp Full Course for beginners.
          YouTube Channel - HISE tutorials
          My Patreon - More HISE tutorials

          observantsoundO 1 Reply Last reply Reply Quote 0
          • observantsoundO
            observantsound @griffinboy
            last edited by

            @griffinboy said in Which modulation routing method would you recommend for my project?:

            But it's definately possible to do a sweep with a good AI agent, or use the REST system to probe all the Hise processing paths and get the exact numbers for all the different scenarios.

            I have no idea what that means, sorry. Could you explain?

            @griffinboy said in Which modulation routing method would you recommend for my project?:

            What I do know is that HISE doesn't seem to go faster than updating DSP every 8 samples.

            I used the fix_block8 node and put my oscillator inside of that container. But at 40Hz the native LFO to Filter Cutoff still sounds better than doing the scriptnode LFO to filter.

            Here's the Scriptnode LFO I built
            TimeVariantLFO.xml

            1 Reply Last reply Reply Quote 0
            • observantsoundO
              observantsound @David Healey
              last edited by

              @David-Healey I thought that's what I did in method 3?
              Can you route global LFOs in Global Mod containers to various targets without global cables?

              David HealeyD 2 Replies Last reply Reply Quote 0
              • David HealeyD
                David Healey @observantsound
                last edited by

                @observantsound said in Which modulation routing method would you recommend for my project?:

                I thought that's what I did in method 3?

                Nope, method 3 uses cables.

                @observantsound said in Which modulation routing method would you recommend for my project?:

                Can you route global LFOs in Global Mod containers to various targets without global cables?

                Yes. I'll make an example for you

                Free HISE Bootcamp Full Course for beginners.
                YouTube Channel - HISE tutorials
                My Patreon - More HISE tutorials

                1 Reply Last reply Reply Quote 0
                • David HealeyD
                  David Healey @observantsound
                  last edited by

                  @observantsound Here's a simple project that shows how to dynamically assign a modulation target. The combo box in this case allows you to assign the global lfo to either gain, pitch, or filter frequency. You can play with this example and expand it to connect the lfo to more than one target at a time.

                  As you scale this up for a full size project you'll need to plan how to keep things organised otherwise it will get messy.

                  HiseSnippet 1679.3oc2YEtaSbDDdu3rnXSKEJzJZER8vp+vAnA6jPBTJBSbhSsZBwDanUBgPquas8pb2tWuauzDUgT+Y+WeW5SRk5KBuAsyd2Y68RLNNlDBfijk2cmY1YlcluY1M08EVzf.gOxHWy88nHiOA2XetraktDFGUaU0DtBaeQnjw6fVYeORP.0FYXjYcEEFYmFE840ObEhCgaQGLEB8LAyhtAykIGLqW4eh43TkXSaxb0ndwx0rD7JBGQHnMYvEQdDqcHcnOlnHaJL5GIAcQF2.em4uqkU6kKM+xyOucqkZ0Z9RKr3xEoKVjTr0hVsVb412a4kuSKjw4VylIE9MjDIM.D5JB68azU7a73M3Yr.VKGpZPITCXmimFUoKywtdOWS.BDT8ANpLwNpqf2jYy5O+.G1EiVvb.G5NMioFkJU5XnRFZpzzwpzkvMr7YdxAqnzmyiqwkT+1D3rQWUhoEM0KxfqH.J3x4bI6Pq5CC5yQgkJV7VlvWyd+b4fym.oYGGQKhylBaEWfQS8qYa9.y7qGMuIrPnCALQy9qm+9Ir5zVDS6FU2Z.g46KZHRqlc.PPTL3bcnxZ1avBjE5IbUHi4yH9LBWpIfY6sARhOvjRBO+EfTaCZQg8LY7DIOatrITLmWXP2B82l9hpvdyprzae6qaZ41BltYD8IhWeJXO541fQUDtdBNLnPdchhzLswyEnHkK8ENUHNNsfH7BBtNEIqpTBF2A7dlsC4VRlfaNTBKX0amuk4tDmP5r498bYYsMKb8jgYy5Skg9bPhYibHLP0KdeSl4OzyeMmCk2Q1El6l2DX.DPjD.BePrPM+NyRJI0y88b1KlCbIbpkroX8dADItvgEfbq3ydvrxlk5DPe6jUdkeM6qxkM4uWkSyI8XgjtEuPje.Vw7fK0t8PWKwe5P8G5xpHO+QwXAdnaKpu9ofhPH4LcF+4FuLdq3XKMBE7ZblbKOZx3pBGaUlr52GFe.kDbpPJRzPfTYDNwESvIff1VhUD6gXfXt.VO5BEYE5v6nmVaUhjzSdfngsyi5KYJqxXU5t.VeLNTV7pzfcjBuHZSBOAKe7288PFXiqA669perJ7CWRzbYfexjTWXKuLVUAJWclzpatpLG.wBgNLnH.G2KZRGiVwaxBvwXJfQE3GOfI2W27OF.2EGIv83phWBGYYCWGmZH5HbxbZniIk69T7ZsaConCTvowU+kIs113u8yDu8eM9.HC8wChzkqgeyUeFQSK+yIeSKGLcexKvO8YPOGmLgtW9PmFAuCSvR0YzkhUSLF53HR29LbpdONZ8ZElmvg3qVupO8WCobKs0morJnn1fXpx+U4elrKEJz5l.F1WRaP6.ao9LMo.3HzDhkd7WCWgP1E51Ncn1UJugP3sFm.NAacgTuKIPUUCZsHkX.w1TrII.vEq3Hr1QewZc3BeZbkR84qDFHEt8LfnttaHodQ.+FOGuzhyAeZeS022qB70BacxLFcx0W7TicPpJPn+QtJj33GjN83EjdDkpOVZb+fvO.z3QVCKyG20v1N9JyaRj9LUqKONzsATkvhB6NzrqSfpcloT4bwiKpFGk3R41QC9O3SxhkTiMRVrTuEQwBOtsLc68Bw164wMfBfQWxIxZ+hnwlpzay0oPowCg.dpWdbKKIr6M8I7.OQPJA2f5xZBsJFnO4SCnp.9sUQOo.pDD+gtzqeXUvFGJOMHv0fhBCejqHjmBszHyXmlni+jtKRM5+npd9YX2xofyy1SGavb8bnqw2k5.WAIApYUZaRnir+r5J4lBtvqqfyRUocaJj9zoC0WW0Gp87HojnWA8Jk2l5PI5Avea4Mf.OhO3lnSnq33+hOC835p3X0M90RdaN1NwKVjzMeu10UJXxq4LniLkI7M3Q9fOGsk.3FMIQpphfcgqoFSbzjwsy.81TI9YGT9FiaLhqP78o6Y7D6H8Cg5noB6xNlmeli97a9Qp+l4y+2ZscO0w+rDFdpbFcFzGwvb+eNttvY+X7rjG9PoDyfSF7lqniPG9NL+4+V9I5oNoAvtZ4mDRbREb8GkSNbFdfWlSiK.OpriuDmpm3yfhTFS.D2QjhrvoAF2oUdwnwtTgfluW+VaeENIhN51UueqqW.+jyHE7cwMZ9XYObIV9hWZE+v6JHhYhlA7s7n+clYwapFaV5fOzNB4Bc9+RKqzh5PLN+jx3BSJiKNoLdmIkwklTFWdRY7tGMipKl8nPovMN+Cg1r9ZwfsF8ebNiLn+G.TwalO
                  

                  I also have a video about using Global Modulators which might have some useful info in it: https://youtu.be/Y2XhAEE1IBI

                  Free HISE Bootcamp Full Course for beginners.
                  YouTube Channel - HISE tutorials
                  My Patreon - More HISE tutorials

                  observantsoundO 2 Replies Last reply Reply Quote 0
                  • observantsoundO
                    observantsound @David Healey
                    last edited by

                    @David-Healey thanks David! I’ll check it out before the end of the week and get back to you.

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

                      @observantsound Use the matrix, you can add / remove connections with API calls that you can hook to combobox callbacks, the matrix / drag stuff is just a readymade solution for the most common synth UX stuff.

                      https://docs.hise.audio/scripting/scripting-api/scriptmodulationmatrix/index.html#connect

                      observantsoundO 2 Replies Last reply Reply Quote 1
                      • observantsoundO
                        observantsound @Christoph Hart
                        last edited by

                        @Christoph-Hart Alright. I had a feeling I was overlooking something.
                        I'll try both Davids and your Method Christoph. Just to get on top of what's actually possible.

                        1 Reply Last reply Reply Quote 0
                        • observantsoundO
                          observantsound @Christoph Hart
                          last edited by

                          @Christoph-Hart
                          I'm afraid I don't completely understand the matrix API yet.
                          In the example below, I'm not getting print messages for the modMatrix.connect. But maybe that's normal for onInit? And there's also no modulation happening.

                          The reason I thought it was a closed system, is because I don't understand how to set depth without using the floating tiles. I've looked at the tutorial snippet multiple times, but if the answer is in there, I don't see it. I only see a bunch of setup and then CSS styling.

                          const LFO 				= Synth.getModulator("LFO Modulator");
                          const modMatrix  		= Engine.createModulationMatrix("Global Modulator Container");
                          
                          // --- targets ---
                          const filter    = Synth.getEffect("Filter");       
                          const synth 	= Synth.getChildSynth("Waveform Generator");
                          
                          // If you want to be notified about connection changes, you can attach a callable object here
                          modMatrix.setConnectionCallback(function(source, target, isConnected)
                          {
                          	Console.print(source);
                          	Console.print(target);
                          	Console.print(isConnected);
                          });
                          
                          modMatrix.connect(LFO, filter.Frequency, true);
                          
                          1 Reply Last reply Reply Quote 0
                          • observantsoundO
                            observantsound @David Healey
                            last edited by

                            @David-Healey I've checked out the snippet, and can confirm it works to switch the modulation between gain, pitch, filter using the Global Time Variant Modulators. And it sounds nice and crisp.

                            I've also watched the video but I still have some questions:

                            • What would I need to do if I wanted to modulate a custom target that can't have a GTVM? For example my instrument color crossfader slider, or modWheel?
                            • Is there a way to set the modulation depth at the GTVMs directly instead of lowering the overall gain of the LFO module? That would allow the same LFO to modulate different targets in varying strengths. The GTVM UI does have a strength slider, but I don't see gain, intensity, depth or anything like that in the parameter dump.
                            const globalModContainerId = "Global Modulator Container";
                            const lfoId = "LFO Modulator";
                            
                            const modIds = Synth.getIdList("Global Time Variant Modulator");
                            const targets = [];
                            
                            for (x in modIds)
                            	targets.push(Synth.getModulator(x));
                            
                            
                            // depth slider
                            const depth = Content.getComponent("depth");  // -1.0 .. 1.0
                            
                            inline function onDepthSlider(component, value)
                            {
                            	for (i = 0; i < modIds.length; i++)
                            	{
                            		// Thought this could maybe work as the universal chain idx Attributes
                            		modIds[i].setAttribute(1, value);	// Unknown function
                            	}
                            }
                            depth.setControlCallback(onDepthSlider);
                            
                            David HealeyD 1 Reply Last reply Reply Quote 0
                            • David HealeyD
                              David Healey @observantsound
                              last edited by

                              @observantsound said in Which modulation routing method would you recommend for my project?:

                              What would I need to do if I wanted to modulate a custom target that can't have a GTVM? For example my instrument color crossfader slider, or modWheel?

                              Maybe a global cable - I'm not sure.

                              @observantsound said in Which modulation routing method would you recommend for my project?:

                              Is there a way to set the modulation depth at the GTVMs directly instead of lowering the overall gain of the LFO module?

                              You can adjust the intensity slider .setIntensity()

                              eab67264-4dce-4b3d-b150-bfd05690232e-image.png

                              But if Christoph says it can be done with the mod matrix that is the way I'd go.

                              Free HISE Bootcamp Full Course for beginners.
                              YouTube Channel - HISE tutorials
                              My Patreon - More HISE tutorials

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

                                With the mod matrix system each connection can have a intensity and you should also be able to set it programmatically without the matrix floating tile using the API.

                                For targets that dont expose a mod chain you can just define a UI knob and give it a matrixTargetId. You‘ll loose the precision of the real mods but if it‘s acceptable then fine.

                                The modwheel could also be a global source modulator using a control modulator.

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

                                32

                                Online

                                2.4k

                                Users

                                13.9k

                                Topics

                                120.7k

                                Posts