soundclone
Give it a recording of a synth sound and it returns a Vital preset that makes that sound.
Working on my Mac. Measured on seven test sounds (five synthesized, two macOS alerts), not yet checked by ear.
4 of 6 random presets where a blind test got the pitch right

- Where
- Personal project
- Role
- Design and build
- Built with
- Python, a headless build of Vital (open source, GPLv3), CMA-ES
What I made
Matching a sound by ear is slow, and you never know how close you got. The tools that do it are Windows-only, tied to one paid synth, or research code you train first.
I built Vital from source with a small patch so it renders presets with no window open, about 50 ms each, 13 at once. The tool trims and levels the recording, finds its pitch, then searches 48 settings for the closest preset.
48synth settings searched per sound
50 msto render one preset, 13 at once
What came out of it
Splitting the search
The first version searched everything at once and barely beat random guesses. Splitting the on/off choices from the continuous knobs, then tuning each in turn, cut the pluck's loss from 1.08 to 0.63.
Loss after the reworked search, by test sound
FM bell: Partials roughly right, the shimmer missing.
| Label | Value |
|---|---|
| Kick | 0.17 |
| Pad | 0.56 |
| Pluck | 0.63 |
| Acid bass | 0.64 |
| FM bell | 0.97 |
Where it lands
The kick, pluck, pad and bass look close on the spectrograms. In a blind test on six random presets, pitch came out right on four.
Where it's going
The complete version builds the oscillator's wavetable from the target's own harmonics instead of searching a fixed set, and every match is checked by ear as well as on a chart.
- NowA fixed searchTwo oscillators, noise, a filter, envelopes and effects, 48 settings.
- Wavetables from the targetThe oscillator is built from the recording's own harmonics.
- Checked by earEach match is listened to against the target, not only measured.