Vocal DSP
with tunelet
Pitch correction, LPC formant shifting, harmony, and vocal effects—written in Rust and running live in WebAssembly.
“Twinkle Twinkle Little Star” by Dcoetzee
Four stages, from raw voice to rebuilt voice
Every stage runs in deterministic fixed-point math with zero heap allocation.
Pitch tracking
A coarse search finds the period on decimated audio, then a parabolic fit refines it to 1/64 of a sample.
Vocal-tract modeling
A 50th-order LPC fit captures the shape of the vocal tract, so pitch can move while the formants stay put.
Period-jump resynthesis
A fractional read cursor replays the history buffer, jumping exactly one pitch period and crossfading at the edges so phase never breaks.
Fixed-point runtime
Everything runs in 32-bit fixed point with no heap and no locks, so results do not depend on the platform's floating-point behaviour.
Embed tunelet anywhere
Run the same deterministic DSP graph in browser AudioWorklets, Node.js pipelines, or native Rust hosts.
import { loadTunelet, Tunelet } from "tunelet";
await loadTunelet();
const engine = new Tunelet(48000, 1024);
engine.process(dryInput, stereoLeft, stereoRight);