Spatialize sound through time.
A desktop tool to place a sound source anywhere around a listener and animate it in 3D over time. Visual keyframing, HRTF binaural panning, and a realtime audio engine — built on the Web Audio API.
A precision instrument for spatial audio, not a toy.
HRTF binaural panning
PannerNode in HRTF mode delivers immersive, head-related stereo from any position around the listener — fully realtime, sample-accurate.
Visual 3D keyframing
Drop keyframes anywhere on a unit sphere. The trajectory is a smooth interpolated path through them, scrubbable, editable, undoable.
Two views, one mix
Top (X/Z) and side (Z/Y) orthographic projections side-by-side, or a single perspective scene with orbit controls. Switch instantly.
Per-keyframe audio
Each keyframe carries its own gain, low-pass, high-pass, doppler, air-absorption and reverb-send. Curves and tension per node.
Realtime + offline render
Audition with the live engine, then bounce to WAV (16/24/32-bit) or MP3 from the very same project file.
Persisted projects
.sferic.json — text-readable, versioned, diff-friendly. Reopen, share, drop on the window. Your audio gets re-linked automatically.
Loop, snap, BPM
Loop a region while you sculpt. Snap angles (5°, 15°, 30°…). BPM detection on the audio so keyframes can feel the grid.
Built for the desktop
Tauri 2 + native menu bar + hardware-accelerated audio. ~10MB binary on macOS, Windows, Linux. Boots in under a second.
Designed like a tool you'd actually want to use.
Sculpt the trajectory in space
A wireframe HRTF sphere centres the listener head. Keyframes drop on the sphere surface, the orange path threads them in time order, and orbit controls let you read the motion from any angle.
Precise editing on two axes
Drop into orthographic top (X/Z) and side (Z/Y) projections, both editable at once. Numbered keyframes stay in sync across views; snap angles, zoom, and per-view lock keep edits surgical.
Native-feeling, web-built.
Sferic is a Tauri 2 app: a Rust shell wrapping a Vite + React + TypeScript frontend. The audio graph runs in the browser's audio thread; the UI is insulated by a Zustand store with undo, gesture coalescing, and live AudioEngine sync. Strict TS, zero warnings, no telemetry.
- Tauri 2 Native desktop shell, ~10MB binaries, OS menu integration
- React 19 UI components, hooks, strict TypeScript
- Three.js + R3F WebGL 3D scene with orbit controls and GLTF head model
- Web Audio API PannerNode HRTF, AudioWorklet-ready, BiquadFilters per voice
- Tailwind v4 Utility-first styling tied to a small token palette
- Zustand Single immutable store + 50-deep undo/redo with gesture coalescing
- Vite Sub-second HMR; tsc strict in CI
- Rust (Tauri) Filesystem & dialog plugins, native menu, code-signed bundles
Free. Open source. No account.
Builds are produced by GitHub Actions on every tagged release. v0.1 is the first usable cut — expect rough edges.
git clone https://github.com/dim971/sferic && cd app && pnpm install && pnpm tauri build