github byrongamatos/slopsmith-desktop v0.2.7

latest release: v0.2.8
12 days ago

Slopsmith Desktop v0.2.7 bundles a refreshed slopsmith core plus updates across 9 plugin repos, on top of substantial work in the desktop runtime itself.

Note for end-users: when you launch v0.2.7 for the first time, allow a moment for ML model caches to populate. Subsequent launches are fast.

✨ Highlights

  • 3D Highway is now the default visualization for guitar arrangements, with WebGL2 fallback, fret-column markers, fret-inlay number labels, "Up Next" section HUD, double sustain trail for open strings, and camera-swoop fix during long intros.
  • Native audio engine — noise gate with threshold/release/depth controls + preset-scoped state, plus a native desktop audio path for the NAM tone plugin.
  • Live MIDI recording in the editor — capture a Keys arrangement straight from a connected MIDI keyboard. You can also author Keys arrangements from scratch now.
  • Lyrics Karaoke gains live mic pitch matching with octave correction and a /pitch endpoint via the Demucs server.
  • Sloppak Converter bulk mode + queue dashboard — convert your whole library in the background.
  • Plugin-agnostic guided tour engine (Shepherd.js) with a ? button in the player.
  • Keyboard shortcuts system with panel scoping; library keyboard nav (focus search, arrow nav, Enter to play); ESC from player returns to launching screen.
  • Settings export / import to back up and restore your configuration.
  • Demo mode (SLOPSMITH_DEMO_MODE) for HF Spaces public demo.

