Jump to content

* * * * * 1 votes

Transition Loop

  • Please log in to reply
29 replies to this topic

#26 danoise


    Probably More God or Borg Than Human Member

  • Renoise Team
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6911 posts
  • Gender:Male
  • Location:Berlin
  • Interests:wildlife + urban trekking

Posted 24 November 2012 - 21:22

The beats one will get thrown off if there are any changes to LPB wont it? Although I guess that is quite a special case at the time time a transition is exactly the place you're most likely to have a change...

Yeah, if it was dynamically linked to the playback engine. But I think this is simply a fire and forget, where you set the range you wish to loop - just using some different terms. In the end I'm guessing it gets translated into static song positions.
Scratch that, it is in fact linked to the tempo and will update in realtime. I tried to create loop spanning a couple of patterns and then changed the LPB to a lower value. The result was a range that "crawled" back towards the beginning of the song.

But what is worse is that the coefficient is still affecting the possible size of the looped range. I thought I had come up with a solution, but if you take my example, and enter some "strange" value that cannot be properly expressed by a coefficient, then the loop will be set, but "snap back" once the playback is toggled.

So, even though I'm not really a fan of introducing a fourth kind of loop into the Renoise UI (block loop, pattern loop, sequence loop, and now a transition loop?), coming up with a reasonably solid scripted solution seems to be very tricky. We need a surefire way of specifying a looped range, one that doesn't get modified on the fly and doesn't cause tempo glitches - adding this to the most wanted API features list.

Edited by danoise, 25 November 2012 - 00:22.

Tracking with Stuff. API wishlist | Soundcloud

#27 kazakore


    Probably More God or Borg Than Human Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPipPipPipPip
  • 6140 posts
  • Gender:Male

Posted 07 December 2012 - 15:53

Could you check your posted Xrnx snippet?
You have one closing parenthesis too many.

'C:\Users\xxxxx\AppData\Roaming\Renoise\V2.8.1\Scripts\Tools\uk.deaddogdisko.TransitionLoop.xrnx\' failed to load.

Please remove this tool or contact the author (Kazakore | dj_kaza@hotmail.com) for assistance...

main.lua:41: unexpected symbol near ')'

Sorry it's taken so long but finally fixed this and also added a +1 I had missed from the Loop Clear section. Something strange was also going on here and Loop Selection had also disappeared from the shortcuts list, even though it was working as I had tested it...

Attached File  uk.deaddogdisko.TransitionLoop.xrnx   1.23KB   130 downloads

Hopefully that solves any outstanding issues, beyond the fact you can't do it completely perfect with the APi.

#28 Roger Jungemann

Roger Jungemann


  • Normal Members
  • PipPip
  • 38 posts

Posted 07 February 2013 - 06:02

First off, I LOVE this plugin. I didn't even realize I needed it until I was messing around and trying to make a song in 9/8. Block selection sorta falls apart in weird time signatures. But your plugin works great!

But there might be an issue where you can't have the loop encompass the very last line of a pattern, because the loop actually ends one line before the selected end point instead of on the line of the selected end point. What do you think?

I changed this:

-- Set Loop Selection
  local function loopsel()
    local s = rns().transport.edit_pos
    local e = rns().transport.edit_pos
    s.line = rns().selection_in_pattern.start_line
    e.line = rns().selection_in_pattern.end_line
    rns().transport.loop_range = {s, e}


-- Set Loop Selection
  local function loopsel()
    local s = rns().transport.edit_pos
    local e = rns().transport.edit_pos
    s.line = rns().selection_in_pattern.start_line
    e.line = rns().selection_in_pattern.end_line + 1
    rns().transport.loop_range = {s, e}

Note the 3rd-to-last line.

Everything seems to work properly, including clearing a loop. Now when you make a selection, the loop includes the last line of the selection as well.

What do you think?


Looks like I posted too soon. For it to work the way I described, you have to edit the setend() function as well:

-- Set Loop End
  local function setend()
    local e = rns().transport.edit_pos
    e.line = rns().selection_in_pattern.end_line + 1

    rns().transport.loop_range = {rns().transport.loop_range[1], e}

Attached is the version of the plugin that I am experimenting with. It may be unstable. I am still figuring out how to bundle plugins so bear with me.

Attached Files

Edited by Roger Jungemann, 07 February 2013 - 11:10.

#29 delt


    Guruh Member

  • Normal Members
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 959 posts
  • Gender:Male
  • Location:Montréal, Canada

Posted 09 February 2013 - 01:41

Impulse Tracker has a nice feature in the form of a "playback marker" where playback will start from, no matter what pattern is selected and where you are in the pattern, as long as this marker is active. To move it, just mark it somewhere else, and to remove it, just mark where already selected, ie. mark twice.

This could easily be scripted in renoise, except making the pattern visible on the UI is the one thing that can't.

On a related note, the green "playback indicator" line, when playback is stopped, is often annoying and just in the way, makes it hard to see the row highlighting + the color coding on this line disappears. I'd like to keep it during playback, but get rid of it when the song/pattern/block/etc. is NOT playing. I'm pretty sure there's a snippet of code i could add to my "stop" function to do this.....anyone?
"One man's dream" orig. composed by Yanni

#30 soundwave2201


    Advanced Member

  • Normal Members
  • PipPipPip
  • 97 posts

Posted 30 May 2016 - 15:19

Renoise 3.1 is out.


Is this ability to loop pattern transitions available? I'm hoping it's baked into the software or maybe there's a better way?


It would be nice to loop the end of pattern "A" with the beginning of pattern "B" to fine tune your transition from pattern "A" to "B".

  • The_Traveler likes this