New Tool (2.8): Push Back

Midi bind that sets delay column values for the current track, every >edit step< line. So you can easily create a groove without having to hold ‘4’ or ‘8’ or ‘C’ and then hear what it sounds like! Handy for drum patterning.

Update!
newest version: down below (#21)

workflow:

  • Put a hihat on every line either with edit step = 1 or ctrl-c & ctrl-p
  • Put the cursor on the second line, set edit step to 2, and turn the knob that you’ve bound to ‘Push back’
  • Put the cursor on the third, set edit step to 4, and turn the knob some again
  • Hit play

Very easy tool, today was the day for it.
(sorry bout the other topic, mods: my pc crashed and chrome launched me back in the submit page when it rebooted… better safe than sorry :D remove the 2nd one if you will. also I should’ve put midi somewhere in the subtitle)

Also: there might be a future version planned with 2 Keybindings that do the same thing but relative to the current values (so jam on keyboard => move would be possible)

what knob?

you’ve got to midi assign it…

after assigning, it just crashes renoise. :s

restarted renoise and tried again. i get these two error messages when i’m still at line one:

‘C:\Users\VincentVC\AppData\Roaming\Renoise\V2.8.0\Scripts\Tools\nl.jeweett.PushBack.xrnx’ failed to execute in one of its midi mapping functions.

Please contact the author (Cas | Cas Marrav | casmarrav@gmail.com) for assistance…

std::logic_error: ‘invalid note_column index ‘0’. valid values are (1 to 12).’
stack traceback:
[C]: in function ‘note_column’
main.lua:23: in function ‘pushback_delay_column’
main.lua:33: in function main.lua:33

and

‘C:\Users\VincentVC\AppData\Roaming\Renoise\V2.8.0\Scripts\Tools\nl.jeweett.PushBack.xrnx’ failed to execute in one of its midi mapping functions.

Please contact the author (Cas | Cas Marrav | casmarrav@gmail.com) for assistance…

std::logic_error: ‘invalid note_column index ‘0’. valid values are (1 to 12).’
stack traceback:
[C]: in function ‘note_column’
main.lua:23: in function ‘pushback_delay_column’
main.lua:33: in function main.lua:33

edit: aah got it to work
you’ve got to actually open up the delay column yourself…

I’m very sorry about that vincent. I didn’t ever think of that (neither that you couldn’t change the values when they’re not visible) but I always have all delay columns visible on the first three tracks (kick snare hihat) so yeah… It has to be a very fast function as well to react to the midi messages properly… but I’ll fix this.

well yeah when i play notes on my keyboard “live” the delay column opens itself. so it’d be logical if your tool acts the same… :)

Could you give us some more hints about this, how to replicate? This of course should never ever happen.

we all have that behaviour with renoise and our keyboards. anyway, we do not all have the same level of annoyingness you seem to possess. bye
*edit - also, you make up error messages :P and them post two copies of the same bloody error :P or you deliberately took the cursor to an effect column to make the tool bug :P

now displays delay column
also if you look in the code vin you can add the functionality that you wished for
I myself will just keep using it properly.
3288 nl.jeweett.PushBack_Rns280_V0.2.xrnx

or fader or pad or whatever :D
i suggest a regular rotary encoder if you got one.

I open Renoise, I leave everything as is (edit step being on 0, it’s usually set to that value in my case). I open the midi mapping window and then simply assigning it to a knob, close off MIDI Mapping, turning the knob (still at line zero, first track, note column) and it makes Renoise crash. Sometimes it asks to terminate the script, and then crashes Renoise. (V0.2 has the same behavior.) EDIT: Well it seems I can be on any line, any track and any columng (note, vol, fx) as long as edit step is set to 0.

Sorry Cas! Didn’t want to come over arrogant or anything, I guess I expressed myself a little odd…
You’ve got to see it from my perspective, I see a tool test its waters and don’t necessarily know what it is for…
I’m not a programmer/coder/developer myself and I deeply respect what you and other tool-creators do and share(!).
I got those two error messages right behind each other, and yes I was probably in the effect column. Users (like me) will use stuff wrongly.

