The Patchbay_

Basic Pitch vs CREPE

Both estimate pitch from audio, and they are not substitutes. Basic Pitch transcribes polyphonic music to MIDI; CREPE tracks a single fundamental with very high accuracy.

Short answer. Want MIDI out of a recording, possibly polyphonic → Basic Pitch. Need a precise pitch curve from a monophonic source → CREPE.

Side by side

Basic Pitch CREPE
PolyphonyYesNo — monophonic only
OutputMIDI notesPitch curve over time, with confidence
TaskTranscriptionFundamental frequency estimation
Pitch bendCapturedContinuous by nature
Typical useAudio → MIDI for a DAWAnalysis, tuning, synthesis control
WeightLightLight
LanguagePythonPython
LicenseApache-2.0MIT
PlatformsmacOS Windows LinuxmacOS Windows Linux
First released20222018
MaintainedYesNot actively maintained (last activity 2024)

Where they actually differ

Notes against a curve

Basic Pitch decides where notes start and stop and gives you MIDI. CREPE gives a continuous frequency estimate per frame with a confidence value, and never decides what a "note" is. If you want to open the result in a DAW, that is Basic Pitch; if you want to analyse intonation or drive a synth, that is CREPE.

Polyphony is the hard constraint

CREPE assumes one pitch at a time. Give it a chord and the answer is meaningless. Basic Pitch handles polyphonic material, which is why it works on real recordings.

CREPE is more accurate where it applies

On clean monophonic audio, CREPE’s frame-level accuracy is excellent — better than what you would extract from Basic Pitch’s note output. Precision on a single line is exactly its design goal.

Separation helps both

Running Demucs first to isolate a stem improves results substantially, and it is what makes CREPE usable on material that started out polyphonic.

Which should you choose?

Choose Basic Pitch when…

Choose CREPE when…

Basic Pitch detailsCREPE detailsAll ML & generative

← All comparisons