MachineDrandom — a browser-based live kit randomizer + sequencer for the Machinedrum
A single-page web app (Web MIDI) that rolls random kits onto the Machinedrum live, and plays patterns on it as a sound module. No install, nothing leaves the browser.
Link: https://machinedrandom.keremergener.com/
The itch
Kit design on the MD is deep, but starting from an INIT kit is the least inspiring part of it. I wanted something that throws machines and parameters at the 16 tracks to spark ideas — while letting me keep anything I like and roll the rest — and I wanted it to talk to the MD live, using the machine’s own messages, so I can audition in place and SAVE KIT only when something sticks. I also wanted to drive the MD as a pure sound module without touching its pattern memory.
So I built MachineDrandom. It does two things: randomizes kits, and sequences patterns onto the MD.
What it does
Kit randomizer. For each of the 16 tracks it assigns a machine and sets the parameters, then sends it over MIDI as an assign-machine SysEx per engine + a CC per parameter. It changes the currently loaded kit in place — no kit dump, no librarian. Nothing is stored automatically: audition, re-roll, and SAVE KIT on the MD to keep a roll.
Pattern sequencer. MachineDrandom is the sequencer; the MD is the sound module. It streams trigs as MIDI notes + MIDI clock, so tempo-synced delay and LFOs lock to the BPM — without starting the MD’s own sequencer, so nothing is written to pattern memory. It’s a live performance you can edit while it plays.
Kit capabilities
- Engine pool you choose from: GND, NFX (X.12 noise), TRX, EFM, E-12, P-I — plus ROM/RAM sample machines (off by default).
- Per-parameter policy across all 24 params:
RNDrandomize ·DEFsend the default ·FIXpin a value. Set it globally, withRND all/DEF allshortcuts, then override per track. - Track matrix — 16 voices labelled with the MD factory names (BD, SD, HT … M4). Turn tracks on/off, lock a machine, lock any single parameter, or inherit the global policy.
- Tame mode keeps levels and sends in musical ranges so rolls stay usable.
- Live preview, message log, and a raw SysEx/CC view if you want to see what’s going out.
Pattern capabilities
- Up to 128 steps, with BPM, resolution (1/8–1/32), swing, velocity, density, accent, ghost notes and humanize.
- Per-track roles (kick / snare / hat / …) auto-inferred from the loaded kit’s machines, driving the generators.
- Algorithms:
- Generative — Euclidean, Random density, Linear (one voice per step, role-weighted).
- Grooves (role-based) — Rock, Funk, Hip-Hop, House, Breakbeat, Jazz, D&B, Afro-Cuban. Each has 8 variants, and with Vary on, every Generate re-voices the hats, adds kick syncopation, ghosts and the odd end-of-phrase fill, so you rarely get the same pattern twice.
- Turkish aksak — 9/8 Karşılama (2+2+2+3) and 7/8 (2+2+3).
- Autechre — 128 patterns and 64 kits decoded straight from a Machinedrum SysEx dump. Browse the patterns, load a kit to preview, send it like any other.
- Edit cells, re-roll, and change tempo / swing / velocity while it’s playing.
How it works
Web MIDI API. Engines are set with assign-machine SysEx (0x5B); parameters with CC. The MD spreads its 16 tracks across 4 MIDI channels from the base channel, and the app follows that. The CC map and assign format are ported from jmamma’s MCL.
Running it
- A Web MIDI browser — Chrome, Edge, or Brave.
- On the MD: enable CC + SysEx receive, and set the base channel to match the app.
- Built around OS X.12 (MKII / UW). Sample machines (ROM/RAM) are off by default; sample-based content needs the matching samples loaded on the MD to sound.
- One self-contained HTML file. No install, no account, no data leaves your browser.
Honest notes
- It changes the loaded kit in place — it doesn’t write a kit slot for you.
SAVE KITto keep a roll. - The pattern player never touches your pattern memory; it’s notes + clock, live.
- Web MIDI only, so no Safari / iOS.
Feedback welcome — engine and parameter ranges, groove templates, and machine-specific tweaks especially. Happy to take requests.