Skip to content

AnttiHero/Separator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Separator — SP-1 Stem Foundry

A drag-and-drop macOS app that turns any song into a file your Teenage Engineering SP-1 stem player can load. Drop an MP3, wait, drag the finished WAV into the SP-1 stem loader. That's it.

It does the tedious parts for you:

song.mp3
  │
  ▼  demucs        split into 4 stems  →  vocals · drums · bass · other
  ▼  ffmpeg        merge to one 8-channel, 24-bit, 48 kHz WAV
  ▼  librosa       detect BPM, write it into the filename
  ▼
~/Music/SP-1 Stem Foundry/Ready/song 128BPM.wav

The SP-1 wants a single 24-bit / 48 kHz / 8-channel WAV (4 stereo stems), not separate files — and it auto-reads the tempo if the filename contains something like 128BPM. Separator produces exactly that.

Channel map

The 8 output channels are laid out the way the SP-1 expects:

Channels Stem
1 / 2 vocals (1)
3 / 4 drums (2)
5 / 6 bass (3)
7 / 8 other (4)

Change STEM_ORDER in app/Resources/engine.py to remap.

Install

Prerequisites:

  • macOS 10.15+ (Apple Silicon recommended — Demucs runs on the MPS GPU)
  • Python 3.10+ — install via Homebrew: brew install python@3.12
  • FFmpeg: brew install ffmpeg — required, because torchcodec (which Demucs uses to write stems) links against the FFmpeg libraries at runtime
git clone https://github.com/AnttiHero/Separator.git
cd Separator
./build.sh
open "SP-1 Stem Foundry.app"

First launch builds a private Python environment and downloads the audio engine (Demucs + PyTorch, ~2 GB). That takes a few minutes, once. Every launch after that is instant. The environment lives in ~/Library/Application Support/SP-1 Stem Foundry/ and the setup log is there too if anything goes wrong.

Use

  1. Pick an engine: htdemucs (fast) or htdemucs ft (fine-tuned, slower).
  2. Drop an audio file on the window (or click to browse). MP3, WAV, FLAC, M4A.
  3. The status LED pulses orange while it works, turns green when done.
  4. Click reveal in finder and drag the WAV into the SP-1 stem loader.

The first song is slower than the rest — Demucs downloads its model weights on the very first separation.

Project layout

app/
  Info.plist            app bundle metadata
  launcher.sh           bootstraps the venv on first run, then starts the app
  Resources/
    app.py              pywebview shell + JS bridge
    engine.py           the pipeline: demucs → ffmpeg merge → bpm
    ui/index.html       the interface
    requirements.txt
assets/
  icon.svg              source artwork
  AppIcon.icns          built icon
  build-icon.sh         regenerate the .icns from the .svg
build.sh                assembles "SP-1 Stem Foundry.app"

Status

Beta. Verified end-to-end on Apple Silicon (macOS, Python 3.12, MPS): a song runs through Demucs → merge → BPM and produces a correct 8-channel / 48 kHz / 24-bit WAV with the stems in the right channels. Issues and PRs welcome.

Credits

  • Built on Demucs for source separation, with a nod to Demucs-GUI.
  • Made for the SP-1 stem loader by Tim Knapen and solderless.
  • Teenage Engineering and SP-1 are trademarks of their respective owners. This is an unofficial, independent tool.

License

MIT — see LICENSE.

About

Drag-and-drop macOS app that turns any song into an SP-1-ready 8-channel 24-bit/48kHz stem WAV (demucs → ffmpeg → BPM)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors