[Tool Idea] Effect chain preset morph

I think one of you Lua Gurus should be able to implement this one without too much hassle…

I often use hydras to move multiple parameters of an effects chain; that’s what they’re for right :rolleyes:

But mapping up all the parameters and their limits can be a hassle If I want the parameters to go from a nice sounding A point to a nice sounding B point.

I propose a tool to do this

The tool would be called from the effects chain panel
It would create a hydra to manage the parameters

I envisage two nice ways of working with the tool;

The first way would effectively just be an expanded menu like version of the hydra interface where you select the DSPs and params yourself.

The second and nicer way would be this.
You invoke the tool for the effects chain you are interested in. Set all the parameters on teh devices themselves to values that sound nice for a certain part of the song. Press a button on the TOOL to store these as “A”- This would grab all of the potential min values for the hydra. Then go to whatever part of the song and set the parameters on the devices to the way you want them there and store as “B” on the TOOL. The tool would create mappings for the hydra (or hydras if necessary) of just params with values that differ between “A” and “B” setting their min to A values and their max to B values.
Voila!! Reaktor style preset morphing without the crying!!

There should be options also for track specific or global operation, options to ignore params that already have independent automation, ignore params with fixed values etc etc…

I’ll gladly donate a couple of bob to whoever manages to script this up. I reckon it would be a pretty popular tool

Wow wow wow this is such an incredible fucking awesome idea kickofighto, i can hardly imagine I didn’t think of it myself, especially as I saw how crazy nice this kind of thing works on the Elektron Octatrack!!

link to video with demo of what i/kickofighto mean

Although, I must say that as I’m starting to make this things, it’s also become clear that it can be pretty difficult to save stuff outside of the Hydra, and I don’t think a renamed Hydra would be much appreciated nor is it max length probably a thing to count on… but I’m getting good ideas.
What is a couple of bob?
Also except for the automation editor there’s no way to “select” a device parameter… this means the tool could only watch for selected_device to change and then give a list of that device’s params to choose from…

+1 !

However maybe could you start by doing a kind of “device state snapshot” that creates instantly all automation points for all all the params of any *device (whatever it is, it can be the hydra device, but you could also create “device state snapshots” for all devices), i.e. saves in automation points a preset.

Imagine that when you add another “snapshot” to the automation timeline, it creates it, and takes a look back on what has been done before it, and if there’s a previous snapshot in the device timeline (inside the automation view) then it changes the created automation points to “linear”. BTW, the params will morph between the two snapshots.

It could be very interesting to use this kind of “device state snapshot” especially with some VSTs presets, that would morph from one state to another.

Didn’t somebody do that? Beatslaughter’s Mixer Tools if my memory serves… But that gives you no morphing capability, just the ability to reset many devices to a specific setting at once. Sorry I should read more clearly. Save Automation Points?? How would that work? Hmm think I understand, but with Renoise needing Automation in each Pattern, not nicely spanning multiples ones, I can see that method being a bit of a headache…

Back to the original idea. What if you have you Hydra, give it a name so the Tool knows what to look for, set each Destination you want to control. Now find you sound, click A in the Tool’s GUI and it will set all Min sliders to the value that parameter is at. Click B and it will set all Max sliders for those parameters. Would that be possible? Would that achieve the desired effect?

well, imagine, you have the *Cabinet simulator and you select the Evil preset. You place your edit block on the top of your pattern.

then you click on a “snapshot” link (this link could be placed directly somewhere in the contextual menu that pop ups when you right-click on the *Cabinet simulator device).

when you click on this link, it automatically creates all automation points, at the beginning of the automation tab view, for all the active parameters of the device ; as if you right clicked on all the sliders. For example when the Evil preset has been selected, you’ll find in the Automation tab view a point for Cabinet, a point for Routing, a point for Gain, Wet Mix, Dry Mix, 100H, 1000Hz, 2000Hz, 4000Hz, 8000Hz, all the values of all those points = Evil preset values.

then you place your edit block at the end of the pattern.

did you noticed that when you try to define another preset on the bottom of your pattern, example “ventral”, when you right click on one slider, renoise automatically updates all the sliders so that your “ventral” preset is finally erased ? (what sucks in this situation).

the problem with the actual automation mechanism is that ALL the automated sliders in a device are ALL automatically “updated” each time you modify just ONE of them, so that you cannot modify or define the position of a “group” of sliders in just one click, you’re obliged to redefine the whole sliders each time what’s terribly boring.

that problem gave me the idea of a “preset 2 automation” tool, that would be available from a popup / device context menu link.

after that I thought about the way the tool could convert in one pass all the created automation points during snapshots, to a “linear” automation mode - what allows the notion of morphing parameters between 2 snapshots.

applied to Automation Instr devices, it’s logically a step into the direction of "morphing virtual instruments.

and of course, you can also morph presets of the hydra device, if you want.

First of all, I’m working on a tool that is now in alpha stage and will soon be posted here in this topic when it’s tested in multiple setups. It’s not exactly what kickofighto described, but maybe something that is the closest one can really get with reasonable amount of scripting with the (amazing) 2.8’s api. It just addresses some of the things about setting up a Hydra device, that have bothered me and seemingly also the topicstarter. Some things I would’ve done differently but there is for instance no way to determine a middle mouse button, right click, shift-click, or whatever for a tool’s gui button.
What I have now is:
Interface from which one can almost completely control a Hydras bindings, min and max values are sliders, the destination fields are popups (so they are scrollable!)
Row background indicates which of the 9 ‘heads’ are currently active (have a parameter selected)
A and B buttons on every row to set min and max values (if no parameter has been selected yet for that row, you can then select a device, after which a parameter select dialog will popup so that you can still bind the current value to A or B)/>/>
Global A and B buttons that will bind either all min or all max values to the device parameters current values (also a hydra device on/off checkbox for ease of use)

clone the peerstate machine for buzz.
but i guess not possible. ive no time to look into it now. but i guess through hacking - to an extend.
[internal parameter sth. like: state A | state B | inertia (time)]

Aaahhh. Well those are problems.
By a couple of bob, I, being poor, mean maybe about 20 snots if the thing works. Sorry I can’t push more than that. Maybe some other people will throw some money your way?

What do mean by “nor is it max length probably a thing to count on”?

Wow!!! :lol:/>
Well done CAS. If I understand correctly, you’ve actually implemented the main functionality I was after! Namely the ability to grab current values and map them to A or B.

After this the hydra can be automated itself in the DSP chain. Beautiful!

Is it possible with the current api, for the tool to add devices to the chain? By which I mean, add a second hydra linked to the first if you want to automate more than 9 paramaters?

What Kurtz is talking about above is another way to achieve the same end result. In this case, the hydra isn’t used at all, and you are left with potentially many automation envelopes to edit independently later on which is an advantage for retrospective editing.

The hydra dependent way leaves you with one slider to play with as you wish, which is why I like using the hydra.

Hey kickofighto,
I do understand what KURTZ was suggesting now you explained it a little bit. It would be outside the scope of this tool though, and my opinion is that turning CV signals into automation should be a possibility in Renoise internally somewhere in a future version.
Anyways the tool as it is right now should be released for betatesting later today :)

o yeah forget about the “nor is it max length probably a thing to count on” - I was probably again thinking too difficult about an actually easy problem

Here is the beta
Please let me know of any questions, bugs, etc. via this thread or PM.

EDIT. the keyboard shortcut (it’s not in right click menu yet as it should be…) is called “Manage Hydra”
It only works when you have a Hydra selected (positive side of that is that you can have any number of hydras in the song and still control any of them, one at a time of course, with the tool)
Read post #7 above for a quick description, then, most things should be self-explanatory.

Would the tool be better with Slope (‘Scaling’) controls?

Hey CAS. Just got a chance to use the tool. I get an error with mapping certain parameters.

Replicated here with chorus, probably feedback parameter, since it has negative values.

'C:\Users\Ash\AppData\Roaming\Renoise\V2.8.0\Scripts\Tools\nl.jeweett.LordOfTheThings.xrnx\main.lua' failed in one of its notifiers.  
Please contact the author (Cas | Cas Marrav | casmarrav@gmail.com) for assistance...  
std::logic_error: 'invalid parameter_value value '-0.297414'. valid values are (0 to 1).'  
stack traceback:  
 [C]: ?  
 [C]: in function '__newindex'  
 [string "do..."]:22: in function   
 main.lua:127: in function 'limbutton'  
 main.lua:323: in function <323><br>```

Another bug occurs with either the GUI or the mapping function.<br>
If you press a B update button on some parameters the slider on the tool GUI apears to move if you press it a couple of times.<br>
IMO including the curve selection in GUI isn't crucial at this point. The user will want to set it later on after doing the slide, and listening; may as well leave it on the hydra.</323>

Thanks kicko, you are right, I myself have found related bugs about the parameter value getting. Unfortunately, not all of them are as easy as [0…1] range. I’ll have to inspect in which cases stuff goes wrong. Also it’s impossible to map two or more ‘undecided’ rows consequently, but I’m not sure if this is just a bug on my system (think it shouldn’t be, but who knows), because the laptop I made the tool on is now back to the store for repair/maintenance.
Will try to fix this week.