loom. github ↗ download
new · 1.3 a seed now sounds like itself — persistent, developing themes → generative midi instrument · macos

loom_

One seed becomes a complete, evolving arrangement — drone, drums, bass, chords, pulse and melody — that develops over minutes and never quite repeats.

Not a step sequencer. Not a DAW. It generates control, and streams a MIDI port per voice into your own instruments.

Apple Silicon · macOS 14+ · seven virtual CoreMIDI sources · GPL-3.0

seed a1c0ffee key A minor bar 1
listen
Two minutes, one seed.

loom driving six tracks in Ableton, recorded live in a single pass with no edits. This is the raw generative output — your own instruments would give it a different voice.

live resample · 2:16 · Ableton
the idea
Simple rules,
deep in the hands.

Complexity lives in three places only: the interaction between simple voices, the controls you hold, and the passage of time. No single mechanism is complicated — the music is.

/ 01

Deterministic

Every note is a pure function of seed and time. Save a seed and you save a whole evolving performance — return to it and it keeps developing the same way.

/ 02

Constrained

A shared harmony engine — key, scale, an advancing progression, voice-leading — keeps every voice in key and vertically coherent, however abstract the surface gets.

/ 03

Alive

A conductor shapes tension over minutes; a watchdog listens for wallpaper and forces a real event when the music has been comfortable for too long.

the surface
A control surface,
not a wall of knobs.

Four stable tiers: transport and three performance macros, the orbit — with a live harmony wheel beneath it — and the moving form strip, six voice strips, and one fixed inspector. Continuous parameters are truthful sliders; musical decisions are switches. The harmony wheel is a circle of fifths that shades the sounding key's scale, lights the current chord's tones and ghost-marks home once the piece has modulated away. The piano roll scrolls and zooms, and shows the upcoming bars ahead of the playhead — turn a knob and watch the future rewrite itself in real time. Press f to fill the screen with the orbit.

The loom instrument: an orbit mandala with a circle-of-fifths harmony wheel beneath it, a moving 32-bar form strip, a piano roll, six voice strips and the selected-voice inspector.
The full surface. Orbit and its harmony wheel, a 32-bar form strip, a scrollable piano roll with a live lookahead, six voice strips, and the drums inspector open below.
six voices
One MIDI port each.

Every voice streams its own virtual CoreMIDI source, so each takes its own track and its own sound. Select a strip and its inspector opens — continuous controls only where an in-between value has real audible meaning. loom makes the notes; your instruments make the sound.

droneloom drone

The sustained foundation: root, fifth and octave held for minutes, re-attacked once per harmonic span.

drumsloom drums

Four drum characters — Haze, Noir, Snarl and Rupture — each built on real, documented grooves, with a fixed kick-snare core the rest of the mix can trust. The arrangement peels layers in and out (learning when to drop parts) and the kit runs for minutes, morphing rather than stopping. The sliders scale the variation; the full 16-pad Ableton kit, authored fills and phrase-scale fractures widen it at the peaks. Supportive, never the lead.

bassloom bass

Monophonic root-and-movement. States the harmony, then gets out of the way; walks approach tones into each change.

chordsloom chords

A voice-led harmonic bed of swells and tied pad attacks, common tones held through the changes.

pulseloom pulse

Chord-locked rhythmic movement — one held current-chord tone that supplies motion without becoming a second melody.

melodyloom melody

A withholding lead that develops motifs — recalling, transposing and inverting earlier phrases — over a drifting phase loop.

control panes
Every voice, in detail.

Select a strip and its inspector opens below. Each voice exposes only the controls that shape its role — the real panes from the app.

droneregister · swell · fifth · octave
drone inspector: register, swell, fifth and octave toggles
drumspresence · character · swing · ghosts · skins · hats · perc · ratchets · fills · polymeter · dynamics · feel · kit width (16-pad Ableton range)
drums inspector
basspresence · density · pitch law · approach · accent · octave · memory · glide
bass inspector
chordspresence · register · voicing · strum
chords inspector
pulsepresence · density · gate · division · octave · fracture · memory · dynamics · feel
pulse inspector
melodynote rate · space · register · length · motion · repetition · contour · glide · feel
melody inspector
it changes over time
Evolution at three timescales.

The failure mode of generative music is a piece where each loop differs slightly but the whole stands still. loom moves at every scale, and gives you knobs over the rate of change itself.

01 · micro

Per step

which hits fire · timing · velocity

Per-step probability with correlated humanize — micro-timing and dynamics move together from one shared feel, so it reads alive, never broken.

02 · meso

Per phrase

density · register · harmony

A modulation matrix of slow LFOs, bounded random walks and a reaction-diffusion field creeps the generator parameters themselves across bars.

03 · macro

Per piece

arrangement · segues · motifs

A conductor draws a seeded tension arc over minutes. Transitions are textural, not EDM: sections evolve by gradual layering and subtraction, the kit runs for minutes and morphs rather than stopping and starting, and slow filter movement, reverb-washes and section-bridge swells — on mappable CC lanes — carry one part into the next. Long-form shape, not a flat wash.

get it
Run it in two minutes.

Download the app, enable the speaker to hear a sketch immediately, then route the six sources into your DAW — one track per voice, a big dark pad on drone, a drum rack on drums.

Apple Silicon · macOS 14+

Download loom.app
  • space — play · ⏮ — rewind to bar 1
  • die — a new seeded piece · lock — freeze a voice while the rest evolves
  • f — present: fill the window with the orbit

Or build from source:

# requires a full Xcode install (SwiftUI macros)
$ git clone https://github.com/gravelc-code/loom
$ cd loom
$ swift run LoomApp

# headless determinism + musicality gate
$ swift run LoomApp --check

# render a deterministic 128-bar .mid
# from the app's utility menu