An ear-first practice looper for Linux: load a song, loop a section, slow it down without changing pitch, and drill it with a tempo trainer.
Releases · Install · Dependencies · Build & develop
Note
Honest state of the project. This has only ever been tried on two computers, each running Arch Linux. Not having tested on other setups, I don't know what assumptions are being made that might cause a break. Please report an issue for anything you'd like to see fixed.
These work with the installed app — no ML setup.
- Sample-accurate looping — crossfaded loop seam, set by dragging on the waveform.
- Pitch-preserving speed — 0.25–2.0× via Rubber Band R3; independent pitch shift, ±12 semitones plus cents.
- Drill — tempo trainer that raises speed across passes, with region shaping and a recall mode that mutes playback so you play from memory.
- Bass focus — octave-up plus low-pass to isolate basslines.
- Tuner — chromatic tuner in the stage; note and cents with a hold-to-lock confirm. Works with no song loaded.
- Sections and notes — add sections by hand; per-section free text with inline tablature, keyed to the section occurrence (
verse 2). - Auto-named loops — loops take the name of the sections they span (
verse 2 → chorus 1). - Export — render the current mix (stem balance, speed, pitch, bass focus) to WAV, or MP3 with
ffmpeg. - Song bundles — each song is a self-contained directory (audio +
dredge.jsonholding sections, loops, notes, analysis). Diffable, portable; copy the folder to another machine and it loads with everything. - Control socket — JSON commands over a Unix socket drive everything the UI can.
These require the optional Python tools in Dependencies.
- Detected song structure — beats, downbeats, BPM, and labelled sections detected and drawn on the waveform.
- Downbeat snapping — loop and selection edges snap to detected downbeats.
- Stems — 4-stem separation (vocals / drums / bass / other) with per-stem faders. Runs locally.
Linux only. The audio engine is PipeWire-native: PipeWire 1.0+ is required, with no ALSA or PulseAudio fallback.
Run it any time to see which optional tools are installed and the exact command to add each missing one. The desktop app shows the same under Settings → capabilities.
Arch / Arch-based
yay -S dredge # builds from source against your system librariesDebian / Ubuntu (24.04+ / Debian 13+)
Download the latest dredge_*_amd64.deb from the
releases page, then:
sudo apt install ./dredge_*_amd64.debapt pulls the runtime libraries automatically. The basic features above run with nothing else installed.
Beat/section analysis and stem separation are off by default and self-bootstrap on first use; dredge-enable-ml does that bootstrap up front so the first run isn't a multi-minute download. Each piece is an isolated uv virtualenv (or tool) and requires uv on PATH.
dredge-enable-ml all # analyze + songformer + stems
dredge-enable-ml analyze # beat/section analysis only
dredge-enable-ml songformer # higher-quality section labels
dredge-enable-ml stems # stem separation onlyA GPU is optional throughout — CPU works, slower. The virtualenvs and model weights take several GB of disk. See Dependencies for what each piece installs.
| Component | Required for | Install |
|---|---|---|
| PipeWire 1.0+ | the app to run at all | system package (pipewire) |
| rubberband | pitch-preserving slow-down (the core stretch engine — the app won't start without it) | sudo pacman -S rubberband · sudo apt install librubberband2 · sudo dnf install rubberband |
| Runtime libraries (webkit2gtk-4.1, gtk3, …) | the app to run | rubberband + these are pulled in automatically by the .deb (apt) and the dredge AUR package — nothing to do |
| ffmpeg | MP3 export, mkv/webm containers, stem export | sudo apt install ffmpeg · sudo pacman -S ffmpeg |
The
.deband thedredgeAUR package install rubberband for you; the line above is only for a hand-rolled setup (e.g. running the prebuiltdredge-*-x86_64-linux.tar.gzdirectly). The prebuilt binaries target Debian/Ubuntu library versions — on Arch, use thedredgepackage, which builds against your system's rubberband.
All ML pieces require uv on PATH: sudo pacman -S uv, or on Ubuntu curl -LsSf https://astral.sh/uv/install.sh | sh.
Beat / section analysis (dredge-enable-ml analyze)
- venv:
~/.local/share/dredge/analyze-venv, Python 3.12 (override path with$DREDGE_ANALYZE_VENV) - packages:
beat_this(from git),torch,soundfile,librosa,einops,rotary-embedding-torch - provides: beat / downbeat / BPM grid (beat_this) and novelty-based section boundaries
- disk: torch download, several GB
Higher-quality sections (dredge-enable-ml songformer)
- venv:
~/.local/share/dredge/songformer-venv, Python 3.11 (override with$DREDGE_SONGFORMER_VENV) - packages:
torch==2.4.0,torchaudio==2.4.0,numpy<2,transformers==4.51.1,librosa,soundfile,ema-pytorch,loguru,omegaconf,tqdm,safetensors,muq,x-transformers,msaf,einops,huggingface_hub - also downloads the
ASLP-lab/SongFormermodel snapshot from Hugging Face on first run (weights plus its own modeling code) - runs alongside the beat grid, so it also needs the analyze venv above
- VRAM at run time: ~8 GB resident, brief peak up to ~15 GB. Falls back to the novelty detector if the venv is absent or the run runs out of memory.
Stem separation (dredge-enable-ml stems)
- installed as a
uvtool:uv tool install demucs --with torchcodec - provides: 4-stem separation (vocals / drums / bass / other)
- needs
ffmpeg(above) for stem export - disk: PyTorch, ~2.5 GB
Built with Rust, Tauri 2, and Svelte 5. Building from source or hacking on it? See DEVELOPMENT.md. MIT licensed.
