tunelet

Vocal DSP with tunelet

Pitch correction, LPC formant shifting, harmony, and vocal effects—written in Rust and running live in WebAssembly.

Documentation

Pitch Correction

Audio stopped

“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.

  1. Pitch tracking

    A coarse search finds the period on decimated audio, then a parabolic fit refines it to 1/64 of a sample.

  2. Vocal-tract modeling

    A 50th-order LPC fit captures the shape of the vocal tract, so pitch can move while the formants stay put.

  3. 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.

  4. 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);