Test models on a pitch-matching task
I built harPY to measure how models use audio and pitch controls to reach a target note. Connect a general-purpose model or pitch estimator through a Python actor.
Run a baseline comparison
harpy evaluate \
--actor waveform-fft \
--actor spectrum-peak \
--suite smoke \
--output runs/comparison.json
harpy summarize runs/comparison.jsonSix shared episodes per actor.
Install and run →Pitch estimation under noise
Play the source tone, the target note, and each method's final tone. Select Clean to hear the same episode without added noise.
Source: 333.073 Hz.
Target: A3, 220 Hz. Actors receive the target note, not its audio.
Final pitch error
- Point-sampled spectrum
- −402 cents
- Waveform FFT
- −2 cents
100 cents = one semitone. Negative values mean flat.
View all eight conditions
Listen: source, target, then each final tone. Reconstructed audio.
Listen individually & inspect the saved actions
The A3 reference is for you to hear; actors receive a symbolic target. Audio is reconstructed from recorded states, shortened to two seconds, and faded at each end.
Download audio (WAV)
Clean
Source · Target · Spectrum final · FFT final
Noise (10 dB SNR)
Source · Target · Spectrum final · FFT final
States are derived from the saved actions. One fixed initial estimate per actor; this is not a captured per-step inference trace. Animation speed is illustrative.
Episode: spectrum-preservation-20260908-iid-09-01
Saved actor identities: legacy-point and quadratic-fft.
Replay data · Reconstruction provenance · Full noisy figure
Run it locally
Install the package, run a comparison, then add your own model or actor.
Getting started Contributing