Loopex
A looping instrument for ambient and experimental music. Sixteen free-running tape loops, four playheads each, a deep set of performance effects, and every gesture click-free.
Built for the Schwung framework on Ableton Move. Free & open source: source on GitHub.
A looper you play like an instrument
Loopex turns Move's pads into sixteen independent tape loops that never have to agree on a length or a downbeat. You layer sound freely, then treat every loop as raw material: re-pitched, re-ordered, filtered, granulated, frozen, with the whole surface live under your hands.
Free-running
Each loop is its own tape. Record one at 3 seconds and another at 40, in different keys, at different speeds. Nothing is quantized to a grid unless you ask.
Everything performs
Speed, pitch, filter, grain, reverb sends, playheads: all live per loop. Sixteen momentary punch-in effects sit on the right pads, pressure-sensitive and stackable.
Click-free
Every jump, mute, overdub and knob move is crossfaded or smoothed. You can be violent with it and it stays musical.
Your first loop in a minute
- Open Loopex from the Overtake / Tools list in Schwung. The left 4×4 pads are your loops; the right 4×4 are punch-in effects.
- Record. Tap an empty left pad to start recording, tap again to close the loop and play. It loops instantly.
- Layer. Tap other empty pads and record more loops on top. They run independently: no need to match lengths.
- Shape it. Press a step button to select a loop and see its waveform. Turn the eight knobs to sweep Filter, Pitch, Scatter, Seed and more across its five pages (Up/Down change page).
- Punch an effect. Hold a right pad: Haze, Freeze, Chop: over the whole mix. Press harder for more. Shift+pad latches it hands-free.
- Send to a reverb. On loop page 1, turn Send A up; open Send FX (track button 3) and choose Veil or Space. Then Save it all to a session with the record button.
Full-exit is Shift+Back. A plain Back only suspends, keeping your loops in memory.
Where everything lives
Loop pads (left)
Tap to record / play / pause — un-pausing restarts the loop from its Start point, re-phasing all four playheads. Undo + pad overdubs. Hold to clear. Colour shows state, tinted by playback speed.
Punch pads (right)
Hold to apply a momentary effect on the master. Coloured by family. Up to five stack in series; pressure adds intensity.
Steps + arrows
A step selects a loop and shows its waveform. Up/Down move between its five pages. ◀ ▶ are the tape brake / wind.
Jog wheel
Scrubs the selected loop like tape: audibly, even when paused. On the Playheads page it moves the touched head.
What you see
Three views. A touched knob takes over the header with the parameter's full name and value; the views fall back to the overview after ten seconds.
What goes onto the tape
Everything you record passes through the input stage first, so set it before you play. The Input FX menu (track button 1) holds the monitor level, the tape style, input gain and a three-band EQ. The Input Tape page (Capture button) is the machine itself: 13 styles including a true Tapeless bypass, drive, wow, flutter, HF rolloff, low cut, hiss and Generations, the sound of repeated dubbing. The thirteen models are Tapeless · Clean · Cass1 · Cass2 · VHS1 · VHS2 · Reel15 · Reel7 · Reel3 · 4trk · Porta · Dub · Warp. Each one’s high-frequency loss is derived from its head gap and tape speed, with a speed-scaled head bump, so the three reel speeds genuinely differ; VHS1 is the Hi-Fi track (a depth-modulated FM carrier with its companding noise reduction, bright but pumping) and VHS2 the linear edge track, slow and dark. Generations re-applies the selected machine’s own loss filter once per pass, so a fourth-generation dub of a Reel3 is darker than one of a Reel15. Tapeless bypasses the machine — no hiss floor, no head loss or bump — but every knob on the page still works, and Drive soft-clips on Tapeless and Clean too. Whatever you dial here is printed onto the loop: set the page, then record. By default the source is the line/mic input, but InSrc on Settings page 1 can switch it to the Master mix (the whole Move output, minus Loopex's own signal so it never feeds back) or to any single Schwung or Move track in isolation — see the record-source section below.
Sixteen tapes, four heads each
Each loop records up to 45 seconds of stereo audio and plays back on its own clock. Three overdub modes shape how layers build: Replace, Multiply (the default; endless decayed layering), and Disintegration (the loop's own effects re-bake each pass, so it slowly falls apart).
Every loop is read by up to four playheads at once, each with a mode: Off · Fwd · Bwd · Ping · Jump: and its own speed from 0.25× to 4×. Jump leaps to a random position at random intervals, crossfaded. One recording becomes a canon, a drone, or a shifting cloud. Heads sum with equal-power normalisation so stacking never clips, and any head that jumps crossfades.
The five loop pages
Select a loop with a step, then Up/Down to move between pages. Speed re-pitches like tape (pitch + tempo together); Pitch shifts independently, leaving tempo alone. Pitch is a Signalsmith Stretch phase vocoder running on its own thread, off the audio engine, its latency cancelled by nudging the playheads so the loop stays in time. Playback reads are 4-point Hermite with rate-aware anti-imaging; the sampler Characters swap that for linear or drop-sample reads.
| Page | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| P1 · Loop | Speed | Filter | Pan | Volume | Start | End | Reverse | Send A |
| P2 · Texture | Pitch | Reso | Sat | Comp | Wow/Flut | Scatter | Seed | Send B |
| P3 · Tone | Bass | MidF | MidGain | Treble | Tilt | Attack | Decay | Heads ▸ |
| P4 · Heads | H1 mode | H1 spd | H2 mode | H2 spd | H3 mode | H3 spd | H4 mode | H4 spd |
| P5 · HeadMix | H1 Vol | H1 Pan | H2 Vol | H2 Pan | H3 Vol | H3 Pan | H4 Vol | H4 Pan |
HeadMix gives each of the four playheads its own volume and pan (a balance — centre is unity). H1's Vol/Pan are the loop's main level and position (the same controls as page 1); heads 2–4 are independent, defaulting to unity/centre so a loop is unchanged until you touch them.
Seed
A seeded re-order of the loop's slices (2/4/8/16, some reversed). The knob is the seed: every position is a different, repeatable mangle. Click-free.
Scatter
Stochastic slice jumps with crossfades: from gentle stutter to full shuffle.
Filter + Reso
A DJ-style filter: low-pass left of centre, high-pass right, with resonance. Smoothed, so sweeps never step.
Studer EQ
The 961/962 channel EQ, a Fächerentzerrer (fan equaliser): every setting crosses 0 dB at a ~1 kHz pivot and slopes continuously outward, with no shelf plateau in the band. Bass reaches ±15 dB at 20 Hz, Treble ±15 dB at 20 kHz. Corners and slopes are fitted to the curves printed in Studer’s service manual.
Presence
The console’s Präsenz/Absenz band: a ±11 dB peak at Q = 1, sweepable 150 Hz–7 kHz, to the published spec. Tilt sits alongside it and tips the whole spectrum about 800 Hz.
Two buses, the Palette engine
Each loop has two sends (A on loop page 1, B on page 2) into a pair of shared effect buses: the Palette engine, 29 effects, chosen in the Send FX menu (track button 3). Every effect has the same three knobs, Amount, Macro and Drift, so a bus can be re-voiced live without relearning it.
| Family | Effects |
|---|---|
| Character | Drive · Sweeten · Fuzz · Howl · Fold · Swell |
| Movement | Doubler · Vibrato · Phaser · Tremolo · Pitch · Shift |
| Diffusion | Cascade · Reels · Collage · Reverse · Space · Bloom |
| Texture | Filter · Squash · Cassette · Broken · Interference · Halo |
| Reverbs | Plate · Quartz · Prism · Veil |
The buses are 100% wet: the loop's own level stays dry, the send sets how much reaches the effect. The returns join the master before the punch effects, so a punch can grab a reverb tail too. Every effect is loudness-matched to the dry it replaces, and switching effects morphs — the outgoing one fades as the incoming one fades in — so sweeping through the list never clicks.
The right pads: sixteen momentary effects
Hold a pad to apply an effect to the whole mix, reading a rolling 2-second capture of the master. Up to five stack in series, each with four parameters on knobs 5–8, and pad pressure drives a per-effect expression shown in the footer. Oct+, Oct−, Shimmer and Chop spread to stereo through the same microshifter as Stretch and Freeze. The grain effects draw on a 16-grain pool with voice stealing and window-power normalisation.
Loops
Loop12 · Loop16 · LoopSh · Chop. Beat-locked stutters. Chop repeats the last transient on one of 32 rhythmic patterns drawn from Signal. Pressure subdivides.
Grains
Haze · Mosaic · Smear · Strum. Granular clouds: from a shimmering haze to a grid re-sequencer to an arpeggiated cascade. Pressure adds density.
Pitch
Oct− · Oct+ · Glide · Shimmer. Delay-line pitch shifts and a band-limited feedback shimmer that climbs an octave per pass. Pressure pushes regen/glide.
Time
Stretch · Freeze · Reverse · PalFX. Overlap-add stretch and freeze (with a subtle doubler for width), reversed slices, and one whole Palette effect as a punch.
A per-effect LFO on every pad
While a pad is held, knobs 1–4 are its own LFO: Dest (which of the four fx params to modulate), Shape, Rate (0.05–20 Hz) and Depth. Eight shapes: sine, triangle, saw, ramp, square, pulse, sample-and-hold, and smoothed random: for anything from a slow drift to chaotic wobble. Knobs 5–8 stay the effect's parameters.
The ✕ button: sequencing punch effects
One shared 16-step pattern of punch effects, in the spirit of the Polyend MESS. Each step can hold up to five right pads with their knobs and pressure locked at the moment you write it, so a step keeps sounding the way it did even if you edit the pad later. Every gesture starts from the ✕ (Delete) button.
| Gesture | Action |
|---|---|
| Tap ✕ | run or stop the sequencer (the LED is bright while it runs) |
| Hold ✕ | pattern view on the 16 steps: orange = a step with effects, dim orange = an extension, white = the playhead. The FX Seq page opens; turn a knob and it stays open after release |
| ✕ + right pad(s) + step | write the held pads into that step (up to five). Pads pressed while ✕ is held are silent selections |
| ✕ + step, no pads | clear the step |
| ✕ + hold a step + tap a later step | extension: the steps in between hold the first step's effects |
| ✕ + hold a step + knob 4 | that step's play chance |
| ✕ + hold a step + knobs 5 to 8 | the locks of the step's first effect (same names and enum squares as the pad itself) |
| Play | restart the pattern from step 1 |
The FX Seq page
| Knob | Parameter | Values |
|---|---|---|
| 1 | Run | Off / On (also ✕ tap) |
| 2 | Speed | 1/32 · 1/16 · 1/8T · 1/8 · 1/4 · 1/2 · 1 beat |
| 3 | Length | 1 to 16 steps |
| 4 | Chance | Always · 10 to 90% · Like Last · Play 1 Skip 1 · Play 2 Skip 1 · Skip 1 Play 1. With a step held it edits that step; otherwise it is the default for new steps |
| 5 | Gate | 10% of the step up to Hold |
| 6 | Swing | 50 to 75% |
| 7 | Direction | Fwd · Bwd · Ping · Rand |
| 8 | Clear | wipe the pattern (asks first) |
The clock runs from the Move tempo. A step retriggers its effects the way a finger would, through a short fade; a pad you are holding by hand is never cut by the sequencer. Gate below Hold releases the effects part-way through the step unless the next step is an extension. Like Last follows the previous evaluated step; Play X Skip Y counts cycles per step. The pattern and all its locks save with the session.
The master is a performance surface too
The Perform menu (track button 2) has two pages. Page 1 is the Stumble stochastic glitcher plus Jump and Scan (an exact octave up while held). Page 2 is a master processing block:
Master filter
A low-pass with twelve analog characters ported from Fizzik: Clean, SEM, MS-20, Steiner, four ladders, Prophet, Oberheim, Diode/303, K35, Vintage. Cutoff and resonance are smoothed, so sweeps never step. Self-oscillates on the ladder voicings.
Master Clock
A Chase Bliss Mood-style pitch/rate warp with sample-rate crush. Music mode snaps to wide intervals (octaves, fifths, thirds); Free slides continuously. Place it pre- or post-punch.
Ducking pump
K7–K8: a tempo-synced sidechain pump. It ducks on every beat division and breathes back up: from a gentle swell to a hard rhythmic gate.
Tape transport
The ◀ ▶ arrows brake the whole master to a stop or wind it up to a tone, then ease back to speed on release. Fully organic.
Output (Settings page 2)
The master stage, in signal order after the punch bank and Drift: Out · LoCut · HiCut · PWide · Char · gSat · Glue · Limit. Char is thirteen hardware voicings ordered by grit, and it sets far more than an EQ curve: each one chooses the converter (bit depth, sample-rate hold, µ-law companding on the MPC), the saturator’s curve and asymmetry (first-order anti-aliased, so the grit is the machine’s rather than aliasing), the pole count of LoCut/HiCut, how the loops are read (Hermite → linear → drop-sample), and gives Glue and Limit the attack, release, knee and distortion of the dynamics unit that machine shipped beside — the 2254 behind a Neve, the 2500 with its THRUST sidechain behind an API, the SSL bus compressor.
| Char | Machine | What it sets |
|---|---|---|
| Off | — | transparent bypass |
| 962 | Studer 961/962 desk | near-flat, a whisper of transformer; 2-pole filters; no glue colour |
| Air | Focusrite ISA 110 | the air band: +3 dB at 15 kHz, 3-pole filters, clean and open |
| SSL | SSL 4000 bus | tight lows, present mids; 3-pole filters; the bus compressor’s fast glue |
| Neve | Neve 1073 + 2254 | warm lows, silky top; 2254 glue with its diode-bridge distortion |
| Trident | Trident A-Range | broad mid lift, 2-pole; the slow, soft A-Range dynamics |
| Studer | Studer A800 tape | 60 Hz head bump, airy top; slow tape glue (30 ms / 600 ms) |
| API | API 550A + 2500 | forward 800 Hz, fast; 2500 glue with THRUST sidechain tilt |
| Ampex | Ampex ATR-102 | fat lows, the heaviest saturation; slowest glue, limiter at −1.7 dB |
| MPC | Akai MPC60 | 40 kHz hold, 12-bit µ-law companding, 18 kHz 2-pole reconstruction |
| S950 | Akai S950 | 12-bit linear, 25 kHz, 6-pole 10 kHz reconstruction filter; linear-interpolation reads |
| SP12 | E-mu SP-1200 | 26.04 kHz, 12-bit, no reconstruction filter; drop-sample reads (repeats samples when slowed) |
| Emu | E-mu SP-12 | the same 26.04 kHz clock, darker fixed output (−4.5 dB at 5.5 kHz); drop-sample reads |
Every figure, its source, and whether it is documented, measured or chosen is in CHARACTER-RESEARCH.md.
Loop Filter and record source (Settings page 1)
Loop Filter gives every loop the same twelve analog voicings as the Master Filter (Clean, SEM, MS-20, Steiner, four ladders, Prophet, Oberheim, Diode, K35, Vintage): the loop Filter knob sweeps and its low-pass takes on the chosen model, resonance from Reso. Input source (InSrc) chooses what each new recording samples: Line (the line/mic input, default), Master (the whole Move mix, minus Loopex’s own output so it never feeds back), S1–S4 (Schwung’s four mixer slots) M1–M4 (the four OG Move hardware tracks) or Self. Self is Loopex’s own master output, one block old — every loop, the punch chain, both sends and the master stage — so you can resample the whole mix back into a new loop. Unlike Master it has no feedback guard, because the regeneration is the point; the tape limiter at the end of the master chain keeps it saturating rather than running away, and Input Gain is the control. The per-track sources arrive over Ableton Link Audio — the host publishes its slots on /schwung-pub-audio and reconstructs the Move tracks on /schwung-link-in, each as an isolated stereo stem — so a loop can sample any single Schwung or Move track on its own, not just the summed mix (needs host 1.4 with link_audio_publish, on by default). If a stem is not available, Loopex records Line instead and says so on screen while Settings is open.
Settings page 1 also holds arm threshold, overdub mode, root note, input channels (Stereo · Left · Right · Sum — a mono synth on one jack records to both sides with Left), and MIDI In / MIDI Out; page 2 adds the punch-FX stereo width (mono → wide, per effect).
Play it from a LaunchControl XL
A Novation LaunchControl XL drives all sixteen loops from hardware. MIDI In (Settings page 1) enables external control; MIDI Out (Settings page 1) mirrors each loop’s transport back to the LCXL’s LEDs, sent on MIDI channel 2 so its buttons never collide with the Move’s own channel-1 pads.
Buttons
Track Focus (row 1) records, plays and pauses each loop; Track Control (row 2) mutes and unmutes it. The LEDs follow: red recording, green playing, amber paused, red on the control button when muted.
Knobs & faders
Per column the top knob is Loop Speed, then Filter and Pan, and the fader is Volume — for that loop.
Two SysEx templates ship at the repo root — BlackBox 1-8.syx (loops 1–8) and BlackBox 9-16.syx (loops 9–16). Load them onto the LCXL and set both to MIDI channel 2; Loopex accepts either range at once.
A memory that never quite repeats
On the Sample button: a global drifting-delay memory station in the spirit of Soma COSMOS. Four delay lines of coprime length, each read at a slowly drifting tap, feed back through a matrix that morphs from self-feedback to a normalised Hadamard cross-mix. The loop mix feeds it, the memory recirculates, and because the lengths are coprime and every line has its own asynchronous LFO, the recombination never lands on an exact repeat. It sits in the master chain just before the pump, so its ambient layer takes the character EQ, glue and limiter. Feedback is capped below unity, so the tail always fades: up to a few minutes at the top of the range. Leave everything paused and a silence bleed clears an abandoned tail after about eight seconds with no input. Drift and Mix start at zero, so it stays silent until you dial it in, and it saves with the session.
Drift · Rate · Size
Drift is how much of the loop mix is written into the memory. Rate is how fast the read taps drift. Size sets the tap length, from a close shimmer to a long hall.
FBk · Supr
FBk is the memory sustain: it is capped below unity so the tail always fades, up to a few minutes at maximum. Supr lets loud new input erase the old content, so you replace a layer by playing over it.
Blur · Damp
Blur opens the feedback from each line feeding itself to a full cross-mix between all four, smearing the taps together. Damp rolls the high end off the tail.
Mix
The wet level of the whole Drift layer blended back into the master. A parallel ambient wash under the loops, not a replacement for them.
Save the whole rig
Sixty-four slots on the ≡ (Menu) button. A session stores every setting, the punch-pad values, the FX-sequencer pattern and all recorded audio. Del (K4) erases a slot. Saving over a used slot, or deleting one, asks first; each is date-and-time named, and the header shows which session is loaded. All disk work happens on a background thread, never on the audio callback, so saving never glitches playback; a second background thread runs the per-loop pitch shifters. Sessions live under /data/UserData/schwung/loopex-sessions/ and survive reinstalls.
Every gesture
| Gesture | Action |
|---|---|
| Left 16 pads: the loops | |
| Tap | record → play ⇄ pause |
| Undo + pad | overdub (tap again to stop) |
| Hold (~1 s) | clear the loop (Undo restores) |
| Shift + left pad | cycle playback speed ½× · 1× · 2× |
| Mute + left pad | quick mute (stays in phase) |
| Copy + left pad, then a second left pad | clone the first loop into the second |
| Loop + left pad | loop length 1× · ½× · ¼× · ⅛× |
| Shift + Record, then a left pad | threshold-arm record (Shift + Record + jog sets the threshold) |
| Right 16 pads: the punch effects | |
| Hold | apply the effect on the master; press harder for its expression |
| Shift + right pad | latch hands-free (Shift + right pad again unlatches) |
| Shift while holding a right pad | latch it exactly as it is, pressure frozen |
| Undo + right pad | reset that effect and its LFO to defaults (LED flashes) |
| ✕ + right pad(s) + step | write into the FX sequencer (see the section above) |
| Everything else | |
| Step | select loop → waveform · same step = next page |
| Up / Down | loop page, or menu page |
| Jog | scrub loop · P4: move touched head |
| Tracks 1–4 | Input · Perform · Send FX · Settings |
| Capture | Input Tape menu |
| Record (●, next to Capture) | Drift menu |
| Menu (≡) | Sessions menu |
| ✕ (Delete) | tap: run / stop the FX sequencer · hold: pattern view + FX Seq page |
| ◀ / ▶ | tape brake / wind (held) |
| Undo | revert last overdub, else last clear |
| Back / Shift+Back | close menu, then suspend / full exit |
Standing on open work
Loopex is free and open source under GPL-3.0. It builds on Schwung, Mutable Instruments Clouds & Warps, Signalsmith Stretch, Airwindows, Jon Dattorro's plate, Charles Vestal's Performance FX (the punch-in pattern), and the sibling instruments Punchfx (the punch bank), Fizzik (the 12 filter voicings), Res, Essaim, Phasma, Palette, Magnéto and Signal. The thirteen Character voicings are built from manufacturer documentation and measurements, recorded in CHARACTER-RESEARCH.md. Full list in the repository.