New Tool (3.4) genpad - euclidean | chorder | bars

genpad :joystick:

The idea is to have some handy popups that can be controlled with a few keys (mostly just the arrows) to offer a sort of gamepad like control-scheme (although the tool doesn’t respond to actual gamepad inputs out-of-the-box).

Provides key-bindings under Tools in both the Pattern Editor and Phrase Editor, they can also be launched from the right-click context menu inside each editor. Look for entries named as genpad - [name-of-pad].

Currently two pads are available, one for generating rhythms and one for creating chords.


euclidean :greece:

euclid

Generate euclidean rhythms from a set of notes in a pattern or a phrase.

usage

  • Have some notes in a pattern or a phrase
  • Launch the euclidean genpad.
  • Select parameters using the Up and Down arrow
  • Adjust them by pressing Left or Right (hold Ctrl/Command for bigger steps)
  • The pattern will be continuously changed while you are adjusting
  • Press Enter or bounce around when you are happy

You can start from a single note or multiple notes, you can even use chords or a mix of single notes and chords. These notes will be collected when you launch the genpad and will be used as a note-pool to fill your pulses. If there are less notes in the pool than pulses you picked, they will be repeated over and over.

You can select a range inside the pattern to only generate the rhythm there, if you haven’t selected anything or only selected a single line, the rhythm will be generated over the entire pattern.

parameters

rhythm

  • pulses - the number of pulses to distribute over the selected steps
  • steps - how many steps to distribute the pulses over
  • rotate - rotate the generated pulse-rhythm across the steps
  • offset - rotate the resulting rhythm by a line offset in the pattern

notes

  • cycle - cycle the pattern of notes you have (if you only selected a single note or the same one multiple times, this parameter will have no effect on the output)
  • repeats - number of times to use each note from your note-pool, for example if you have notes C, E, B and set repeats to 2 the pattern will contain notes as C, C, E, E, B, B

swing

  • swing - the amount of swing to apply to pulses that fall into the swing-window
  • size - how many lines to repeat the swing pattern over, by default this should match your LPB
  • window - where to start applying the swing inside the size, for example if you have 4 lines-per-beat with a swing size of 4, a window of 2 will mean the swing amount will be applied to lines 3 and 4 in each beat
  • shift - shift the swing-window around to swing different parts of the beat

delay

  • delay - apply a uniform delay to every generated note
  • snap - by default the generated notes will be quantized to lines, if you want actual equal distribution of pulses you can switch this to none and have wonky rhythms

You can reset each parameter to the default value using Backspace.


chorder :musical_keyboard:

chorder

Create chords faster by stacking intervals.

usage

  • Launch chorder from the pattern or phrase editor
  • Press Right to stack notes a consonant interval apart from the last note
  • Press Left to do the same but for dissonant intervals
  • Up and Down will change the selected intervals and the last note as well, the currently active intervals will be displayed at the bottom of the window.
  • Backspace will remove a note

Consonant intervals include major and perfect intervals while dissonant intervals include minor or diminished intervals. This allows you to quickly type out chords of different qualities using combos as if your were in a fighting game.

:ninja: For example…

You can also access different functions to modify your chord further by holding down Shift or Control/Command

holding shift

  • Left and Right will move the bottom note up - and the top note down - an octave (or more if the same note already exist at that octave)
  • Up and Down will shift the entire chord by octaves (or semitones if you hold down Control as well as Shift)

holding control

  • Left and Right will select the previous or next note in the chord (displayed with a * sign at the top), you can use Backspace to delete the currently selected note
  • Up and Down will transpose the selected note

play and retrigger

Only relevant in the Pattern Editor

If playing the edited pattern on loop to listen to your chord isn’t enough, you can somewhat preview the edited notes by playing the pattern from the currently edited line by pressing and holding down Space (playback is stopped when you let go).

You can also toggle retrigger mode with Shift + Space, this will automatically retrigger the pattern whenever you add or modify notes.

vim keys

If you are using vim or just don’t like arrows keys, you can also use the H⯇ J⯆ K⯅ L⯈ keys to navigate, and X instead of Backspace.

download

see the source on gitlab

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

consider donating :heart:

16 Likes

Amazing tool!

Something people have been asking around for ages hahaha. So far, it was possible with xStream, but it’s probably too much hassle for common users with absolutely no experience with Lua.

Thanks again < 3

2 Likes

Cool!!! Remember tidalcycles.

version 0.2 - new pad: chorder :musical_keyboard:

