Skip to content
All projects

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

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

  1. 01Multi-track mixing engine with independent volume, L/C/R stereo panning, solo, and mute controls
  2. 02Non-destructive audio region editing (cut/trim) executed via asynchronous, Tokio-backed FFmpeg subprocesses
  3. 03Hardware-accelerated waveform rendering and interactive region mapping with wavesurfer.js and custom DOM observers
  4. 04Multi-format mixdown with parametric panning, exporting directly to WAV, FLAC, MP3, OGG, and AAC
  5. 05Dynamic theming engine mapped via Tailwind v4 CSS variables (Modern, Retro, Ghibli, etc.) with persistent local preferences
  6. 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.