RC-505-style 5-track live looper for the Ableton Move, built on schwung.
Five independent stereo loop tracks, each cycling record → play → overdub with its own stop/clear, level, pan, reverse and one-shot — the Boss RC-505 workflow on the Move's pad grid. Loop lengths snap to whole measures; the first loop (or Move's MIDI clock) defines the grid and every later track starts and ends in sync. Single-level undo/redo of the last recording or overdub. Move keeps playing underneath, so its own tracks are your rhythm section.
Named after Marc Rebillet, whose instrument of choice is the RC-505.
📖 Operation manual: https://timncox.github.io/schwung-mark/
Open schwung-manager at move.local:7700, open the Module Store, search
for Mark, and choose Install or Update. For a manual install, choose
Install Custom Module and give it this repository URL
(https://github.com/timncox/schwung-mark), or upload mark-module.tar.gz
from the latest release.
Launch from the overtake menu (Shift+Vol+Jog-Click). Back suspends the UI (audio keeps running); Shift+Vol+Jog-Click exits.
Rows counted from the top, as you look at the device:
| Col 1-5 (tracks) | Col 6 | Col 7 | Col 8 | |
|---|---|---|---|---|
| Row 1 (top) | REC / PLAY / DUB | All start/stop | Undo/redo | Monitor |
| Row 2 | Stop (hold = clear) | Quantize | Rec→Play / Rec→Dub | Overdub / Replace |
| Row 3 | Reverse | Play mode (multi/single) | Sessions | — |
| Row 4 (bottom) | FX on/off (hold = FX controls; Shift = one-shot) | — | — | — |
Track button colors: dim = empty, red = recording, green = playing, yellow = overdubbing, white = stopped, blinking = waiting for the next measure.
Knobs 1–5 = track levels, knob 6 / jog wheel = master, knob 7 = FX type (built-ins followed by installed Schwung Audio FX), and knob 8 = FX amount or the hosted module's first parameter. Hold a track's bottom FX pad to open its module controls; knobs 1–8 then follow that module's root knob map. Hold Shift: knobs 1–5 = pans, 6 = monitor, 7 = transport follow, 8 = BPM override. Steps 1–16 chase the base loop's playhead — or show the 16 session slots while session mode is on (tap = load, hold = save; sessions store loop audio + settings on the Move and survive reinstalls).
Track FX: one insert per track — low-pass, high-pass, crush, tempo-synced delay, phaser, ring mod, or any installed chainable Schwung Audio FX v2 module. Loading happens off the audio thread and swaps at a block boundary; sessions restore the selected module and its settings. Single mode makes the five tracks exclusive song sections. The web mixer (move.local → Remote UI → Tool tab, manager > v0.11.4) has faders, pans, FX, modes, and the session grid.
Hosted FX follow Schwung's generic interaction metadata: directional trigger
knobs fire once clockwise, turn left to return to idle/re-arm, and automatically
re-arm after a short pause. Parameters marked knob_acceleration: "wide" keep
single-step precision during slow turns while fast turns cross large ranges
quickly. Both numeric and name-based enum modules are supported.
Set Move's MIDI Clock to Out (Settings → MIDI Sync) to lock loops to Move's transport. Without clock, Mark free-runs at the project tempo and the first recorded loop anchors the grid.
A controller on the Move's USB-A port (Launch Control XL, Faderfox, etc.) drives the whole performance surface, laid out one column per track. Any MIDI channel works. Continuous CCs scale 0–127 across the range; buttons act at value ≥ 64 — set controller buttons for rec/stop/clear/undo to momentary and for reverse/one-shot/FX-on to toggle.
| CC | function | CC | function | |
|---|---|---|---|---|
| 20–24 | track 1–5 level (unity ≈ center) | 65 | undo/redo | |
| 25 | master level | 70–74 | track 1–5 clear | |
| 30–34 | track 1–5 pan | 80–84 | track 1–5 reverse | |
| 40–44 | track 1–5 FX amount | 85–89 | track 1–5 one-shot | |
| 50–54 | track 1–5 rec/play/dub | 90–94 | track 1–5 FX on/off | |
| 55 | All Start/Stop | 102–106 | quantize / dub mode / play mode / follow / monitor | |
| 60–64 | track 1–5 stop |
Suggested Launch Control XL layout: faders 1–5 → track levels, fader 8 → master, top knob row → pan, middle row → FX amount, button row 1 → rec/play/dub, button row 2 → stop.
- Records whatever input Move has selected (mic, line-in, USB-C).
- The feedback guard mutes input monitoring when the speaker is live with no line-in cable; the Monitor pad overrides.
- Reversed tracks can't overdub (RC-505 rule).
- Presets save mixer settings; sessions save the audio too.
- Per-track capacity 60 s (falls back gracefully on low memory).
make test # native build + simulation tests (no hardware)
make arm # Docker cross-compile for the Move + tarball
scripts/deploy.sh # scp straight onto move.local + rescan
Mark publishes one catalog module, so it intentionally keeps Schwung's
single-module release.json format. The nested multi-module format is reserved
for repositories that publish more than one catalog ID.
MIT. Engine patterns borrowed from schwung-smack.