AudioLoom v4.0: Tauri & Svelte Desktop DAW
A lightweight, cross-platform Digital Audio Workstation (DAW) built with Tauri and SvelteKit. Features multi-track mixing, real-time waveform rendering, precise region cutting/trimming via FFmpeg, and a heavily optimized Web Audio API playback engine backed by an asynchronous Rust backend.
Tech stack
- Languages
- Frameworks & libraries
Performance & metrics
- FFmpeg operations run as non-blocking Tokio tasks, keeping the UI fluid during heavy multi-track rendering
- The Tauri/Wry WebView architecture consumes drastically less RAM and CPU than traditional Electron-based DAWs
- Bypassing default HTML5 Audio in favor of low-level Web Audio API routing eliminates playback drift across multiple tracks
Why I built it
Browser-based audio editors suffer from severe memory limitations, while professional DAWs are often overly complex for rapid podcast editing, voiceover mixing, or quick trimming. I engineered AudioLoom to bridge this gap with a lightning-fast, native desktop alternative. By combining Tauri's lightweight WebView with a multi-threaded Rust backend that wraps headless FFmpeg commands, the application delivers the raw processing power of a native editor with the UI flexibility of a modern Svelte app. It is designed for creators who need to quickly mix, pan, trim, and export multi-track audio without the bloat of traditional DAWs.
Architecture & decisions
The architecture bridges a reactive Svelte 5 frontend — using runes ($state, $derived) for state management — with a multi-threaded Rust/Tauri backend. The UI relies on wavesurfer.js for hardware-accelerated DOM rendering of audio buffers, while actual playback, stereo panning (StereoPannerNode), and volume scaling (GainNode) are routed explicitly through the native Web Audio API for zero-latency preview and drift-free multi-track synchronization. Heavy, blocking I/O operations — multi-track concatenation, sample-rate conversion, region cutting/trimming, and mixdowns — are offloaded to the Rust backend, which spawns isolated tokio::process::Command tasks targeting a bundled FFmpeg binary, so the frontend event loop never freezes during massive WAV/FLAC compilations.
Key features
- 01Multi-track mixing engine with independent volume, L/C/R stereo panning, solo, and mute controls
- 02Non-destructive audio region editing (cut/trim) executed via asynchronous, Tokio-backed FFmpeg subprocesses
- 03Hardware-accelerated waveform rendering and interactive region mapping with
wavesurfer.jsand custom DOM observers - 04Multi-format mixdown with parametric panning, exporting directly to WAV, FLAC, MP3, OGG, and AAC
- 05Dynamic theming engine mapped via Tailwind v4 CSS variables (Modern, Retro, Ghibli, etc.) with persistent local preferences
- 06Undo stack (memory-safe audio state history) and global keyboard shortcuts
Technical review
This application demonstrates high-performance desktop engineering, fusing web technologies with raw system binaries. A strict separation of concerns — Svelte manages reactive UI states (such as drag-to-resize sidebars and theme hydration) while Rust handles memory-intensive audio manipulation and filesystem caching — delivers a professional-grade editing experience. The static FFmpeg binary is bundled directly into the application payload, so it runs as a standalone, portable executable without requiring user-side system dependencies.