This new pad is for creating chords using combo attacks. You can read about in detail in the first post above.

additionally

  • Added a warning to the euclidean pad in case you tried to launch it from a non-sequencer track.

  • vim bindings (HJKL and X) are now available in addition to arrow-keys control for every pad

Thanks @untilde! I guess I’ve played too much a while back with VCVRack (which has many modules offering euclidean rhythm generation) to yearn for them in Renoise, but time passed and after seeing them being mentioned recently by @slujr, I became quite nostalgic about it. It was also a good excuse to try out writing a tool using the new renoise lua definitions (for those interested, this genpad tool is almost entirely type-annotated using lua-ls and it was quite nice to write as a result).

Cheers @Jalex! I am a big fan of tidal, it would be insanely cool if its pattern engine was available to generate notes in renoise, unfortunately this tool doesn’t even come close to the depth of it. Although it worth noting that there is already an on-going lua port for tidal named Tranquility, maybe at some point it will be wrapped in a tool, hmm?

2 Likes

@unless out here doin’ the Lord’s work! :pray:

Very much looking forward to trying these out

Renoise community is best community :trophy:

1 Like

Yeah! Tidalcycles very interesting project, my first steps in codding experience. These are very cool instruments (genpad), it’s a pity you can’t listen to them in real time.

1 Like

You can listen to euclidean patterns if you play the edited pattern on loop.

As for chords…

version 0.2.1 play & trigger

You can now preview edited notes while working with chorder.

See details above :upside_down_face:

2 Likes

Yes, I see. I just thought about an option, albeit in a more simplified form, where you can update the script like in tidal cycles. for more consistent control

Damn @unless! New update already? Omg. Chorder is so cool.

1 Like

Thanks haha, to be fair this chord input method was an idea I’ve been toying with for a while, it just fit right into this arrow-controlled context.

2 Likes

Loving these so far :+1:
Can I ask what ambitions/plans for future pads you have in the works?

I have an idea that might be easy enough to implement and would fit into this schema pretty well, I think…
The idea is a time signature assistant, maybe called “time change” or something along those lines

it would have something like the following parameters:
•new patterns/current pattern (checkbox)
•bpm:
•lpb:
•time signature: (which would work out the pattern length)
•number of patterns (to create):
•change accent lines to denominator (checkbox)

and then would either change the current pattern to these values (written in the master track), or create the number of new patterns specified

Not sure if the API allows for changing the accent lines or not :upside_down_face:

Anywayz, it’s a thought and would be super handy for ppl working in odd/changing time signatures or using unusual rhythmic modes

It could also be cool if the bpm parameter had a variety of common metric modulation ratios available for modulating from triplets or quintuplets or n-tuplets

1 Like

No other pads in mind for now, I have a separate tool that is a bit more ambitious than these and I think I should focus on that.

That being said, your request is kinda relevant to it as well so I might look into it. I do know the accent line highlight is unavailable for tools currently. The other parts are fairly straight-forward to do.

Could you explain this more with some concrete example? You mean it would offer you various multiples of your current BPM as a shortcut?

Maybe it would be nice to just have a simple calculator kind of field which you could use to set a new BPM like current_bpm * (x/y) where you could step through integers for x and y?

I’m not very familiar with using metric modulation much so I don’t quite have a good mental model of what is it that a workflow needs to be able to do it more easily.

1 Like

this is exciting news :slight_smile: Looking forward to seeing what you cook up!

Yes. So, for instance, say I have a triplet feel rhythm going at 108 bpm and I then want to modulate those triplets to become quarter notes of a new rhythm. The tempo would slow down to 81 bpm, I think.
3/4 @ 108 >> 4/4 @ 81

Yes, I think this would do the trick, where x is the future/desired modulation pulse rate (n-tuplet), and y is the current pulse rate

Feature request. Not sure if this is possible, but could the keybinds to invoke the genpad be altered to also close the window?
A toggle state would be very helpful and a workflow enhancement for keyboard warriors

Also, I’m getting some behaviors from chorder that makes me wonder if they are intentional. Namely, when pressing or holding space to play, chords are spammed into the pattern editor every other line or so. Maybe this has to do with keyboard key repeat rate?

For chorder, it would be great to be able to specify a line value for the next chord input, for ease in creating progressions. It might also be nice to have an option for a note off insert at a specific line value as well. just some ideas :upside_down_face:

I really like the modular, intervallic approach here. Good stuff :+1:

Hmm, I guess it would be possible, but isn’t Enter and Escape good for closing?

If you mean continuing the same “session” after reopening, that is harder as these tools were designed destructively, you open the pad, you modify the pattern, you close it. Changing stuff in the pattern while the pad is open is not supported and might lead to some weird behaviours.

I tried making chorder in a way that it will pick up an existing chord from the pattern so you can kinda continue building it on reopen, but if you changed parameters like volume for individual notes, that will be lost.

For the euclidean, it’s even more destructive since it looks at the pattern every launch as if it was just a new “note pool” for generating stuff. Tracking edited state across different patterns and tracks would be way more complicated and error-prone and I don’t think I’ll attempt that.

Chorder does spam the chords into the pattern… You aren’t supposed to have player follow on :sweat_smile: I’ll try to come up with something to prevent this in general, but since it enters the chord wherever your cursor is, having follow on while using it is ill-advised.

About the next chord input, I do plan on adding Alt+Up/Down to move around in the pattern while the pad is open, but currently it kinda assumes you haven’t moved your cursor since opening the pad so some stuff needs to be changed to accomondate this.

1 Like

I was missing this crucial information lol. Much better, thanks!

I see. I almost always have pattern follow on by default. easy enough to adapt

Cool. Thanks again for these great little extensions!!!

version 0.3 new pad + updates

In response to @slujr’s request, I present to you…

bars :ladder:

bars

Manage the timing of your patterns from a dialog that can create new patterns with length based on beats and bars. If you want, it can write FX commands for you as well to change BPM, LPB, TPL, it might even make you BFF with odd time signature changes.

usage

  • Open the pad using the key-binding you’ve set up
  • Select fields with Up and Down
  • Set values with Left and Right (hold ctrl/command for coarse stepping)
  • Press Enter to apply your parameters

parameters

  • beats - how many beats you want to have in the pattern
  • bars - each bar will have the previous number of beats inside it
  • LPB mode select what to do with the lines-per-beat value
    • keep - no ZL command will be written, the pattern will play at your current LPB
    • edit - a ZLxx command will be inserted into the first line of the master track
  • n lines - becomes available on edit LPB, it affects how many lines each beat has
  • BPM mode select what to do with your pattern’s beats-per-minute setting
    • keep - no ZT command will be written, the pattern will play at your current BPM
    • edit - a ZTxx command will be inserted into the first line of the master track
    • calc - same as edit but lets you pick a new BPM based on an integer ratio, useful for metric modulation
  • n beats - set your desired new BPM value
    • * x, / y - these lines will only appear on calc BPM mode, they will let you pick values to calculate the new BPM with the equation BPM * (x / y)
  • TPL mode select what to do with the ticks-per-line setting
    • keep - no ZK command will be written, the pattern will play at your current TPL
    • edit - a ZKxx command wil be inserted into the first line of your master track
  • n ticks - available when edit TPL is set, use it to pick the desired TPL
  • n patterns - select how many new patterns to insert after your current pattern with the settings you have chosen
    • to modify the current pattern, set this to zero. edit pattern will appear and no new pattern will be created when pressing Enter.

chorder

  • fixing the issue with follow turned on by turning it off automatically when you open pads.
  • Alt+Up/Down will let you go to new lines to continue adding new chords. This workflow is still not perfect but at least it is now somewhat possible.

manual website

As I create more tools the readme containing all of their descriptions got a bit unwieldy on gitlab. It was also not optimal that people had to download the whole repo and unzip before being able to install. So I made a page that gets updated automatically whenever I push new updates to these tools,

  • it serves each tool as a separate download
  • provides a nice way to browse the manuals
  • if you want you can still download all tools at once and the old links will keep working the same way.
  • check it out! (still somewhat under construction but it is already functional)

Stay on track!

1 Like

Let me know what you think @slujr. Next time I get back to this, I’ll have these todos for bars

  • Find the timing commands in patterns when you switch to them and update your current settings automatically without having to play the line.
  • Let you insert a new section with the defined timing settings inside the current pattern at the cursor ( to create compound rhythms)
  • Optionally add timing information to new patterns as sequence comments in the pattern matrix
  • Save/recall previous settings (I’d like to implement this for all pads)
1 Like

:money_mouth_face::star2::exploding_head::dizzy::notes::ok_hand::alien::sparkles:

Looks great! @ToybOx (and several other residents glitch lords) might want to check this one out

TYTY!

Will give my opinion after trying it out for a bit, too

1 Like