Sample Loop Controls As Effects Parameters

Yay, Renoise on linux!!!

I was so stoked I bought it!

I really really really want pattern effects to change the position of a sample’s loop point.
The sound engine supports this… I love what I can do with it live, but there isn’t automation. I can understand some of the challenges.

I’m not just thinking about 09xx combined with 0b00 0b01. Much can be done with that and it’s awesome!

There are programming challenges

prevent the rules from breaking (loop points in illogical places)
accuracy (how much can be done with the number 256 as far as sample position?)

i think that’s about it!

the complete wish-list of pattern effects:
-the ability to save and restore start & end loop point positions
-the ability to switch sample loops to forward, ping-pong and off.
-start & end loop point glide type: linear, exponential, square root… (user envelope?)
-start & end loop point glide speed, direction
-a choice of ‘stop looping’ or ‘stop gliding’ if the minimum loop size or a boundary is encountered

  • the choice to make a 10x10 pixel animated stickman jump up and down

thanks for all the other amazing and cool things that are already in there!!!

This suggestion is probably as old as the program is :slight_smile: & would definitely be cool if implemented for 2.0.

  • quadrillion

there is a big problem about this which I told about some times ago (this request keeps on being posted regularly :)):

in case of a multisampled instrument, how should this work? how can Renoise determine to which sample it should change the loop?

there are three solutions to this:

  1. this command must come together with a note, for example:

C-4 01 00 – 0L10
would set to 10 (whatever it means) the loop start for the sample associated with C-4. here I have put a 00 to the volume column just to remark that the note has been put just for command purposes.

disadvantages:

  • not very easy to use
  • only 255 values available
  1. the command must specify the sample number:

— 01 00 – 0L2A
would set to A (whatever it means) the loop start for sample 2 of instrument 01. very awkward and coarse. would be good if there was a way to set markers in the sample editor.

disadvantages:

  • only 16 samples available
  • not easy to use
  • only 16 values available

in both cases, it would become evern harder to use this when multilayering (i.e.: more than one sample for the same note) will be implemented; solution 1 would also require to specify a volume for the note to precisely identify which sample to use, while solution 2 would require more digits.

all in all, to implement this we firstly need more digits in the commands

solutions 3:

a specific metadevice which links sample loop markers to pattern commands. parametes of the device:

  • number of instrument
  • number of sample
  • number of loop start marker
  • number of loop end marker

this is quite a nightmare to use, if you ask me.

you could reply that you don’t use multisampled instruments, but in my opinion this is not a real answer to the problem

I hadn’t thought of that… because I’m that type of geek who likes to have an instrument for every sample, the theory being the maximum tweaking of each sound.

But I think it’s possible to assume that it’s the current instrument and the sample that was triggered already in the track… because other pattern effects get by without an explicit declaration of the current sample in a multi-sample instrument- the values are in memory already. The problem could be that the engine currently doesn’t store those values in a place where pattern effects can peek while they are executing. Yet. renoise must become self-aware … :D

I’m dreaming here.

the 256 value thing can be overcome by defining a position ‘glide’ instead of a fixed position. the effect i’m thinking of isn’t interesting unless the loop point is moving and besides, the user already has precise control over loop points if they are to remain the same.

so i was thinking maybe add to the B’s:

0B02 - current sample loop off
0B03 - current sample forward loop on
0B04 - current sample reverse loop on
0B05 - current sample ping-pong loop on

and then:

0Lxy for the current sample loop start point
0Qxy for the current sample loop end point (or something)

where:

x0 - restore saved loop positions / loop type
x1 - save loop positions / loop type
x2 - forwards linear glide (y + y) samples in (direction) per tick
x3 - forwards exponential glide (y to the y) samples in (direction) per tick
x4 - forwards square root glide (y / y) samples in (direction) per tick
x5 - … your favorite math here
x6 - forwards linear glide (y + y) samples in (direction) per tick
x7 - forwards exponential glide (y to the y) samples in (direction) per tick
x8 - forwards square root glide (y / y) samples in (direction) per tick
x9 - … your favorite math here

y0 - 1
y1 - 2
y2 - 4
y3 - 8
y4 - 16
y5 - 32
y6 - 64
y7 - 128
y8 - 256
y9 - 512

…because the commands can be stacked 4 high in renoise, which rules the universe, it may be possible to save the user defined loop points, define a glide and begin modifying the loop all within one row. it should also be possible to stop and restore the old info on one row.

and as a catch-all, i propose that if another sample in that track begins playback, all loop-gliding operations should cease… in case they haven’t already been properly stopped by some other condition.

sorry to keep using the word ‘glide’ … there has got to be a better word for this meme…

Renoise rocks! and i’m happy with 09xx and the b’s and the bonus effects columns and of course 0Exx … for now :) I especially like draw mode in Renoise 1.9.1 for linux, it reminds me of the softsynth in aegis sonix… an ancient sound app for the Amiga…

what if you want to move the loop points on an instrument you never triggered before on that track? the question is not posed just for the heck of being picky, but because the code must be capapble of handling any circumstance.

a possible answer is: “in this case you should put a silenced note before the command”, which in the end confirms the needing for a solution similar to my first proposal above.

about loop gliding:
are you sure that this would give good results? there are chances that gliding a loop could give good results on perfectly crafted synth-sounds with a stable fundamental frequency, but gliding loop on any other kind of sample will just result into a bunch of glitching sounds.

in the past, I already thought of all situations and solutions I described and you proposed. Initially I was enthusiast about ideas such as loop gliding, but on a second thought they all failed against real world scenarios.

I strongly believe that any possible implementation of this feature (which would also be quite complex to implement in order to be comfortable for the user) would be disappointing in results.

Aw, poop!!!

To clarify- it’s the glitches that I want, specifically with percussive or atonal samples. Although some crossfading or phase checking would be nice - but i’m asking too much - I can see the buffers swelling… post-filters are easy enough.

I would be prone to ignore the theoretical loop modifiers if there is no associated instrument. But I see your point. A condition could arise where upon changing a pattern live, the loop would keep being modified until some other note comes along, or, worse than that, the wrong instrument parameters would change in the middle of somebody’s live set.

it is a problem, yes.

I’ve done some crazy stuff such as jamming by switching the sequence’s patterns on the fly…

Maybe the solution does not lye in paterncommands with its current limits, but in the automation editor?

Have a field there for the starting marker + have another field for the end-marker. (create a loop-start & loop-end meta device?)
You should be able to specify the exact sample nr out of an instrument for which the field is relevant + by double clicking (->automation editor) on a set marker (or dragging in height) specify a value that correlates with the loopmarkers position in the sample editor.

Loop direction should be selectable as well + maybe amount of loops?

Imagine automating a loop-start marker over time to the right while the loop-end marker shifts gradually to the left, at the time these 2 markers cross the looping could automatically go in reverse or ping-pong.

bump for “loopstart & end marker meta devices” that can be automated in the automation editor

Totally! Then in there you can specify which instru/sample to use. Multiple instances of the device=multiple samples. That and in the automation editor, the loop points can transition smoothly (In response to choice’s comment).

I agree with IT-Alien, using the commands in the effect column would be hella ridiculous/hard.

Add:

Oh oh oh oh oh!!!

In addition to IT-Alien’s comment on multilayered samples. If you use the multiple param links, you should be able to link multiple samples to that one device (controlling all at the same time). That or still use multiple meta devices.

Make that automation capable of automating instruments/samples in addition to VST instruments, and then make loop start/end one of the “exposed” parameters of a sample…