Firmware

schwung-belt

Hype17/100

Live vocal processor for the Ableton Move (schwung module): autotune, diatonic harmonies, doubler, formant

schwung-belt is custom firmware for the Ableton Move, by @timncox. Latest release v0.2.1 (July 2026), 2 stars on GitHub.

forAbleton Move·by@timncox

Unclaimed. Is this yours? Sign in with GitHub as @timncox to claim it.

Downloads
0
Stars
2
Fork
1
Commits
52
Last commit
Download v0.2.1

belt-module.tar.gz· 40 KB· +1 file

Custom license· timncox/schwung-belt·downloads come from the creator’s GitHub releases

41
Commits
5
Releases
41 commits and 5 releases in the last year
Activity · last 12 months

Belt

Live vocal processor for the Ableton Move (a schwung module).

📖 Operation manual: timncox.github.io/schwung-belt

Autotune-style pitch correction, up to four diatonic backing-vocal harmonies, a stereo doubler, and a formant knob — on the Move's own mic, line-in, or USB-C input. Named Belt because it makes you sound like you can.

  • Retune 0 = instant hard-tune robot, higher = transparent correction
  • Harmony voices 1-4 — scale-aware intervals (3rds, 5ths, octaves…), humanized with per-voice detune and stereo spread
  • Doubler — instant thickness, hard-panned corrected doubles
  • Formant — deeper or brighter without changing pitch
  • HARD pad — momentary or latched T-Pain punch
  • Played harmony — hold a chord on the pads, in a clip, or on a keyboard and the four voices sing those exact notes; clip chords keep driving them hands-free while another module owns the surface
  • Target mode — the held note becomes the correction target: play the melody, sing approximately, land exactly
  • Chord only (LEAD 0) — silence the lead and the dry voice so only the played-harmony voices sound: every note you hold is your own voice re-pitched to it, the Imogen Heap "Hide and Seek" sound (a DigiTech Vocalist on its vocoder setting). Set the harmony intervals Off first so only held notes sing. LEAD is on the Setup page, Shift knob 7 in a chain
  • Tuner strip — steps 1-12 show your note (green = in tune); press to set the key
  • Flex / Humanize — leave expressive slides alone, keep your vibrato

Two modules

idtypewhere it runs
beltaudio_fxSignal Chain slots + Master FX (processes whatever is upstream)
belt-insound_generator (audio_in)standalone slot synth on the hardware input — the live-vocals build

Both ship the same chain UI and engine. They are built from this canonical repository and published together under one release tag.

Install

In Schwung Manager, search the Module Store for Belt or Belt In. The store resolves both entries from this repository's multi-module release manifest. Schwung's Custom GitHub installer does not yet offer a module picker, so use the dedicated compatibility repository for the form you want:

  • belt Audio FX: timncox/schwung-belt-fx
  • belt-in Voice: timncox/schwung-belt-voice

Those compatibility repositories mirror the archives built here; they do not carry separate Belt source.

All source and issue tracking remain in this repository.

Feedback warning: singing into the Move's mic while its speaker is on will howl. Belt In auto-mutes in that state (Monitor pad overrides) — use headphones or line out.

MIDI CC control

Every Belt parameter responds to MIDI CC from a controller plugged into the Move's USB-A port (Launch Control, Faderfox, keyboard knobs — anything that sends CC). The 0–127 CC value scales linearly across each parameter's range.

CCparamrangeCCparamrange
20keyC..B28harm 3off..interval
21scale9 scales29harm 4off..interval
22retune0–10030harm level0–100
23amount0–10031spread0–100
24flex0–10032double0–100
25humanize0–10033formant-100–100
26harm 1off..interval34wet0–100
27harm 2off..interval35hard≥64 = on
36midi modeoff/harm/target
37vel sens0–100
38lead0–100 (0 = chord only)

Channel notes:

  • belt in a chain or Master FX slot: any MIDI channel works — the host broadcasts external CCs to audio FX regardless of the slot's receive channel.
  • belt-in (sound generator): CCs follow note routing, so set your controller to the same MIDI channel the slot receives on (don't rely on auto channel mapping — it remaps notes, not CCs).

Move's own encoders are internal MIDI and never collide with this map.

Build from source

make test    # native sim tests, no hardware needed
make arm     # Docker cross-compile + module tarballs (see scripts/build.sh)

How it works

One YIN pitch analysis (decimated to 22.05 kHz) drives a shared train of pitch marks; every voice — corrected lead, four harmonies, two doubler streams — is a TD-PSOLA grain stream reading those same marks, so seven voices cost barely more than one. Formant control resamples grain content independently of the pitch ratio. ~26 ms fixed latency, dry path delay-matched. Details in CLAUDE.md.

MIT licensed.