Phrase + maYbe fx + Delay column = Autohumanizing Drumkit

If you’re clever you probably already know what I’m going to explain from the topic title alone :wink:

If you’re impatient or don’t like to read words, here’s a screenshot of what I did:

And now for the explanation!

  1. If you add a new phrase to an instrument that did not have phrases before, you get a phrase with a single C-4 note that is stretched across the entire keyzone of your drumkit/instrument. Play it like this and this one note is transposed with whatever key you hit, meaning your instrument sounds exactly the same as it did before it had any phrases.

  2. This phrase has four columns by default. If you add a C-4 in each of them, your drums will sound four times as loud (assuming no other crazy tricks are going on).

  3. Now, if you add a Y00 in the rightmost effect column, and a Y8 in each of the four volume columns, Renoise will randomly pick just one of these four columns to play. Since each column produces the same sound, again, your drums will sound exactly as they did before, and you may start wondering what’s the use of this exercise. Hold on!

  4. Finally, click the DLY button to enable the delay column, and give the second, third and fourth columns a delay value of, say, 10, 20 and 30 (the first column stays at --, meaning 00, no delay). What happens now? Renoise will pick one of the columns at random, and therefore each and every drum hit will be delayed by 0/16th, 1/16th, 2/16th or 3/16th of a line!!

  5. You can, or maybe should, disable the Loop button on your phrase. Now you can also set the phrase length to a single line (you don’t need more, maybe it saves CPU or something).

Your drums are now humanized, as if played by yours truly (I can’t play drums very well, nor keep a steady rhythm).

You probably want to pick smaller values than 10, 20 and 30. It really sounds like quite shoddy drumming if you randomize the delays that bad. But it serves the purpose of creating a very clearly audible “humanization” of the drum timings.

It’s possible to add more columns to the phrase, to create a finer spread of delay values.

I didn’t try (yet), but I figure you can use the phrase-LPB value to quickly tweak the total amount of humanization, so you don’t have to adjust all the delay values separately (more LPB = quicker lines = smaller delays = less humanization).

Also you can tweak the Y8 values, to adjust the individual relative probabilities of each column. If you do this cleverly you can perhaps approximate a Gaussian distribution in delay values, which is a good model for the actual distribution of a real live drummer’s inaccuracies. On the other hand, tweaking the relative probabilities away from equal odds reduces the entropy of the choice (as some options will be chosen less often than others), and you can also approximate the distribution by cleverly picking the delay values themselves. I might run some quick Python simulations on this and update if I find some nice values. On the other other hand, I kinda doubt if you can actually hear the difference between a uniform and Gaussian distribution anyway.

Last remark, I said above “assuming no other crazy tricks are going on”, one of those crazy tricks is the following cool thing I discovered by accident as I was trying this out: Another “humanization” trick I have running on my drumkit is in the Modulation section of the instrument, I have a very slight random LFO running over the pitch (frequency = 8 beats, amplitude = 0.030, pitch range = 6 st), that way every drum hit is also played at a slightly different pitch, simulating slightly different ways of hitting the drum things. With that setup, in step 2 above, playing the same note in all four columns at once did not just make the instrument four times as loud, I also heard a weird flanging effect. Investigating this, I found that it will also play each column at a slightly different random pitch: BAM! INSTANT CHORUS. I’m not yet entirely sure how useful that is, but as I said, I accidentally came across the effect while building this maybe-delay-phrase-humanization contraption.

Got feedback? Yes please! Try it out, play with it, get creative, I want to hear your thoughts and ideas!

(BTW it can very well be that someone already posted this trick as Renoise3 has been out for a while now. If that’s the case, I apologize, that other person can take the credit, though I hope this post will be useful for some people nonetheless)

Learning machines to act more like a human :slight_smile:

I don’t think this trick has been shared before, and just about any useful application of the maYbe command is awesome!!

Slightly related, I’ve talked about “probabilistic triggering of phrases” - reminding ppl that the maYbe command can be used in to trigger entire phrases and not just single notes.

Combine that trick with this one, and you can have an additional level of structure on top of the randomness

Slightly related, I’ve talked about “probabilistic triggering of phrases” - reminding ppl that the maYbe command can be used in to trigger entire phrases and not just single notes.

Combine that trick with this one, and you can have an additional level of structure on top of the randomness

I’m trying this trick but running into a little problem:

I’ve created three phrases which I want to trigger randomly. I’ve set up the maYbe command for each column and the sample command column.

It works fine selecting a phrase… until it loops, in which case more than one phrase can be playing (the phrases are looped)

I can fix it by ending all the notes at the end of a pattern, but it’s still a problem when I use a block loop.

It seems as though the maYbe command doesn’t tell existing columns to stop… I don’t know if it should, but it would be nice if I could use the block loops along with this trick, without having the phrases overlap.

It’s not a huge deal. But I use block loops all the time, and while this trick is cool it seems somewhat incompatible with block loops.

Actually, it’s a bit of an annoyance because if you’re going to do this maYbe trick on multiple lines, you need to stop any running phrases before each line. Perhaps I’m using it wrong? It starts the phrases mutually exclusive, but doesn’t stop them the next time a mutually exclusive line runs… making them not actually mutually exclusive unless I specifically put a note off in each column first.

Actually, it’s a bit of an annoyance because if you’re going to do this maYbe trick on multiple lines, you need to stop any running phrases before each line. Perhaps I’m using it wrong? It starts the phrases mutually exclusive, but doesn’t stop them the next time a mutually exclusive line runs… making them not actually mutually exclusive unless I specifically put a note off in each column first.

Doh, that is one thing I had totally forgot about. Technically, it isn’t really strange at all - since the note that should stop the currently playing note might never get triggered. And when it doesn’t, a sustained voicewill simply continue to play.

I guess you found a workaround, but it sure is annoying - esp. when using block-loop, as you point out. I would also expect a bunch of mutually exclusive notes to act as a “wall” that will stop any notes (except one)from playing in those note-columns.

Learning machines to act more like a human :slight_smile:

Well, my Computational Science major was Machine Learning, so I guess that worked out well, then :wink:

But seriously, I thought this slight randomizing of drum hit timings was a common thing to do to computer sequenced drums to make them feel more human? I might be wrong but I thought Ableton or some other software had an option to do this. Also for velocities/volume which is easy enough to do in Renoise with a random LFO–unless you got a really compex drumkit with different layer samples for velocities, in which case I suppose you can also use the maYbe/phrase trick to randomize that. (though, now I wonder, what happens to the velocity/volume parameter if you hit a phrase? do they get multiplied together?)

So anyway, having played with this trick a little more, what I really like about it, is how it’s in fact real easy to just “drop in” to an existing drum kit. Add a phrase and just that one line with the four delays and maYbe commands and tadaah, humanization!

For instance I was making this thing https://soundcloud.com/tripzilch/lalalalaremix (WARNING: harmonic atrocities), realized the drums could use more wonky, added some quite extreme delay values to make the whole thing even more unhinged. [there’s a story behind this track, the electronics guys at the kids’ centre where I work made this device to demonstrate something about electricity, that plays this tune, circuit repurposed from one of those postcard chip beepy things, and the kids play with the device ALL THE TIME, drives everyone crazy, so what’s a man to do? why, sample it and make it worse, of course! Fact is, the original device is actually already quite out of tune and “crunchy”, because the circuit doesn’t connect quite properly … this track is my revenge]

Combine that trick with this one, and you can have an additional level of structure on top of the randomness

Slightly related, I’ve talked about “probabilistic triggering of phrases” - reminding ppl that the maYbe command can be used in to trigger entire phrases and not just single notes.

Yes, I like that idea. I love procedural/generative art in general (demoscene background, after all :wink: ). However I’m still learning a lot about making music, I like to try to stay in control a little bit. I think I’d be a lot more comfortable using that technique if I could somehow set the random seed for the maYbe command, so at least I know I could have repeatability, if it suddenly makes something awesome and I want to find out why or how that happened :slight_smile:

And yes, the note-off problem Pat mentions is indeed a little annoyance, I’ve come across it several times with similar experiments. Usually inserting a “wall” of note-offs on each note-column does the trick, but it’s a bit cumbersome and makes it harder to tweak because you need to edit two locations instead of one.

Very nice little trick. I haven’t really played with either the maybe command or the phrase editor so thanks for giving me some use out of both!