Dive into the music.
A focused, local-first desktop workspace to learn, analyze, isolate, and rehearse music.
Note
SonArcan Full targets Apple Silicon, NVIDIA GPUs on Windows/Linux, and AMD GPUs on Linux. SonArcan Light targets all supported platforms without bundling the heavy analysis models or runtimes.
| Platform | Minimum for playback, lyrics, spectrum and meters | Required for Beat, Chords and Mix | Recommended |
|---|---|---|---|
| macOS Apple Silicon Full | macOS 14, M1, 8 GB RAM | A working, qualified MLX/MPS accelerator | M2 or newer, 16 GB RAM |
| macOS Apple Silicon Light | macOS 14, M1, 8 GB RAM | Not included | 16 GB RAM for large projects |
| macOS Intel Light | macOS 12, Intel x64, 8 GB RAM | Not included | macOS 13+, 16 GB RAM |
| Windows NVIDIA GPU | Windows 10 1903 or newer, x64, 16 GB RAM | NVIDIA GPU and current driver compatible with CUDA 12.6; startup model probe must pass | Windows 11, 8 GB GPU memory, 32 GB RAM |
| Windows Light | Windows 10 1903 or newer, x64, 8 GB RAM | Not included | Windows 11, 16 GB RAM |
| Linux NVIDIA GPU | Ubuntu 22.04-compatible x64 desktop, glibc 2.35+, 16 GB RAM | NVIDIA GPU and current driver compatible with CUDA 12.6; startup model probe must pass | Ubuntu 22.04 or newer, 8 GB GPU memory, 32 GB RAM |
| Linux AMD GPU | Ubuntu 22.04-compatible x64 desktop, glibc 2.35+, 16 GB RAM | AMD GPU and driver supported by ROCm 7.2; startup model probe must pass | Ubuntu 22.04.5 or newer, 8 GB GPU memory, 32 GB RAM |
| Linux Light | Ubuntu 22.04-compatible x64 desktop, glibc 2.35+, 8 GB RAM | Not included | Ubuntu 22.04 or newer, 16 GB RAM |
SonArcan Full checks the production accelerator and model graphs once when the application starts. If no compatible and qualified GPU backend is available, it enters a safe degraded mode for the complete session: Beat, Chords, Mix, BPM, and the analysis-driven metronome are not shown and cannot be started. Playback, time navigation, lyrics, spectrum, and the stereo meter remain available. The explanatory message is shown only once per user profile.
SonArcan Light is a deliberately smaller edition. It keeps playback, imports,
projects, time navigation, loops, training, pitch/tempo controls, lyrics,
spectrum, and the stereo meter, but does not include Beat, Chords, Mix, BPM, or
the analysis metronome. Full and Light use the same .sac project format and
never delete analysis data produced by another edition.
Windows and Linux GPU bundles contain a pinned accelerator-specific PyTorch runtime: CUDA 12.6 for NVIDIA, and ROCm 7.2 for AMD on Linux. PyTorch exposes ROCm through its CUDA-compatible API, but the packages and installer remain separate. Windows AMD and Intel GPUs are not qualified in this beta; choose Light on those systems. SonArcan never silently falls back to the CPU for heavy analysis jobs.
GPU runtimes exceed GitHub's 2 GiB limit for a single release asset. Their
portable package is consequently published as numbered part-000, part-001,
… files plus a SHA256SUMS file. Download every part for the chosen platform
and backend into one directory, verify the checksums, then concatenate them in
name order. On Linux this reconstructs an installable .deb:
cd ~/Downloads
version=v0.1.0-beta.24
backend=NVIDIA # Replace with AMD for the ROCm release.
sha256sum --check "SHA256SUMS-Linux-${backend}-GPU.txt"
cat "SonArcan-Linux-x86_64-${backend}-GPU-${version}.deb".part-* > "SonArcan-${backend}-GPU.deb"
sudo apt install "./SonArcan-${backend}-GPU.deb"Replace NVIDIA with AMD for the ROCm build. On Windows, verify the hashes
with Get-FileHash, concatenate the numbered files as binary data, then extract
the reconstructed .zip and launch SonArcan NVIDIA GPU.exe:
$ErrorActionPreference = 'Stop'
Set-Location "$HOME\Downloads"
$version = 'v0.1.0-beta.24'
$checksumFile = 'SHA256SUMS-Windows-NVIDIA-GPU.txt'
foreach ($line in Get-Content -LiteralPath $checksumFile) {
$expected, $file = $line -split '\s+', 2
$actual = (Get-FileHash -LiteralPath $file -Algorithm SHA256).Hash.ToLowerInvariant()
if ($actual -ne $expected.ToLowerInvariant()) { throw "Checksum mismatch: $file" }
}
$parts = @(Get-ChildItem "SonArcan-Windows-x86_64-NVIDIA-GPU-$version.zip.part-*" | Sort-Object Name)
if ($parts.Count -eq 0) { throw 'No archive parts found' }
$archive = "SonArcan-NVIDIA-GPU-$version.zip"
$output = [IO.File]::Create($archive)
try {
foreach ($part in $parts) {
$input = $part.OpenRead()
try { $input.CopyTo($output) } finally { $input.Dispose() }
}
} finally { $output.Dispose() }
Expand-Archive -LiteralPath $archive -DestinationPath "SonArcan-NVIDIA-GPU-$version"
& ".\SonArcan-NVIDIA-GPU-$version\SonArcan NVIDIA GPU.exe"Light releases and both macOS releases remain ordinary one-file installers.
| Feature | Full / GPU | Light or degraded mode |
|---|---|---|
| Playback, pitch/tempo, loops and trainer | Yes | Yes |
| Lyrics | Yes | Yes; moves into the Mix column |
| Spectrum and stereo meters | Yes | Yes |
| Beat timeline, BPM and analysis metronome | Yes | No |
| Chord detection and navigation | Yes | No |
| Piano, guitar and ukulele chord views | Yes | No; assets are excluded |
| Six-stem Mix and export | Yes | No |
Download SonArcan for an Apple-silicon Mac, SonArcan NVIDIA GPU for a supported NVIDIA Windows/Linux computer, SonArcan AMD GPU for supported AMD Linux hardware, or SonArcan Light everywhere else. Detailed notes for the current beta are in RELEASE_NOTES.md.
SonArcan is made for musicians who want the useful parts of an audio workstation without the weight of a full DAW. Import a setlist, understand the music, build loops, and practice while keeping projects portable and data on your computer. Full editions also analyze the music and isolate its parts locally.
- Import WAV, MP3, FLAC, local files, or YouTube sources into portable
.sacprojects. - Play, seek, change gain, and create seamless A/B loops through a dedicated Rust audio engine.
- Slow down or speed up from 50–200% independently of pitch, with ±12 semitones and fine cent correction.
- In Full editions, detect BPM, beats, downbeats, and timed chords locally, with detected timelines and source-aware disposable caches.
- In Full editions, separate six stems locally with HTDemucs 6s through MLX or portable Torch, then mix or export them.
- Practice with a progressive loop trainer, waveform, spectrum, and stereo meter; Full editions add the synchronized analysis metronome.
- Keep per-track practice settings, recent projects, diagnostics, and a multilingual interface.
For planned work and known product directions, see the roadmap.
SonArcan stands on an outstanding open-source audio and desktop ecosystem:
| Area | Tools and projects |
|---|---|
| Desktop & interface | Rust, Tauri 2, Svelte 5, TypeScript, Vite |
| Real-time audio | CPAL, Symphonia, Signalsmith Stretch, RustFFT |
| Source separation | Apple MLX, demucs-mlx, PyTorch, HTDemucs 6s, Python |
| Musical analysis | LV-Chordia, Beat This!, PyTorch, librosa |
| Import & media | FFmpeg, LAME, yt-dlp |
| Reproducible builds | npm, Cargo, uv, GitHub Actions |
A heartfelt thank-you to every maintainer, researcher, tester, and contributor behind these projects. Their work makes SonArcan possible. Licensing and attribution details are collected in Third-party notices.
- macOS 14+ on Apple Silicon, macOS 12+ on Intel for Light, Windows x64, or a Linux x64 desktop supported by Tauri 2
- Node.js 22+ and npm
- Stable Rust 1.78+ with Cargo
uvexactly0.9.26- FFmpeg and FFprobe on
PATHfor development fallback - Tauri 2 prerequisites for the target OS
Install the native tools for your operating system first. The FFmpeg command
below is macOS-specific; use your distribution package manager on Linux or put
FFmpeg and FFprobe on PATH on Windows.
rustup toolchain install stable
brew install ffmpeg
curl -LsSf https://astral.sh/uv/0.9.26/install.sh | sh
uv python install 3.13.5On Windows PowerShell, install the same pinned uv release with:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/0.9.26/install.ps1 | iex"
uv python install 3.13.5Every profile starts with a fresh checkout and the frontend dependencies:
npm ciChoose exactly one of the following profiles.
This is the only source profile that prepares the shared HTDemucs model. MLX handles six-stem separation; PyTorch MPS handles Beat and Chords.
npm run mlx:sync
npm run mlx:model
npm run chords:downbeat-model
npm run python:runtime
npm run ytdlp:search
npm run ffmpeg:runtime
npm run quality
npm run tauri dev -- --config src-tauri/tauri.macos-arm.conf.jsonRun npm run stems:sync, not mlx:sync. These profiles require the verified
config.json and htdemucs_6s.safetensors produced by the Apple Silicon
prepare-model release job under src-tauri/resources/models/demucs-mlx/.
Copying an arbitrary model into that directory will fail its identity checks.
For NVIDIA on Linux or in a Unix-like Windows shell:
export SONARCAN_EDITION=full
export SONARCAN_GPU_BACKEND=nvidia
npm run stems:sync
npm run chords:downbeat-model
npm run python:runtime
npm run verify:gpu-runtime
npm run ytdlp:search
npm run ffmpeg:runtime
npm run quality
npm run tauri dev -- --config src-tauri/tauri.nvidia-gpu.conf.jsonFor AMD ROCm on Linux, replace nvidia with amd and use
src-tauri/tauri.amd-gpu.conf.json. Windows AMD and Intel GPU Full profiles are
not qualified. Native Windows PowerShell sets the NVIDIA environment with:
$env:SONARCAN_EDITION = 'full'
$env:SONARCAN_GPU_BACKEND = 'nvidia'Then run the same npm commands without the two export lines.
Light does not prepare MLX, Torch, Beat This!, LV-Chordia, or HTDemucs. It keeps playback, projects, imports, lyrics, spectrum, meters, and time-based practice.
export SONARCAN_EDITION=light
npm run ytdlp:search
npm run python:light-runtime
npm run verify:light-runtime
npm run ffmpeg:runtime
npm run verify:ffmpeg-release
npm run quality
npm run tauri dev -- --config src-tauri/tauri.portable.conf.jsonUse src-tauri/tauri.macos-arm-light.conf.json or
src-tauri/tauri.macos-intel-light.conf.json instead on macOS. In PowerShell,
set the edition with $env:SONARCAN_EDITION = 'light' and omit the export
line.
npm run dev starts only the frontend. Playback, project management, native
menus, analysis, and stems require npm run tauri dev and the Rust backend.
The contents of a desktop bundle depend on its edition. End users never need to
install Python, uv, FFmpeg, or model dependencies themselves.
| Build profile | Targets | Analysis implementation | Bundled resources |
|---|---|---|---|
| MLX Full | Apple Silicon | sonarcan-mlx-worker for six-stem separation and PyTorch MPS for Beat/Chords |
MLX/MPS runtime, HTDemucs, Beat This!, LV-Chordia, FFmpeg and yt-dlp |
| Torch GPU Full | Windows/Linux NVIDIA; Linux AMD | sonarcan-torch-worker using CUDA 12.6 or ROCm 7.2 for six-stem separation and Beat/Chords |
Backend-specific PyTorch runtime, HTDemucs, Beat This!, LV-Chordia, FFmpeg and yt-dlp |
| Light | Apple Silicon, Intel Mac, Windows x64 and Linux x64 | No ML worker and no heavy analysis | Minimal Python runtime for yt-dlp plus FFmpeg; no Torch, MLX or analysis models |
The tag workflow is the authoritative cross-platform build recipe: it chooses the correct worker, accelerator runtime, edition environment, resources, and Tauri configuration for each target. It verifies the packaged resources before leaving the release as a draft for manual smoke testing.
GitHub macOS builds are ad-hoc signed so every embedded executable has a consistent code signature, but they are not notarized or identified by Apple. On first launch, users must explicitly allow SonArcan under System Settings → Privacy & Security → Open Anyway. The complete workflow and trust model are documented in the release guide.
A .sac project is an inspectable directory. macOS presents it as a single
SonArcan document package; Windows and Linux keep the same portable contents:
My-Band.sac/
├── project.json
├── Audio/
├── Stems/
├── Analysis/
├── Chords/
├── Lyrics/
└── Cache/
The manifest stays human-readable. Original media and user-authored data are kept separate from disposable analysis and cache files.
- Architecture · Development · Quality
- Real-time audio · Chord analysis · Stem separation
- Practice workflow · Project management · Waveforms
- Competitive analysis · Roadmap · Release guide
- Contributing · Security
SonArcan grows through code, ideas, testing, musical feedback, and careful open-source work. Thank you—warmly—to everyone who has helped shape it.
Current repository contributors:
- OrangeJuce82 — creator and maintainer
Want to join the list? Read CONTRIBUTING.md, open an issue, or submit a focused pull request. Every thoughtful contribution is welcome.
If SonArcan helps your practice sessions and you would like to support its continued development, you can offer the project a coffee through PayPal:
Thank you for listening, testing, contributing, sharing, and supporting the project. 💙
SonArcan is available under the MIT License. Third-party components and models retain their own licenses; see THIRD_PARTY_NOTICES.md.