How do I humanize a MIDI track?

I’d like to Ctrl-A a MIDI track and select “humanize velocities” and/or “humanize timing” to give it a slightly less robotic feel. These features would ever-so-slightly randomize the velocities and timings of these midi notes according to some percentage or range entered by the user.

So for example, “humanize velocities” would take…

97, 97, 97, 97…

… and end up with…

95, 98, 97, 99…

Does anything like this exist in Ardour?

Edit: Found the one for velocity.

Ctrl-A, Transform, Set velocity to random number from 94-101.

1 Like

There is no built-in generic humanizer in Ardour, at this point in time (Ardour 5.12) .

see also

1 Like

Wondering, if there is already a way, to comfortably “humanize” velocity and timing?

It could be simple randomizing between two values or percentage (in my non-dev mind):
Edit in MIDI Event/Region - “Humanize”
Set Velocity Range “X” / “Y”
Set Timing Range +/- “X”

This is at least, how In use it in another DAW. It would help in Ardour a lot. :slight_smile:

See the Edit in the original post:

Edit: Found the one for velocity.
Ctrl-A, Transform, Set velocity to random number from 94-101.

You also can use the MIDI Velocity Randomization plugin from Robins MIDI Filter Collection: x42 MIDI Filter Collection

1 Like

Ty, it‘s not just the velocity, but the (micro) timing. But it‘s a start. Ty. :slight_smile:

There is also BSchaffl: GitHub - sjaehn/BSchaffl: MIDI groove quantizer LV2 plugin

Amp Random lets you randomize the velocity, and Steps Random lets you randomize the timing.


Hm, I wonder if randomization is really what I would want.
A (good) drummer definitely does not randomize but has certain micro timings which are not random (before/after the beat).
E. g. she would have a certain type of swing on the the hihat. This could not be reproduced by randomization.
Any ideas?

1 Like

Indeed kick is usually a bit late, snare often a tad early, but that depends on the context.
As you already mentioned Hi-Hat micro timing is even more complicated, and subject to ongoing research:

Then again all nuances are lost with MIDI drums to begin with…

For the micro timing, you can do something very similar with the transform tool :
Set [start time] to [this note’s] [start time]
[*] [exactly] 1000
[+] [a random number between] 1 and 11
[-] [ a random number between] 1 and 11
[/] [exactly] 1000.

This works because Transform operations are sequential (note that start time is in beats)
It adds or removes a random a random number between -10 and +10 thousands of beat to the start time.
That is a microtiming variation of less than 1/100th of a beat, maybe too little, if you want more, change the two "11"s to a greater value.
As an exemple, if your hit is on the 24th beat, then the result could be :
24 x 1000 = 24000
24000 + 9 = 24009 (9 being random between 1 and 11)
24009 - 2 = 24007 (2 being random between 1 and 11)
24007 / 1000 = 24,007
The hit will be moved 7/1000th of a beat later.

1 Like

micro-timing refers to specific patterns (not randomness)