New Pattern Effects - Loop Marker Automation

Lately, there has been a desire among users for more precise control over Renoise’s internal sampler via pattern effect commands. This has lead to (I think) a general agreement that an expansion of the maximum number of pattern effect commands is in order.

This got me thinking: “If we’re going to add a bunch of new effect commands, then why not allow control of other elements of the sampler that were previously unavailable from the pattern editor?”

This, in turn, reminded me of a feature that not only have I heard requested (though in somewhat different terms) numerous times throughout my stay on the forum, but that I myself had desired greatly during my first few steps in Renoise. Namely, loop marker automation.

The idea is fairly straightforward. Using a set of pattern effect commands, (for this example, lets say the fictional commands 0Gxx [loop start] and 0Hxx [loop end]) you would be able to set the position of the start (S) and end (E) loop markers (seen here) to any position in the sample. The placement of the markers via the commands would work identically to the placement of the playback cursor via the 09xx command.

While at first this might seem like a trivial feature request, since we already have the flexibility of the retrigger effect, (0Exx) it would actually solve a number of issues brought to attention by other users. The first that comes to mind is the retrigger + slide predicament, the discussion of which can be found here.

With loop point automation, the sample could simply be set to loop forward, the starting loop point set to where the sample should begin retriggering, and the end loop point set to where it should loop back to the start. The selection would then begin retriggering, and the pitch could be automated via the 01xx, 02xx, or 05xx commands. Obviously the 09xx command would need to be used as well if the beginning of the sample did not correspond with the position of the start loop point. Practical application of this technique can be seen here:

  
C-4 01 .. .. 0920 0G20 0H30  
--- .. .. .. 0210 0000 0000 // This would result in a quickly  
--- .. .. .. 0210 0000 0000 // repeating section of the sample  
--- .. .. .. 0210 0000 0000 // that gradually decreases in  
--- .. .. .. 0210 0000 0000 // pitch.  
  

Another issue that could be easily solved with loop point automation is brought to attention in the “Bouncing Ball” thread. While the effect in question may seem like a relatively trivial matter, it shows that for some users, the current retrigger functionality is either not precise enough, or simply not fluid enough for their needs.

With loop point automation, achieving these kinds of results is as simple as setting the starting loop point to the beginning of your sample, setting the sample to loop, and gradually bringing the end loop point closer the the starting loop point. An example is shown below:

  
C-4 01 .. .. 0G00 0HF0  
--- .. .. .. 0000 0HC0  
--- .. .. .. 0000 0HA0  
--- .. .. .. 0000 0H70 // This would result in  
--- .. .. .. 0000 0H30 // the sample repeating  
--- .. .. .. 0000 0H08 // quicker and quicker,  
--- .. .. .. 0000 0H04 // creating the much-  
--- .. .. .. 0000 0H02 // sought-after "bouncing  
--- .. .. .. 0000 0H01 // ball effect"  
  

If these examples fail to convince you of how useful a feature this would be, imagine all of the other possibilities that this would open up. Imagine smooth, hassle-free wavetable synthesis. Imagine BPM and 0Exx-independent native timestretching and granular synthesis. Imagine having all of this available in a tracker as flexible and ergonomic as Renoise.

Clearly there would need to be an additional command for toggling looping on and off for a specific sample/instrument, as well as controlling things like loop type, (forwards, backwards, ping-pong) but with a larger set effect commands available, that shouldn’t be a problem.

  • ultra combo 11111

I think the main problem would be the interpolation smoothing between patterncommand steps if you’re moving markers. Especially when dealing with loops…you probably get a lot of clicks if the dc offsets don’t allign properly. This isn’t a problem if you like ‘experimental’ music, but maybe you’re dreaming of a clean ‘changing’ sound that isn’t really easy to achieve with the idea (look at the current automation resolution). Maybe some kind of ‘windowing’, like with FFT, could smooth things out.

I’d use loop marker automation, if implemented, on synced beat loops. Would save time making different versions of the same beat section.

Sounds like a great idea. BUT I think that this looping command shouldn’t affect the settings of the sample itself. Currently, if you set up the loop start/loop end markers in a sample instrument, they stay there permanently. Also, the option of “0B00/0B01” is disabled.

If these commands become added, these should be more like “ghost loop points” in the sense that as long as the loop start/loop end commands are present in the FX column, the loop points are there. As soon as the scrolling cursor picks up that the command is gone, the loop points turn off and the sample is played “as is” from it’s current position (whether it be going forward or backward). That within itself would open some funky doors.

The normal stationary loop points could be kept along with the “ghost loop points” (which will give more options if someone wants to loop something).

Also, if we end up doing this with the FX column. We could make the commands more easy to remember (instead of using two different letters like 0Gxx and 0Hxx), so it could look like 0A1xxx (start) and 0A2xxx (end).

I imagine that it would be possible to have a toggle to lock each marker to zero crossings. Windowing could also be used to solve this problem, but it would add some overhead and make implementation more of a chore. I’m not arguing against it, though. In fact, I think that it would come in handy quite often.

That’s a very good point. (and something I hadn’t considered) However, as I mentioned earlier, there would probably need to be another command subset for controlling other sampler parameters. (0Ixx or 0A3xxx?) This could include a toggle to swap between “normal loop points” and “ghost loop points.”

The more I think about it, the more I like about this idea. However, as Taktik mentioned, it will make Renoise a bit more daunting, and it will definitely encroach on screen real estate. I feel that a great deal of thought should be put into how the effect command list ought to be expanded, since it is going to lend heavily to the “feel” of writing music in Renoise.

Curently there are preset buttons 1 to 8 for other instrument settings (envelope settings I think).
Maybe having them in the sample editor for loop points ; playback direction; (obviously you would set “presets” for each new sample)
etc etc and making preset changing automatable across the instrument would do it?
This would mean less pattern effect commands and no need for 256 point resolution and click issues.

That said, if you wanted smooth loop point slides this wouldn’t be great.

I think this would be a great idea, its certainly something i want.
I have even tried recording myself moving the marker point by mouse in external programs :x

that would be fantafuckingstic. I concur : every single parameters of renoise should be accessible from the tracker.

features like this is what made “octaMED and Unwieldy Tracker (buzz)” fun… I miss them!
:drummer:

how about a instrument/sample automation device which exposes loop start, end and type (as well as anything else anything would wish to tweak) to pattern commands as well as automations? (–> LFO’s…)

Even better!