Which modulation routing method would you recommend for my project?
-
@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 -
@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? -
@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
-
@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.TwalOI also have a video about using Global Modulators which might have some useful info in it: https://youtu.be/Y2XhAEE1IBI
-
@David-Healey thanks David! I’ll check it out before the end of the week and get back to you.
-
@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
-
@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. -
@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); -
@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); -
@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()
But if Christoph says it can be done with the mod matrix that is the way I'd go.
-
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.