Contour

Tracker

Contour does not convert your playing into MIDI notes. A note on/off pair with a single velocity cannot represent a pitch glide, a breath swell, or a vibrato wobble. Instead, the tracker emits a continuous stream of control signals, sampled 125 times a second, and the synth engine interpolates between them on every sample.

f0_hzContinuous pitch, sub-cent precision
f0_smooth_hzSlow pitch contour with vibrato removed
confidenceVoicing confidence, 0 to 1
envelopeFull loudness contour, not a single velocity
transientArticulation impulses — tongue attacks, consonants
brightnessNormalized spectral centroid
noisinessBreath and air-noise continuum, not a voiced/unvoiced flag
vibrato_rate_hz / vibrato_depth_centsDecomposed vibrato

Under the hood, a small neural model (SwiftF0) proposes a pitch candidate from a 16 kHz window of audio, and a DSP refinement stage narrows it to sub-cent precision with normalized autocorrelation. Confidence tracks how much the two stages agree — a clean, sustained tone sits near 1.0; breath noise, mouth noise, and silence pull it down.

Reading the trace

The pitch trace plots f0_hz against time, in semitones, alongside a spectrogram of the incoming audio.

Pitch trace and spectrogram panel
Pitch trace above, spectrogram below. Idle here — no input signal.

A steady voice or held note draws a flat line. Pitch bends and glides show as continuous slopes rather than a staircase of discrete notes. Vibrato shows up as a fine, regular oscillation riding on top of the underlying contour — that ripple is exactly what vibrato_rate_hz and vibrato_depth_cents decompose out of the trace. Low-confidence stretches (breath, consonants, silence) look thin or gap out rather than jumping to a wrong pitch.

Next: the synth panel.