StemRoller: a Svelte and Electron shell around Demucs and YouTube search
Isolate vocals, drums, bass, and other instrumental stems from any song
At a glance
- What is it?
- StemRoller wraps the Demucs source-separation model and yt-dlp in a desktop app so a song title and one click produce four stems. The interesting engineering is in the packaging and the third-party binaries, not in the model, and the Linux path is explicitly unsupported.
- Who is it for?
- Adopt StemRoller if you want the Demucs model and yt-dlp handled for you on Windows or macOS and you accept a wait of several minutes per track. Do not adopt it if you are on Linux, since the README states Linux is not officially supported and asks you to install ffmpeg, demucs and yt-dlp globally yourself, or if you need separation inside an automated pipeline, where invoking demucs directly is less indirection.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 78 days ago.
- What is it written in?
- Mainly Svelte, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The gap StemRoller fills: search, download and demix without a terminal
Source separation models are not hard to find. Running one is. Demucs is a research repository, and using it means obtaining audio in a format the model accepts, invoking a Python entry point, and knowing where the output lands. StemRoller exists to remove those three steps. The README describes it as the first free app that separates vocal and instrumental stems from any song with a single click, and the workflow it documents is exactly that: type the name or artist into a search bar, click Split on the result, wait several minutes, then click Open to reach the stems. The audience is someone who wants four files (vocals, drums, bass and other) out of a track without installing Python, without configuring a model, and without reading Demucs documentation. It is not aimed at people who already have a separation script, because that script is shorter than the install path here.
What actually runs: Svelte for the interface, Demucs for the separation, yt-dlp for the audio
The repository's primary language is Svelte, and the topics list includes electron, python, demucs and source-separation, which matches the README's description of a desktop bundle. The data flow implied by the documentation is: a search query goes out to YouTube, a result is selected, the audio behind that result is retrieved, Demucs demixes it into stems, and the app exposes the resulting folder through an Open button. The README attributes the separation step to Facebook's Demucs algorithm and calls it state of the art, which is the project's own characterisation, not a benchmark result. Two details in the install section confirm the shape of the dependency graph. On Windows and macOS, a script named download-third-party-apps fetches the external binaries, so Demucs, yt-dlp and ffmpeg are shipped rather than assumed. On Linux, the README instead instructs you to install ffmpeg through your package manager and demucs and yt-dlp globally with pip, which means the packaged-binary path does not exist there. The Svelte layer is therefore a controller and a status display over Python and command-line tools, not a reimplementation of the model.
Getting it running: two paths, and only one of them is supported
The README offers a download first. The StemRoller website or the releases page provides a bundle that, in the README's words, includes everything you need to split stems. That is the intended path for users. The development path is separate and begins with cloning the repository, changing into the directory, and running npm i -D, which installs dev dependencies. On Windows and macOS the next command is npm run download-third-party-apps, which is the step that pulls in the external tools. Linux users are told to install ffmpeg globally with their preferred package manager and to install demucs and yt-dlp globally with pip; the README also notes that a Couldn't find appropriate backend error may be resolved by installing libsox-dev, which points at an audio backend dependency rather than at StemRoller itself. From there, npm run dev starts development mode, and the production path is npm run build:svelte followed by npm run start. Packaged builds use npm run build:win or npm run build:mac. There is no build:linux script in the README, which is consistent with the unsupported status.
The Linux exclusion is a real boundary, not a footnote
The README labels Linux as not officially supported and then hands the user a manual dependency list. That is a meaningful constraint for three reasons visible in the material. First, the supported platforms get a scripted binary download and Linux does not, so the two paths can diverge in the versions of Demucs and yt-dlp in play. Second, the workaround names libsox-dev for backend errors, which suggests the audio I/O layer is sensitive to what the distribution provides. Third, no Linux packaging command is documented, so producing a distributable build is not covered. If your environment is Linux, the honest comparison is between StemRoller's interface and calling demucs directly, and the interface is the only thing you would be gaining. The other limitation is time. The README states plainly that splitting takes several minutes per song, so this is not a tool for processing a large library interactively, and the documentation does not describe any batch mode.
Calling demucs directly: the same model without the app
The alternative worth naming is the Demucs repository itself, which StemRoller links to and credits. The difference is not the model, since StemRoller uses Demucs for the demixing step. The difference is everything around it. Demucs gives you a Python package and a command-line entry point; you supply the audio file, you choose the output directory, and you script the loop if you have many tracks. StemRoller gives you search against YouTube, retrieval of the audio, a progress wait, and a folder to open. If your audio is already on disk, the search and download half of StemRoller is dead weight and you are paying for it with an Electron runtime and a Python dependency. If your audio is a song you only know by name, the retrieval half is the entire value, and demucs alone will not help you until you have a file.
Maintenance cost, third-party binaries and the licence question
StemRoller's maintenance burden sits mostly in code it does not own. The app depends on Demucs, yt-dlp and ffmpeg, and the download-third-party-apps script exists to pin or fetch those pieces. When any of them changes behaviour, the fix lands in StemRoller's packaging rather than in the model. The release cadence visible in the repository is two releases in 2026, 3.1.0 in February and 3.1.1 in June, which is a slow-moving surface for a project whose dependencies are external and can break independently. On licensing, the README states the choice is Public Domain (Unlicense) or MIT No Attribution and points at the LICENSE file. The repository metadata reports NOASSERTION instead of either identifier, so a tool that reads metadata will not tell you which terms apply. Read the LICENSE file directly if the distinction matters to your use. This is a description of what the material says, not legal advice.
Who should install it and what to check before you do
Install StemRoller if you are on Windows or macOS, you want stems from tracks you would otherwise have to find and download yourself, and a wait of several minutes per song is acceptable. Skip it if you are on Linux and unwilling to manage ffmpeg, demucs and yt-dlp globally, or if you already have audio files and a script, in which case demucs directly is fewer moving parts. Before committing, verify three things from the material rather than from this article: open the LICENSE file and confirm which of the two stated options you are taking, since the metadata says NOASSERTION; check that npm run download-third-party-apps completes on your machine, because that script is what makes the supported platforms supported; and confirm your audio backend situation if you are on Linux, where the README points at libsox-dev for backend errors.
Editorial conclusion
Adopt StemRoller if you want the Demucs model and yt-dlp handled for you on Windows or macOS and you accept a wait of several minutes per track. Do not adopt it if you are on Linux, since the README states Linux is not officially supported and asks you to install ffmpeg, demucs and yt-dlp globally yourself, or if you need separation inside an automated pipeline, where invoking demucs directly is less indirection. Before installing, read the LICENSE file and confirm which of the two options (Unlicense or MIT No Attribution) you are taking, since the repository metadata reports the licence as NOASSERTION rather than naming either.
Community notes