[Tool Idea] Groove through variating delay values / shift note events

Hope this makes sense, but…

I’m looking for a tool that can run through a whole song, pattern or selection and generate delay values, shift notes…like imaginary lfo’s running at (slightly) different speeds are controlling the timing for each track.

In the tool you should be able to specify the min and max values for the delay column, set the algorithm shape (sine, triangle, saw, ramp up/down etc?) and the amount of lines / speed for the values to shift from min to max delay value.

Would be cool if you could set a (random) phase offset value as different starting delay-value point for each track.

Why could this be useful?

For example hip hop music :). To get a more human swing, used subtly, at slow settings, offsetting multiple tracks.

The groove settings in the song settings apply to every track at the same time, same for setting up a lfo device to control the bpm in the master channel. This would be like setting up a lfo device to control individual track delay in the mixer.

What should happen with existing delay values?

Not sure, maybe a toggle to neglect those, or it could be possible to use them and calculate new values depending on what you had set up in the gui.

Delay column values in Renoise are always after the fact, there is no pre-delay, or minus-delay possible. While variating pre and after-delay values are essential for a human feel. Record a snare track in through live playing for evidence :) .

I’d like to get this same pre and after delay feel on existing note-events, like a slow sine wave shifting the notes slowly back and forward.

Would this be possible?? :drummer:

Good idea and it sounds very possible.

I would start with making a control that offsets existing delay values by a +/- amount.
Then some controls to modulate this. This approach would also preserve existing delay values in relation to each other.

Sounds like quite a simple tool to make, maybe this would make a good starter project for someone thinking of getting into tool making ;)

http://www.renoise.com/tools/groovetool ?

Thanks for your input fathand, good to hear it is doable! :drummer:

I will try that one again, forgot about it, does it let you offset multiple tracks at once across a whole song, using a different delay value starting point for each track? I wouldn’t want to apply this track for track, that would get tiresome quickly.

It doesn’t seem so, but the routine can be extended to make it do that.
Simple build a for { … } end cycle around it for each track (and pattern) and then change it.

The groove tool you linked seems to work per track and updates changes in realtime which is cool, though pretty sluggish here even on simple patterns. Maybe it can be optimized to work faster? If someone is going to hack this tool, for larger scopes like a song-wize, across all tracks setting, I prefer changes to happen after pressing ‘generate’. Otherwise it is going take a year to get results! :D At least with how it functions now…

Cool idea, but I’m not sure how this should work, especially when you cannot really save the settings of a tool within a song. Also song-wide… I’m not sure if that works?? like the builtin groove settings but changing throughout the song?
Let me think about this for a minute!

I thought he was talking about destructive editing of the song, so you hit the Apply button and it writes into the Delay column. No need to store anything to do with the tool in the song. Unless you want to keep a note of previous setting that have been applied to a track for possible resetting or later adjustments…

Update the framerate of the gfx settings as the tools run in the GUI thread?
Realtime will always be as sluggish as the GUI runs, at least not faster.

My initial thought : as long as the maximum amount of delay wouldn’t actually push any notes into the next line, it would be better to drop pre-delays and just push notes forward.
A natively implemented negative delay value has been discussed (and variations thereof, such as “trigger-time” for reversed samples, etc.), but currently we only have negative delay amounts.
Any scripted “pre-delay” would require the note to move to the prior line, even when dealing with the smallest possible delay time.

And I’m thinking that pushing things forward is completely OK as long as all tracks are treated with this effect, sonically, there would be no difference.
From a “reading notes off the pattern” point of view, IMHO it would be much better to have notes nicely aligned, even if they have varying amounts of delay attached to them
Oh yeah, and any added complexity of the tool would lead to overall slower execution time

Yes what Kazakore is saying, nothing realtime, but simply generation of delay values. Preferably you should be able to set which tracks you want affected by the tool, and ideally be able to set a scope like pattern selection, whole pattern, sequence selection or complete song.

I’d like to try a similar modulation setting, albeit with different starting point delay values (phase of the modulation shape) on more than one or all tracks at the same time. I imagine a drifting sound where timings sometime align and eventually separate to gradually align again.

Interesting, I will try upping this value, I currently have the toggle unchecked(!), dunno what frame rate Renoise is running in.

I understand what you’re saying about readability, don’t really mind either way as long as there is result :D . The groove tool does shift notes back in time and I can perfectly work with this.

Maybe it can still be optimized though? Or someone can start from scratch and build a smarter delay generation engine B)

Interesting idea Djeroek, keep them coming :)

But I kinda feel like this is something the Renoise Lua API wouldn’t handle very smoothly. (not in it’s current state at least)

My concern is that there is no viewbuilder view that allows for drawing curves (would be nice to have though, I think it’s on the wishlist). So there is no way to draw a curve.

So how would we make the curve, well we could select it from a list but then you get a fixed amount of preset curves and would probably end up adding buttons and sliders for “phase” and “duty cycle”. Then when you want a short and a long ramp to loop in succession you have two curves or if you want every fourth beat to have more groove. The possibilities of the desired grooves can be countless so if we can’t draw the groove I believe we are better of manually writing it out as we picture the drawing.

One idea would be suggesting to renoise developers to add an automation layer for delay, just like we have volume and pan automation as well as columns. This way you could draw your own curves and copy paste them in the automation view.

I am aware that volume and pan are automated through the mixer and delay would not be automated in realtime but on an event basis. Still I think this is the place to add such a functionality and it should just be grouped differently from the mixer.

How I would personally achieve this effect:

  1. Write the points of the curve into the desired delay columns for one cycle of a groove (as well as the starting point again at the end for looping)
  2. Interpolate between the points with the desired curves (linear, log, exponential) (you will now need the starting point at the end as well so you can interpolate back to start)
  3. Copy the generated loop of groove from the delay column (exclude the last column, the “looped start point”, as it was only for interpolation)
  4. Continuously paste the copyed groove loop to desired places.

I believe this is easy and fast to do manually if you understand the steps above.

Sorry but are you now actually speaking about something that is already possible in renoise (I think not, because you are speaking of columns (as in automation) and not lines (as in pattern delay column)) or some fantasizing?
Because, the whole problem is at first that you cannot just “shift” delay values, just like you can’t do that with the native Delay device, or you first have to decide what silence or clicks or sth you’re gonna do with lost or “made up” time…
Sorry if I’m starting the time travel discussion here but to keep it real I don’t like the clicks Delay (device, not track parameter) gets when you modify delay value. But to build in pitch shift is too professional and/or might neither be what everybody wants, and to just insert silence is also clicky… or maybe it’s even just what it’s doing right now, so a little short fade to zero?? hmmmm.

Anyway please TS let me know if you think there’s a part of the solution in just modifying the existing Push Back / Shove back tools to “apply to whole section” or song. And maybe not the realtime-entering but only after pressing enter (for instance), that’s an easy edit I believe. For the Keys version at least.

I’m talking about the Delay Column within the Note Column in the Pattern Editor. And I was suggesting a method that works in renoise without tools. The method will alter the groove because only NoteColumns with a value will be affected by the delay column.

In a completely different discussion I agree that the delay device should not click but pitch shift as you suggested, simply because that is analog behaviour and physically “correct”. The samples lost if you speed up the delay should be skipped and samples added should be recalculated

The problem with writing such a delay digitally is that to sustain quality of the delayed sound you need a dynamic sized buffer. When the buffer is lengthened or shortened (when time of the delay is changed) the program needs either to do a lot of memory reallocation or complex computations to make up for the missing data. The methods to make up for the missing data may also vary slightly resulting in different cpu usage and color of sound when the time is changed, this is because we are modeling physics.

I guess renoise developers chose not to address the issue and make a cpu friendly well sounding static delay. So if you want to swing the delay knob you can download your own VST and pick someone that sounds nice when you change the knob.

Alright, at least I understand your workflow now, probably like I do it as well / just fill in one patterns delay values, then e.g. select only ‘Delay’ under Content Mask in advanced edit and just copy/paste ‘Whole Pattern’ or ‘Track in Pattern’ or whatever. Nice.

Yeah so if I understand correctly the Delay that I pictured would need to keep 2000ms or 255 lines of delayed signal constantly, and on top of that cost more cpu power when modifying? Still, we can agree on this, I gave it some thought and saw quickly that indeed it’s not easy probably to build one that doesn’t “stutter” and we can be very happy with the native one in Renoise for what it is! It’s fun though to play with the simple Delay in err, certain software from Swedish Geeks sometimes though.


This thread went from;

to o.t stuff I don’t get B)

…but as this idea doesn’t seem to inspire a new tool

Please yes! :yeah: