New Tool (3.4) chunk_chops

In response to the latest video from @GroovinG and inspired by a comment from @muximori on Discord, here is a tool to aid chopping up your own patterns into new variations.

chunk_chops :chopsticks:

Provides two key-bindings in Pattern Editor / Tools

  • Render Chunk Pattern
  • Render Chunk Pattern With New Seed

They are available in the context menu of the pattern editor as well.

setup

  • Have the first track in your project be empty, this will be your chunk track
  • Name it so it starts with @
  • Have two FX columns

usage

  • Type chunking information into your chunk track
  • Run one of the Render… commands mentioned above
  • Alternatively, enable Render / On Change in the settings (on by default)

chunking

  • The first FX column controls what pattern to take the chunk from
  • The second FX column can control what lines to take

pattern commands

You need to have one of these in the first FX column to start a new chunk

  • -Pxx : chunk from pattern at index xx
  • -Sxx : chunk from sequence step xx
  • -Uxx : chunk from xx above the current sequence step
  • -Dxx : chunk from xx below the current sequence step
  • -Rxx : chunk from a random pattern with seed xx
  • -Exx : chunk from a new random pattern every line with seed xx
  • -O-- : stop chunking (works like OFF commands for notes, without it the chunk will continue until the end of the pattern or another pattern command)

pattern flags

Append to the front of an existing pattern command

  • S--- : only chunk a single line

line commands

By default, chunks start copying from the same line where they start at.

For example a chunk starting in the middle of the pattern will copy from the middle of the other pattern. You can modify this using line commands in the second FX column.

The first character will determine the type of line selection

  • --xx : the default mode, offsets by xx lines
  • Bmxx : specify the line offset in terms of beats
  • Lxxx : specify an absolute line number
  • Rmxx : start from a random line with seed xx

The second character will set what the xx values mean

  • -Dxx : start chunking xx below the current line
  • -Uxx : start chunking xx above the current line
  • -Rxx : sample random lines with seed xx (for beat mode only the beat will be picked randomly, the rest of the chunk will stay as it was, otherwise each line will be sampled from a new random location)

examples

  • chunk from pattern 1

-P01 ----

  • chunk from beat 4 of the pattern at the second sequence step

-S02 B004

  • chunk from 4 lines below the current line from a random pattern

-R00 -D04

  • chunk at a random line from 4 sequence above

-U04 R000

  • chunk at a random beat from 5 sequence above

-U05 BR00

  • chunk completely random lines from pattern 8

-P08 RR00

  • copy a single line from 8 from the pattern 4

SP04 L008

additional commands

There are a few more commands you can use inside the Vol or Pan columns of the first note column.

  • K- : keep the line as it is (useful for when you want to preserve some handwritten lines while chunking the rest)
  • C- : clear the line
  • N- : no rendering, everything will be skipped after this

If you want to protect an entire pattern from re-rendering simply mute the chunk track at the particular step in the pattern matrix (middle click on a pattern).

Transpose the chunked notes

  • Dx : lower by x semitones
  • Ux : raise by x semitones
  • Bx : lower to x octaves below
  • Ax : raise to x octaves above

Transpose the instrument of notes

  • Ix : raise by x
  • Jx : lower by x

If you want to cover more lines with the same transposition your can repeat any of these with zero for x, this will transponse to whatever value is at the top of the chain. For example this will raise four consecutive lines by 4 semitones.

U4
U0
U0
U0
  • OFF: you can put an OFF into the note column to write a note off across all tracks

settings

  • Track Prefix sets what you need in your track’s name to be recognized as a chunk track

Render

  • On Change - enable to have your chunking get auto-rendered whenever you change lines
  • Watch Interval - ticks to wait before auto-rendering after lines changed (increase this if the auto-rendering is too quick for you)
  • Render - run a render now

Randomness

Random commands use a seed to have randomly generated values stay reproducible, you can unlock this seed to have each render get a new seed, otherwise you can change the xx values after random commands to have a new offset from the seed (and so a new random output). You can also force a seed change using the Render with new seed commands.

  • Lock Seed - keep the random seed locked
  • $eed to Track - write the seed into the name of the track as $seed to preserve the seed for the song, otherwise your seed might change between project (since it is saved globally with the tool preferences)

Pattern

  • Pattern Format - set how numbers are interpreted for pattern commands (decimal or hexadecimal)
  • Line Format - same for line and beat indices
  • Automation - toggle chunking automation info (this might not work as well)

Note: if you set a format to decimal but have a hexadecimal value in you chunk track like -P0A it will still get interpreted as hex.

Colors

  • Change - enable changing the chunk track’s color while editing and rendering
  • Assign Edited - press this to assign the currently selected track’s color as edited color
  • Assign Rendered - same as above for the rendered color

download

see the source on gitlab

download from direct link (this zip includes all my other tools as well)

consider donating :heart:

Note, this is a beta version, the commands might change a bit after more testing.

Tell me what you think!

10 Likes

Looks very intriguing and useful! Excited to play around with this. Seems like it may open up some interesting new potentials in renoise… Thank you for this, @unless!

I wonder if it might be possible to add a command that repeats a range of pattern lines x number of times before moving on

2 Likes

Thanks @slujr !

