github stemdeckapp/stemdeck v0.15.0
0.15.0

latest releases: v0.20.0, v0.19.1, v0.19.0...
one month ago

Important

macOS first launch (no code signing yet). After dragging StemDeck to Applications, clear the Gatekeeper quarantine flag or macOS will say the app is damaged:

xattr -dr com.apple.quarantine /Applications/StemDeck.app

Which file do I download?

Your setup Download
Windows, NVIDIA GPU StemDeck-Windows-x64.NVIDIA.zip
Windows, no NVIDIA GPU StemDeck-Windows-x64.zip
Linux, NVIDIA GPU StemDeck-Linux-x64.NVIDIA.tar.gz
Linux, no NVIDIA GPU StemDeck-Linux-x64.tar.gz
macOS, Apple Silicon (M1-M4) StemDeck-macOS-arm64.dmg
macOS, Intel StemDeck-macOS-x64.dmg
Docker / Unraid Nothing here - pull ghcr.io/stemdeckapp/stemdeck:0.15.0

Pick one. Each Windows and Linux download is complete on its own: unzip and run, no installer, no toolchain. Everything else in the asset list is used by StemDeck itself - in particular the small -app files are the updater's payload and will not run on their own.

On the GPU variants: both ship the same small package. The NVIDIA build downloads the CUDA components matching your card on first launch, so it needs a working NVIDIA driver. If you are unsure, take the non-NVIDIA one - it works everywhere and you can switch later.

Windows and Linux on 0.14.x can take this through the in-app updater. No dependencies changed, so the updater applies it in place rather than sending you to the full download.


Search, without leaving StemDeck

The box you paste links into now takes a search query too. Type anything that is not a link and results come back in three tabs: YouTube songs, YouTube playlists and SoundCloud songs.

Finding something to work on no longer means opening a browser, searching, copying a URL and coming back.

Pasting a link behaves exactly as it did. Nothing about that path changed.

Preview before you commit to a separation

Every result carries a Preview button that opens a small player with pause and a seekable bar.

A separation takes minutes. Telling a live take from a studio one, or the right cover from six wrong ones, is a ten second question. Auditioning is not choosing: picking a result fills the box, and extraction still waits for Split stems.

Results longer than your configured track limit are marked and cannot be selected, because the pipeline would refuse them anyway.

Search fires on a finished word rather than on every keystroke, so typing a full phrase costs one request rather than one per character.

YouTube extraction, on a path that is not deprecated

YouTube moved its signature challenge solver out of yt-dlp and turned it off by default. Extraction had been surviving on a fallback client that skips the challenge, which yt-dlp has since deprecated.

StemDeck now ships the solver and a JavaScript engine to run it. Nothing is fetched or executed at runtime to make that work: the solver is part of the package, so --remote-components stays off.

There is also an optional cookies.txt path in Settings, for when YouTube asks StemDeck to confirm it is not a bot. Leave it empty unless imports are failing. Cookies are only used after YouTube has actually refused, never on a request that was going to succeed, because sending them removes the very client that resolves most tracks today.

Português (Portugal)

European Portuguese is now its own choice rather than Brazilian text under a different flag. That covers the vocabulary (ficheiro, Definições, Guardar, Transferir) and the verb forms, which is what shows up in every status line: A processar, A pesquisar, A exportar.

Nine language options now: English, Polski, 日本語, 简体中文, Deutsch, Français, Português (Brasil), Português (Portugal) and Bahasa Indonesia.

Fixes

  • A single byte outside the system encoding in Demucs' output no longer fails the whole separation. On Windows this looked like 'charmap' codec can't decode byte 0x8f and had nothing to do with the audio.
  • Max track length accepts what it says it accepts. Setting it to 60 silently saved 20; the ceiling was always 60 and only the settings screen disagreed.
  • A failed import says what went wrong. Bot checks, rate limits and format failures used to arrive as the word unknown, readable only in the logs.
  • MP4 export failures are visible. When the video could not be fetched, the export option simply disappeared with nothing said.
  • Playback speeds are 0.75x and 1x. 0.25x is gone: below roughly 0.7x the time stretching costs more than the slower tempo gains.
  • An ffmpeg that is present but not executable degrades to "could not analyse" instead of failing the job.

Under the hood

Test coverage is at 85%, up from 78%, concentrated on key and tempo detection where a wrong answer is silent: nothing crashes, the label is simply wrong and the click track sits quietly off the beat.

Part of that gain was finding that the previous figure was measured incorrectly on developer machines, which had been hiding roughly twenty tests that were skipping rather than running.

Verified

Search, preview, tab switching, keyboard selection and the over-limit refusal were driven in a real browser and are covered by 16 new browser tests. A full import through the real pipeline was run end to end, and the challenge solver was confirmed to resolve formats that the solverless path could not.

The packaging changes that place the JavaScript engine in each bundle have not yet been through a real build on any platform. If you are trying this pre-release, that is the part worth reporting on.

Don't miss a new stemdeck release

NewReleases is sending notifications on new releases.