Usage: select a range in the automation editor, right click on it and choose “Autobender…” from the menu. The curve is created in real time while you adjust the parameters.
6215
The two vertical sliders set the start and end values (they are also automatically updated when you change the selection).
The XY pad adjust the curve:
The vertical axis is the curvature (i.e. strength of the curve); at center the curve is a straight line.
The horizontal axis transforms the curve into an s-shape (at center the shape is perfectly symmetrical).
The horizontal slider below the pad adjust the “character” of the curve : middle is exponential, left is logarithmic, right is sinusoidal(-ish).
The box at the bottom defines how points are spaced on the curve.
Finally, the padlock icon at the bottom lock the currently selected range; this way you can make another selection and open a new Autobender window which will operate independently. This allows to edit multiple section of an automation curve at the same time.
I intend to keep the tool simple and to-the-point, so I probably won’t add many features to it, if at all (also, this was more an offshoot of another project than a tool I intend to use). Obviously I’ll fix bugs, and may tweaks a few things based on feedback.
I’m especially curious about the usability of the XY pad. I went through a lot of thinking and prototyping to find a solution that gives a large palette of musically relevant curves while staying simple enough. If you have any opinion on this, I’m glad to discuss it further.
Note: the idea to use a XY pad came from user gova in this thread, though I went in a different direction than the one proposed (i.e. not bezier curves).
…am I right this tool isn’t listed yet in they preferences\keys list to assign it to a keyboard shortcut? Can’t find it real quick, would be nice for quickly booting up the tool.
…am I right this tool isn’t listed yet in they preferences\keys list to assign it to a keyboard shortcut? Can’t find it real quick, would be nice for quickly booting up the tool.
I knew I was forgetting something… I will add it shortly.
Error if load a new song with gui still open then try and apply the tool to a new envelope.
Looks like the object needs to be checked and updated if in a new song or maybe force close the tool with a new_document notifier, so the user has to re-initialize it after they load the new song?
--------------------------------------------
--close dialog function ON NEW SONG
--------------------------------------------
local function closer(dialog)
----any extra housekeeping here----
--check for open dialog
if dialog and dialog.visible then
--close it
dialog:close()
end
end
--attach notifier, fired when renoise loads a new song
------------------------------------------------------
renoise.tool().app_release_document_observable:add_notifier(closer,dialog)
'C:\Users\P\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\org.drakmaniso.Autobender.xrnx\main.lua' failed in one of its notifiers.
The notifier will be disabled to prevent further errors.
Please contact the author (drakmaniso | moussault.laurent@gmail.com) for assistance...
std::logic_error: 'trying to access a nil object of type 'class PatternTrackEnvelope'. the object is not or no longer available.'
stack traceback:
[C]: ?
[C]: in function '__index'
[string "do..."]:37: in function <[string "do..."]:35>
.\autobender.lua:191: in function 'update_automation'
.\autobender.lua:29: in function <.\autobender.lua:27>
I’ll add safeguards for the sliders auto-update (not sure why these strange values pop up randomly, though). I’ll also close the dialog when a new song is created (thanks for the code snippet!).
I’m especially curious about the usability of the XY pad.
There are alot cases. I would use this to record cutoff / resonance automations on neuro basses. Looping a pattern and play with XY till something useful comes out. I’ll try your tool later, looks great.
There are alot cases. I would use this to record cutoff / resonance automations on neuro basses. Looping a pattern and play with XY till something useful comes out. I’ll try your tool later, looks great.
What I’m interested in, is how “natural” it feels to navigate the XY pad while doing such an exploration. It’s probably not completely intuitive at first, but does it becomes predictable and familiar after some use?
'C:\Users\P\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\org.drakmaniso.Autobender.xrnx\main.lua' failed in one of its notifiers.
The notifier will be disabled to prevent further errors.
Please contact the author (drakmaniso | moussault.laurent@gmail.com) for assistance...
No matching overload found, candidates:
void find_automation(PatternTrack const&,DeviceParameter&,lua_State*)
stack traceback:
[C]: in function 'find_automation'
.\autobender.lua:64: in function 'handle_parameter_change'
.\autobender.lua:50: in function <.\autobender.lua:49>
re: the user friendlyness of the XY pad, it is certainly is useable but I would say off the bat a bit unintuitive. I was sort of expecting the inverse corners (top right to bottom left) to respond how the opposite corners do (top right to top left)
Initially, I had a mapping working as you describe: the curvature axis (vertical) was bipolar, center was a straight line, and you “pushed” the curve above or below that.
The main problem is that there is two different continuous transformations: curvature, and what I call “torsion”. They both share the same starting and ending point (they go from a curve above the straight line to a curve below the straight line), but pass through different transformations. Curvature is the most intuitive, because it makes sense graphically. But I think that the “torsion” axis, which transform the curve to an “s” shape, is the axis you most probably want to explore soundwise, in a continuous way.
I could map both axis completely to the XY pad:
6179
But then there is three problems:
The lower half of the pad is the mirror of the upper one, so space is wasted.
In the lower half the horizontal axis now behaves in the counter-intuitive direction (right to left when your mouse goes left to right).
Same thing for the vertical axis in the right half (the curve goes upward when your mouse goes downward).
To avoid wasting space, I decided to use only one half of the full mapping, and I chose the one that I thought was important to explore continuously (torsion). I think the choice between “curved above” and “curved below” is usually a one-off decision, one that you don’t absolutely need to explore continuously.
I think this is one case where a graphical representation of the sound lead to expectations that are not necessarily the most musically important.
I’ll try to see if I can find a solution to this dilemma. Your opinions are welcomed!
EDIT: Since I’m not sure my explanations are easy to follow, here’s a temporary version of the tool, with the “full” mapping I describe above:
Got this while having the latest version installed, keybinded the tool, but didn’t run it on any parameter yet, suddenly while switching tracks with the tab key gave;
‘C:\Users\pluge\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\org.drakmaniso.Autobender.xrnx\main.lua’ failed in one of its notifiers.
The notifier will be disabled to prevent further errors.
It also changes the layout of the XY pad, to something that should be more intuitive.
The neutral position for curvature is now at center, and you push the curve upward or downward with a vertical movement. What is slightly less intuitive is the horizontal movement, since it has a slightly different effects if you are above or below the curve: in both case it applies “torsion” (i.e. transform into an s-shape), but with two different kind of symmetry. So there is now a completely new range of s-shapes accessible (rotated by 90 degrees), that are probably less natural sounding but still useful enough to include.
The layout is still not perfect, but I’ve come to the conclusion that the ideal layout would require a circular pad. Unfortunately I don’t think it’s possible to restrain the cursor in a disk on Renoise XY pad, so I could not experiment with that.
It fixes a filename case issue under Linux, and also add the ability to lock the currently selected range. Once an Autobender window is locked, you can change the selection anyway you want, Autobender will continue to operate on the old selection. You can now open another Autobender window to work on a different part of the automation curve at the same time.
‘C:\Users\XXX\AppData\Roaming\Renoise\V3.1.0\Scripts\Tools\org.drakmaniso.Autobender.xrnx\main.lua’ failed in one of its notifiers.
The notifier will be disabled to prevent further errors.
.\autobender.lua:213: attempt to compare two nil values
stack traceback:
.\autobender.lua:213: in function ‘update_automation’
.\autobender.lua:30: in function <.\autobender.lua:28>