🖥️ Desktop runtime (slopsmith-desktop)

  • feat(audio): native noise gate (threshold / release / depth) + preset-scoped state (#44)
  • feat(audio): dB sliders, preset defaults, tone automation, safe chain reload (#26) — first contribution from @rodsakuramoto 🎉
  • feat: native audio device probing and safer reconfigure (#47)
  • feat: replace splash spinner with dancing guitarist animation (#33)
  • feat: immediate startup splash with live progress (#27)
  • fix(splash): set alwaysOnTop so loading window stays visible (#40)
  • fix(splash): subtitle notes that first launch may take a moment (#41)
  • fix(python): pin ML model caches to ~/.cache so weights persist across launches (#45)
  • fix: bundle ffprobe alongside ffmpeg on every platform (#46)
  • fix: wire update_manager plugin + fix dev-mode server readiness (#31)
  • fix: expose getBackingPosition / Duration / isPlaying IPC for exclusive-mode audio (#32)
  • fix(bundle): copy entire static/ dir instead of 4-file whitelist
  • fix(audio): inject Chain button at startup, not only on first song play
  • chore(build): install slopsmith runtime deps from requirements.txt during bundling (#34)
  • chore(build): Linux Python bundling switched to python-build-standalone (#35)
  • chore(build): pull update-manager plugin from masc0t/slopsmith-update-manager (#48)

🎸 Slopsmith core

3D Highway

  • 3D Highway promotion (4-PR series): bundle as core plugin, default-flip with WebGL2 fallback + nag, override detection, README updates (#171, #175, #176)
  • "Up Next" section HUD card + on-highway toggle (#206)
  • Double sustain trail for open strings (#204)
  • Static fret-inlay number labels toggle (#194)
  • Fret-column reference markers (#192)
  • Eliminate camera swoop at song start during long intros (#190)
  • Fall back to CDN if vendored Three.js fails to load

Highway / viz picker

  • Recreate canvas on renderer context-type change — Auto can now route to 3D Highway for guitar songs without reload (#193)
  • Show resolved viz in Auto closed-state label (#189)
  • Clear stale songInfo on highway.stop() to prevent wrong stems loading on song switch (#177)

Library

  • Keyboard shortcuts system with panel scoping (#173)
  • Library keyboard navigation: focus search, arrow nav, Enter to play (#150)
  • Volume up/down keyboard shortcuts (#197)
  • Persist library view, sort, format, and tree expand state (#136)
  • Library filters + sort improvements (#134)
  • psarc_platform filter to suppress _m / _p duplicate library entries (#174)
  • First-time scan banner when library has never been imported (#191)
  • Esc from player returns to launching screen (#153)

Sloppak / PSARC

  • Redirect torchaudio.save to soundfile in demucs subprocess (#203)
  • Make demucs subprocess work under embeddable Python's ._pth isolation (#196)
  • Pin bundled bin on demucs PATH; surface stdout in errors (#202)
  • End-to-end coverage for PSARC → sloppak conversion (#208)

Plugin loader & infra

  • Bundled plugins always win over user-installed copies (#180)
  • Use sha256 for install marker so plugins don't reinstall every boot (#195)
  • SSE push transport for startup progress (#169)
  • Plugin logger injection + structured logging migration (3-phase: #157, #159, #163)
  • Plugin-agnostic guided tour engine (Shepherd.js) (#149)
  • ? tour-trigger button in player controls bar
  • Diagnostic bundle export (#170)
  • Demo mode (SLOPSMITH_DEMO_MODE) for HF Spaces public demo (#148)
  • Settings export / import: backup and restore user config (#114)
  • Audio mixer registry + popover (#94)

Audio routing

  • Route song audio through JUCE backing track in exclusive mode (#164)
  • Save button next to Demucs Server URL field (#182)

🔌 Bundled plugin updates

Editor (byrongamatos/slopsmith-plugin-editor)

  • Live MIDI keyboard recording for Keys arrangements
  • Author Keys arrangements from scratch (allows multiple Keys arrangements)
  • Cull ghost notes to visible window; fix EOF cursor reset
  • Throttle _recCount DOM updates; lock arrangement selector during recording
  • Fix /static 404 when plugin is shadow-installed in user plugins dir
  • Fix read-only-static crash on desktop bundles
  • Fix piano range max (127→143)

Lyrics Karaoke (byrongamatos/slopsmith-plugin-lyrics-karaoke)

  • Live mic pitch-matching feedback in karaoke renderer
  • Tier-1 pitch quality: narrow range, mode-of-semitone, voiced-prob weighting, octave correction
  • Use Demucs server /pitch endpoint when configured, fall back to local pYIN
  • Stabilize pitch chart vertical layout; recover unvoiced syllables
  • Score mic frames by capture time; reset on transport seek/pause
  • Age out mic indicators on wall clock; restore mic on karaoke re-toggle
  • Preallocate yinBuffer + cap tau range to vocal freqs for ~5.4× speedup
  • Accessibility, high-sample-rate buffer sizing, pill-update throttle

NAM Tone (byrongamatos/slopsmith-plugin-nam-tone)

  • Native desktop audio path (low-latency NAM via JUCE)
  • Fix sloppak NAM mappings; recovery for native audio path
  • Stop NAM test when audio settings change
  • Lower input-gain slider min to 0; sync slider on preset apply
  • Polish NAM native settings UI; associate labels with controls

NoteDetect (byrongamatos/slopsmith-plugin-notedetect)

  • Diagnostic note failure feedback (#21)

Splitscreen (topkoa/slopsmith-plugin-splitscreen)

  • Generic per-panel viz picker — supports keys, drums, and any future slopsmithViz plugin
  • Persist split-screen on-state across browser sessions
  • Lyrics overlay above any viz; canvas-replace + pre-install renderer
  • Multi-instance viz API for Piano, Drums
  • Many fixes: legacy cfg.mode === '3d' mapping, focus-listener cleanup, viz-factory guards, in-flight queue rebuild

Sloppak Converter (topkoa/slopsmith-plugin-sloppak-converter)

  • Bulk conversion + queue dashboard (slopsmith#107)
  • Index new sloppak in meta_db on conversion done
  • Async sync endpoints, off-loop validation, DoS caps
  • Per-row retry split flag, bulk bar visibility on non-library screens
  • Path traversal hardening; pause/resume tests
  • Honor remote demucs server in split gate
  • Linux /config fallback in _cleanup_stale_torchcodec
  • Drop torchcodec from requirements; add soundfile

Stems (topkoa/slopsmith-plugin-stems)

  • Expose window.stems API (setVolume, setMuted, getState, stemState)
  • Harden merge against non-object globals; preserve existing window.stems props

Tabview (byrongamatos/slopsmith-plugin-tabview)

Multiplayer (byrongamatos/slopsmith-plugin-multiplayer)

  • Migrate print() to structured logging (slopsmith#155 phase 4)

Piano (byrongamatos/slopsmith-plugin-piano)

  • Use :scope > button to avoid nested-button insertBefore crash

Update Manager (masc0t/slopsmith-update-manager)

  • Initial public release (v1.5.0)
  • Bundled-plugin awareness
  • Desktop build compatibility (PLUGINS_DIR, restart, core card)
  • Plugin home moved from byrongamatos/slopsmith-plugin-update-manager to masc0t/slopsmith-update-manager — desktop bundle list updated in #48.

🙏 Contributors

Thank you to everyone who shipped code into this release:

  • @byrongamatos — desktop runtime, slopsmith core, plugin infrastructure
  • @topkoa — 3D Highway "Up Next" HUD + double-sustain trail, Sloppak Converter hardening, Splitscreen viz picker rewrite, Stems API
  • @mogul (Bret Mogilefsky) — panel-scoped keyboard shortcuts system (slopsmith#173)
  • @barlindfirst contribution — native audio device probing + safer reconfigure (desktop#47), NAM native desktop audio path
  • @rodsakuramotofirst contribution — dB sliders, preset defaults, tone automation, safe chain reload (desktop#26)
  • @vdwstoffelfirst contribution (Christoff van der Walt) — volume up/down keyboard shortcuts (slopsmith#197)

Plus automated review assistance from GitHub Copilot SWE agent across multiple PRs.

Full desktop changelog: v0.2.6...v0.2.7

What's Changed

  • Add immediate startup splash with live progress by @byrongamatos in #27
  • feat(audio): dB sliders, preset defaults, tone automation, and safe chain reload by @rodsakuramoto in #26
  • fix: wire update_manager plugin and fix dev-mode server readiness by @byrongamatos in #31
  • fix: expose getBackingPosition/Duration/isPlaying IPC for exclusive mode audio fix by @byrongamatos in #32
  • feat: replace splash spinner with dancing guitarist animation by @byrongamatos in #33
  • Install slopsmith runtime deps from requirements.txt during bundling by @byrongamatos in #34
  • Linux Python bundling: download python-build-standalone, drop deadsnakes by @byrongamatos in #35
  • feat(audio): native noise gate (threshold/release/depth) + preset-scoped state by @byrongamatos in #44
  • fix(splash): subtitle notes that first launch may take a moment by @byrongamatos in #41
  • fix(splash): set alwaysOnTop so loading window stays visible by @byrongamatos in #40
  • fix(python): pin ML model caches to ~/.cache so weights persist across launches by @byrongamatos in #45
  • fix: bundle ffprobe alongside ffmpeg on every platform by @byrongamatos in #46
  • Add native audio device probing and safer reconfigure by @barlind in #47
  • chore(build): pull update-manager plugin from masc0t/slopsmith-update-manager by @byrongamatos in #48

New Contributors

Full Changelog: v0.2.6...v0.2.7

Don't miss a new slopsmith-desktop release

NewReleases is sending notifications on new releases.