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.
    • 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

                          33

                          Online

                          2.4k

                          Users

                          13.9k

                          Topics

                          120.7k

                          Posts