MIDI Drums - Humanize/Randomize/Modify timing just slightly


i’m sure this question has been asked a few times before but i couldn’t find any useful information about this.

I’m programming some drum-tracks and want to make them sound more realistic. Therefore i’m searching for a tool to modify timings of some notes just a little bit. Let’s say the snare hits on the second beat and the floor tom hits on the second beat too, then i want to achieve some slight ‘flam’ effect because it’s more than unrealistic the two hits match exactly every time they are played. I’d like to have some possibility to slightly randomize every micro-timing of these hits individually without having to drag them manually.

I’ve found the Transformation-Tools for MIDI but i couldn’t use the time modifications because it caused the notes to jump through the whole track. I couldn’t figure out how to modify it just a bit.

Can anyone tell me how to do this? Should i maybe switch to external MIDI-Editing tools and import them later?

Velocity is working fine with these tools. But timing isn’t as easy to use. Maybe i’m just using the wrong modifications…

Thanks in advance!



Ardour’s workflow for MIDI leaves quite a lot to be desired. This is one of those things.

What a bummer… That’s a significant drawback for me. I’d really appreciate this functionality in future versions. Is there any way to achieve this functionality? Maybe some scripts or similar?

In many cases synth plugins offer that. e.g. recent drumgizmo has elaborate logic to do this. Humans are not random when it comes to timing fluctuations.

The LSP samplers have features for velocity and timing variation.

Yes, actually humans are not random but they aren’t perfect as well. So i basically need a tool to get away from this perfect timing. Velocity is working well. Superior Drummer 3 tools for doing this too but i can’t get SD3 in sync with the Ardour meter. I need 6/8 meter but then SD3 jumps after a few beats. There’s an issue opened for this problem in the carla repositories on github.

It would be a nice feature for the next minor/major release. MIDI Editing enhancements in general would be nice.

We’re not likely to do anything at all with MIDI timing until the nutempo branch is merged, which is primarily concerned with fixing our representations of musical time. Originally we hoped that this would be a part of the 6.0 release, but it now seems almost certain that it will be deferred till after that.


offers a random timing variation, I haven’t used it for that purpose, but it might provide better results than a perfect timed midi track. For velocity there is also http://x42.github.io/midifilter.lv2/http___gareus_org_oss_lv2_midifilter_randvelocity.html

1 Like

By your representations of musical time you mean that beats per minute are actually beats per minute? So let’s say for 6/8 on 120 bpm you’ll get exactly 120 beats as well as for 4/4? 2 beats per second? Or did i understand something wrong?

It’s a lot more complex than that, and also not really related to that particular issue. Ardour already allow you to opt for “beat == time signature denominator”.

Stupid things to try.
Disable grid when placing notes with mouse.

Or the obvious, record with midi controller. When quantize is needed (for me always…) quantize to max 80 %

The inability to use the MIDI Transform tool (which is veeeery powerful) is due to this bug http://tracker.ardour.org/view.php?id=7229.

In fact, even though the start position of a note is a decimal number (choose "Set ‘Start Time’ to ‘Exactly’, the numeric field that appears shows a decimal number to be edited), the subsequent added lines (added with the ‘+’ button) don’t update their numeric field values and only accept integers as input, while the first field does update.

If the fields worked and updated, it should be possible to add a random value and substract a random value, with integers, the notes can only be moved by an integer value of beats.

I’ve tried this but i didn’t get the latency compensated. Therefore i couldn’t use that one. I’m faster when programming it myself.

Programming without the grid enabled could be worth a try.