if renoise.song().selected_note_column_index== nil then return else end

Alright vincent you’re totally right, I did not foresee this one. Haha. My bad. Instead of esaru-… what is your name composed of anyhow? … Instead of esa’s suggestion I’m going to have the tool regard 0 edit step as 1. New version to be up in an hour…

*edit
maybe just a minute 3289 nl.jeweett.PushBack_Rns280_V0.3.xrnx

great. :)

i forgot to say that this tool is actually quite a genius idea. this might as well be done for volume, panning and maybe even fx commands such as pitch slides. literally with the turn of a button and the changing of your edit step you create an entirely new groove. micro edits while jamming made easy. ^^

thanks man!
btw I was thinking, and I’m thinking up new tools every day as I’m using renoise, right now I’m just building the microest tool ever (keyboard shortcut for unsolo all), but the easy thing here was that the delay column can be just 00-FF. volume and panning have different meanings and can become C6 for instance to ‘cut note’ etc. might make it and just scale to the 00-80 range though, it’s definitely a good idea.

that’s gonna be the tag line :D

firstnamesurname. esaruoho, esa ruoho. if you absolutely have to know, esa is modern version of isaiah, and ruoho is finnish for grass, or, actually, weed. …

i always get a kick how many people have such difficulties in writing esaruoho without resorting to esarhoho or something strange like that. it’s like it is somehow gibberish to people, without capitalization.

the only reason i gave that “if not in notecolumn, stop running”, was because you were slagging off people for trying to run your script while having their cursors in the effect column. as you would know, if you looked at it. it was a protection method. i could’ve added renoise.app():show_status(“dude u r in effect column not in note column”) to make sure you’d grok it, but didn’t think it necessary.

yea i didn’t get it the first few times so you would’ve been right if you would’ve. :D
anyway i think your status bar msg is a really good idea so i might add it hehehe
thanks for the explanation

In general, I think in many cases for renoise tools it’s just a thin line between putting some feedback on screen like an error message, and just giving users the time to get used to the behaviour of a program/script. The edit step 0 bug I should’ve never allowed to happen (I tend to look over stuff like that so actually I’m lucky that there’s people like vincentvc testdriving… now I am certainly not losing a song’s changes over it) - but for all the rest, checking selected_note_column_index is good enough, and this tool just shouldn’t throw warning msgs around imo.
A funny thing is that the delay column, unlike fx columns, works even when it’s not exposed. So displaying it every function call is not so unnecessary as it seemed. Thanks errbody :D

Could not make it crash here, but it Renoise will freeze for some seconds, then show a “The script is not responding message”.
The tool loops endlessly in:

  
while x > step do x = x - step end  
  

with an edit step of 0. But this already got fixed in the latest version of the tool.


When sending lots of midi messages to the script it may take a long while until it breaks out of all those endless loops.
Only thing we could do here is suppressing the broken scripts after it crashed/failed.

could we have a GUI window slider instead of having to map it to a midi controller ?

Some of us dont use midi at all.

Many thanks

No.
try the groove tool, it’s very good for that. much more functionality too.

Now I do have a few, like two, new, ideas for this one,

  • possibility to run it track-wide when standing on a effect column, group-wide when sitting in a grouptracks fx column, row-wide when in master column
  • limited by selection??

I don’t know, I don’t think there should be 5 modes with 5 different binds to this tool… so let me think here. I’m gonna switch the behaviour around a bit in next version so ES 0 will render you what some would expect: just push back current note / row.
If anyone got some other ideas spill em out quickly I might just think it’s useful and/or worthy and take em in for next coding session. :stuck_out_tongue_winking_eye:

short Edit: since Renoise even slows down WAAAY too much when trying to do the track-wide shuffle, and even chokes, I’m gonna update the tool first with a dialog-option to fix the values before applying. notecolumn-wide was fun n doable anything more broad is almost too time consuming for renoise at edit step 0 with a 128 pattern length. Understandable, it’s 128*12 operations in probably (scripted) object oriented pattern matrix data…