InfiniteDrummer Controls Install GitHub

Max for Live · MIDI effect · Ableton Live → Roland TR-8S · free

Programmed drums
that sound played.

Infinite Drummer sits between your Live drum clip and the TR-8S and nudges every hit. Each instrument gets its own timing, velocity and chance on one panel, so the hats can be loose and the kick can stay tight. Kit-wide drift, grid accents and the drag of a soft note do the rest.

Download the device Source on GitHub Grab the InfiniteDrummer artifact from the latest build.
The Infinite Drummer device in Ableton Live: an Amount dial and global Drift, Drift bars, Lookahead and Soft = late fields on the left, and eight instrument rows with Name, Note, Jitter, Late, Vel ±, Accent and Chance columns on the right. A readout at the bottom-left says waiting for notes.
Eight instrument rows, TR-8S note map by default One Amount knob scales every deviation Readout shows the last hit's name, offset and velocity

What it does

Every hit moves a little. None of them move the same.

A drummer does not quantise. Hats wander a few milliseconds, the snare lays back, ghost notes arrive late and quiet. Below is two bars of a kick, snare and closed hat pattern as Live sends it, then as the device passes it on with the default settings. Re-rolled every bar, like the real thing.

Two bars · 16th grid · Amount 100 %
Grid Humanized hit (size = velocity) Dropped by Chance
waiting for notes

Signal path

Live keeps the sequence. The TR-8S just plays.

Drop it on the MIDI track that feeds the drum machine. Notes that match no row pass through untouched. CC, pitch bend, pressure and program changes go straight through. Note-offs follow their note-on by exactly the same delay, and a hit dropped by Chance drops its note-off too, so it is equally safe in front of a Drum Rack.

Live drum clipyour programmed pattern
Infinite Drummerper-row jitter, late, vel ±, accent, chance
kit-wide amount, drift, lookahead, soft = late
MIDI To: TR-8Sor External Instrument, or a Drum Rack

Controls

Per row, or the whole kit.

Incoming notes are matched against the eight rows by MIDI note. Everything a matched hit gets is listed here, with the defaults you saw in the screenshot. Timing is in milliseconds, velocity in MIDI steps.

ControlScopeWhat it does
Nameper rowA label so you can tell the hats from the snare. Click, type, press Enter. Defaults to the TR-8S abbreviations and is saved with the Live set.
Noteper rowWhich MIDI note this row catches. Defaults are the TR-8S map: BD 36 SD 38 CH 42 OH 46 RS 37 HC 39 LT 43 MT 47.
Jitterper rowRandom timing, ± this many ms. Hats want more than kicks: the defaults run from 3 ms on the kick to 8 ms on the hats.
Lateper rowFixed timing bias in ms. Positive lays back, negative pushes. Negative values need Lookahead.
Vel ±per rowRandom velocity spread in MIDI steps.
Accentper rowVelocity shaping by grid position. Hits on the beat get +Accent, the "&" gets a quarter of it, the "e" and "a" lose half. The bar's downbeat gets an extra half.
Chanceper rowProbability the hit plays at all. Made for ghost notes and busy hat patterns.
Amountwhole kitScales every timing and velocity deviation from 0 % to 200 %. This is the performance knob: map it to a controller and ride it. Chance is not scaled.
Driftwhole kitA slow push and drag of the whole kit, ± this many ms, following a sine that loops every Drift bars bars of song position.
Lookaheadwhole kitDelays everything by this much so rows can be early. Compensate with the track's Track Delay set to −Lookahead ms.
Soft = latewhole kitSoft hits land up to this many ms late, hard hits equally early. Ghost notes drag, rimshots dig in.

Starting points

Three ways to set it.

Tight electronic

Barely there. Enough to stop the machine sounding like a machine.

Amount
60 %
Drift
0 ms
Soft = late
0 ms
Jitter
2–4 ms, every row

Live band

The defaults. A drummer who has had one coffee and is listening to the bass player.

Drift
3 ms over 8 bars
Soft = late
2 ms
Hats
Jitter 8, Vel ± 18
Snare
Late 2 ms

Falling apart on purpose

Map Amount to a fader and push it past 100 % for the last chorus.

Amount
100 → 200 %
Everything else
as Live band

Install

Four steps.

Every push builds the device on GitHub Actions. Open the latest run and download the InfiniteDrummer artifact, which holds the .amxd, the .js engine and the .maxpat. Or build it yourself:

# in the repo
python3 device/build_amxd.py      # writes device/InfiniteDrummer.amxd
  1. Drag InfiniteDrummer.amxd onto the MIDI track that feeds the TR-8S, before the External Instrument, or as the last MIDI effect if you use the track's MIDI To routing.

  2. Keep the .amxd next to infinite-drummer.js. An unfrozen device finds its engine by looking beside itself. If you want a single file to hand around, open the device in Max and freeze it.

  3. Check that the TR-8S is responding to MIDI velocity under System → MIDI settings. If every hit is full volume, the velocity work is invisible.

  4. If you use negative Late values, set Lookahead to cover them and put −Lookahead ms in the track's Track Delay so the kit stays on the grid.