Professional-grade desktop AI audio stem separation and restoration.
Eclat Studio is a privacy-first, local-first desktop application built with Tauri (Rust + React) that leverages local GPU inference to produce stems that sound like they came out of a million-dollar studio. No cloud uploads. No compromised phase. No ghosted audio.
The market is flooded with amateur "one-click" cloud toys that produce warbling, phase-destroyed, flat-sounding stems. Eclat races to the top on fidelity, not convenience. Every algorithm decision prioritizes what sounds right over what ships fast.
All processing runs on the user's machine. No audio is uploaded to any server. No API keys required for core functionality. The user's audio, the user's hardware, the user's control.
Every sourced audio file is tracked with a C2PA-aligned cryptographic provenance certificate. SHA-256 hash chains link every processing step back to the original source, creating an auditable trail for rights management and sample clearance preparation.
| Layer | Technology | Purpose |
|---|---|---|
| Desktop Shell | Tauri 2 | Native window, IPC, sidecar management |
| Backend | Rust | DSP, inference orchestration, provenance, file I/O |
| Frontend | React 19 + Tailwind CSS v4 | Pro UI, stem trees, waveform rendering, metering |
| Stem Separation | Demucs (htdemucs) | Primary model: drums, bass, vocals, other |
| Stem Separation | BS-RoFormer | Secondary model: clean vocal isolation |
| Audio Sourcing | yt-dlp + ffmpeg | Sidecar-based audio import from public URLs |
| State Management | tRPC + React Query | Type-safe server-client communication |
| Job Pipeline | Filesystem State Machine | NEW → CLAIMED → RUNNING → DONE / FAILED |
Single AI models always leave artifacts. Eclat runs two models locally (Demucs + BS-RoFormer), aligns their outputs with FFT cross-correlation, and fuses them using weighted spectral mask blending. Transients from the better-transient model, sustain from the better-tonal model. The result is a single, artifact-free stem per instrument class.
AI-generated and heavily compressed audio sounds flat and mono-ish. Eclat Air is a 3-band frequency-dependent Mid/Side widener with a lookahead peak limiter:
- Low Band (<150 Hz): Width = 0.0 — Strict mono. Keeps kick/bass punch.
- Mid Band (150 Hz – 5 kHz): Width = 1.1 — Subtle widening for body.
- High Band (>5 kHz): Width = 1.5 — Aggressive widening for "expensive" air.
Built with Linkwitz-Riley 4th-order crossovers (subtraction method for perfect reconstruction), Direct Form II Transposed biquads, and anti-denormal protection.
Pros don't work with flat lists. Eclat's stem tree supports recursive splitting — a "Vocals" stem can be further separated into "Lead" and "Harmony." When expanded, the parent waveform becomes ghosted (opacity 0.2, blur 1px) to maintain spatial context, while sub-stems slide in with color-coded tethers.
Import audio from public URLs for legitimate professional workflows — mix analysis, remix competition prep, sample clearance documentation, format shifting. Everything runs locally via bundled yt-dlp and ffmpeg sidecars, with real-time progress events to the UI. Every source is automatically logged in a cryptographic provenance certificate.
eclat-studio/
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── lib.rs # Tauri commands, app setup
│ │ ├── main.rs # Entry point
│ │ ├── dsp/ # Audio DSP modules
│ │ │ ├── crossover.rs # Linkwitz-Riley 4th-order crossovers
│ │ │ ├── ms_widener.rs # Mid/Side encode/decode, width control
│ │ │ ├── limiter.rs # Lookahead peak limiter
│ │ │ └── processor.rs # Eclat Air top-level signal chain
│ │ └── sourcing/ # Import & Deconstruct pipeline
│ │ ├── events.rs # Tauri event types for state flow
│ │ ├── progress_parser.rs # yt-dlp stdout parser
│ │ ├── extractor.rs # ffmpeg audio extraction + validation
│ │ ├── provenance.rs # C2PA-aligned certificate system
│ │ └── pipeline.rs # Top-level pipeline orchestrator
│ ├── Cargo.toml
│ └── tauri.conf.json
├── client/ # React frontend
│ ├── src/
│ │ ├── components/
│ │ │ ├── stems/ # Stem tree UI components
│ │ │ │ ├── StemTreeAccordion.tsx
│ │ │ │ ├── StemTrackRow.tsx
│ │ │ │ └── StemWaveform.tsx
│ │ │ ├── SourcingPipelineStatus.tsx
│ │ │ └── ...
│ │ ├── hooks/
│ │ │ ├── useStemTree.ts # Stem tree state management
│ │ │ ├── useSourcingPipeline.ts
│ │ │ └── ...
│ │ ├── lib/
│ │ │ └── stem-types.ts # Stem tree type definitions
│ │ └── ...
│ └── ...
├── server/ # Node.js backend (sidecar)
│ ├── workers/
│ │ ├── demucs-worker.ts
│ │ └── yt-dlp-worker.ts
│ ├── lib/
│ │ ├── job-worker.ts # Pipeline orchestration
│ │ ├── job-state.ts # State machine + actor auth
│ │ └── filesystem.ts # Filesystem authority layer
│ └── ...
├── docs/
│ ├── FUSION_ARCHITECTURE.md # Multi-model fusion design
│ └── LINK_TO_LOCAL_ARCHITECTURE.md
└── scripts/
└── bundle-python.sh # Python tool bundling
Eclat Studio is designed exclusively for legitimate professional workflows:
- Mix analysis: Import reference tracks to study arrangement, EQ, and spatial design.
- Remix competition preparation: Download provided stems from official remix platforms.
- Sample clearance preparation: Document every sample source with cryptographic provenance.
- Format shifting: Convert audio the user owns between formats for local processing.
All source URLs are logged in tamper-evident provenance certificates. Eclat Studio does not host, store, or redistribute any copyrighted material. All processing occurs locally.
# Install dependencies
pnpm install
# Run in development mode
pnpm tauri dev
# Build for production
pnpm tauri build- Node.js 20+
- Rust 1.75+
- Python 3.10+ (for Demucs inference)
- CUDA-capable GPU (recommended) or Apple Silicon
Proprietary. All rights reserved.