Right now the closest I can think of that would be fit into the current system is to have the pattern commands accept a number as the first char (which can now be the S flag) and use that to set a wrap-range size for the chunk.

For example

4P01

would read the first 4 lines from the source pattern repeatedly instead of moving on to the rest.

Specifying the “moving on after x repeats” part would only be possible by inserting another chunk (or chunk OFF command) 4 repeats later, otherwise it would repeat forever.

Anyways, maybe instead it should be a completely separate effect you could insert to a third column perhaps? That way the range could be larger than 1 digit and other effects could fit there too, for example I was thinking about implementing a stretchy one that would add x lines between each line to make the copied chunks slower.

2 Likes

This sounds like a great approach and would allow for flexibility for other commands down the line. You’re really expanding potential with this tool!
Still psyched to try it out

This looks really promising,can’t wait to try it!!! I was looking for Renoise to update the pattern matrix so i could do something similar as what your tool does.Looks like you may have solved a big problem for me.

I am only going by that short little video you have up, but it looks like it pastes data in from an entire pattern.

Is it possible to have a 3rd fx lane in order to command the tool to take the data from a single track rather than a full pattern?

Thanks @ToybOx, yeah it would be cool to be able to only affect certain tracks, although it does require a fair bit of change to the tool.

I am hesitant to make it work through an effect column because I am guessing it would be a bit error-prone to refer to tracks via an index and to manage track selection on a per-line basis, especially if you wanted to select more than one tracks.

Below are some alternative ways to implement this sort of functionality

  • every track that has # in its name gets marked for chunking, other tracks are left alone, or conversely only tracks with $ in their name would get chunked
  • adding a designated “solo chunk track” with a name like @<name of existing track> would only affect that single track
  • group together tracks with the first having the @ prefix in the name and have it chunk only the tracks in the group (this might work best)
  • have some kind of glob pattern in the chunk tracks name to select tracks (for example @Drum_* would only chunk tracks with name starting with Drum_)
1 Like

If there is no command in 3rd fx lane, it will chunk whole pattern.Would that cause errors?

There are a few “ergonomic” problems with that

  • say you have a lot of named tracks and you’d have to count them to figure out the index
  • you input a track index digit 10, it re-renders onto that track 10, you enter another digit (because you want track 11 for example), now it re-renders to track 11 but track 10 already got messed up, same thing if you input the wrong index by accident (off-by-one would be common I think), so if your goal was to keep the rest of the tracks from changing this would result in an somewhat annoying workflow of trial, error and undo
  • having the chunk track as the first track while changing only a single track towards the master track would mean the edited track might not even be visible (I guess this is somewhat of a flaw in general as well but less noticable)
  • the worst is that tools don’t really have a way to notice that you reordered tracks, so if that happens the track index you’ve previously set is referring to another track and the pattern is messed up on re-render again

For these reasons I think putting track selection outside of the pattern might work better but I’ll keep the possibility open for a command as well. Either way, a bit more testing would be nice before adding deeper changes and features.

1 Like

I would like to test it but have no idea how to install it,I’m used to just dragging over window and installing.

Hmm, It should install that way (make sure to unzip the zip first and drag only the chunk_chops folder as the zip has multiple tools in it). When installed you should have a Tools/chunk_chops item in the top menu.

Ok got it,i should have read the read me.I didn’t know you could also drag folders into renoise window.

1 Like

version 0.2 - Tracks :railway_track:

You no longer need to have your chunk track as the first track in the song and you can render to only some tracks instead of the entire pattern.

By default tracks that come after your chunk track will be modified on render. Further, you can render to specific tracks using one of the following techniques.

  • Split - Every track that comes before your chunk track will be left alone
    | kept | kept | @ | chunked | chunked | chunked |
  • Mute - Prepend a # (hashtag) character to the front of the name of the tracks you want to preserve
    | @ | chunked | #kept | chunked | chunked |
  • Solo - Name your chunk track as @Tx where x is the number of tracks to modify after it (for example @T2 will only affect the two closest track on the right)
    | kept | kept | @T2 | chunked | chunked | kept |
  • Bus? - Name your chunk track as @G and put it inside a group, this will only render to the tracks inside the group (group boundaries noted here as < >)
    | kept < @G | chunked | chunked | chunked > kept |

While it’s not based on a command, hope it still works for you @ToybOx !

3 Likes

Is there a way to download this for Mac? I feel like I’m missing something since my Mac doesn’t seem to recognize the file types.

Hey @Bam-boozle, you need to unpack the zip first as it contains multiple tool folders and drag only the one you need onto Renoise.

Alternatively, I’ve made this new site since, which serves each tool as a separate download, it should work as is.

1 Like

this is sick! There is so much to learn that I probably am just missing something after working with this thing for only a day. But here is where I am stuck-- My track has multiple synth phrases and samples that run entirely with SXX command. I am seeing if there is a way to automatically load those SXX commands into the new pattern, similar to how you would if you scrolled around through the various tracks with AUTOSEEK activated on all phrases/ samples. This creates a very glitchy effect that I would love to utilize in my music.

EDIT: I think a work around could be manually having the SXX commands reflected in each line of the track before running the chunking tool

If you mean you want to chop instrument phrases from the Sampler tab into the pattern, I have not implemented that unfortunately, the tool can only source data from other patterns, not phrases. Could be a nice addition though.

1 Like