"Audio analysis isn't hard or easy. It's a ramp — and you build on the gentle end."
The Spectrum, Not the Monolith
The fatal mistake is treating 'analyze the audio' as one big undifferentiated problem of fixed difficulty. It isn't. It's a spectrum, and the two ends behave completely differently:
Tier A (automatic, mature) Tier B (semi-automatic, rough)
-------------------------- ------------------------------
tempo / beat grid note-for-note solo transcription
key (every note of a lead, exactly)
chord progression
sections (verse / chorus)
stem separation (Demucs)
-> solved MIR; sits in the -> even Capo does this semi-automatically;
engine's heart Pippa proposes, human confirms; never
a hard dependency
Tier A: Solved Enough to Build On
Tempo, key, chords, sections, and stem separation are mature music-information-retrieval. Capo is the living proof that audio → chords/key works well enough to ship. So Bonfire reuses mature open source (librosa, madmom, essentia, Demucs) for these and puts them in the engine's heart. They're not perfect — that's what Tier 5's human-in-the-loop lesson is about — but they're solid enough to be load-bearing.
Tier B: Real, but Never Load-Bearing
Note-for-note transcription — naming every pitch of a fast lead — is genuinely hard. Even Capo does it semi-automatically: you pick notes off a spectrogram. Bonfire's stance is that Tier B is allowed to exist as a Pippa-proposes / human-confirms helper, but the app's value must never depend on it. The day a core feature requires perfect Tier B output is the day the app becomes un-shippable.
The Lesson Guitopia Paid For
Bonfire's dead predecessor, Guitopia, conflated the tiers. It aimed its ambition at audio-sync and pitch-detection — Tier B work — and in six days shipped none of it. The difficulty it bet on was the difficulty that froze it. Bonfire starts from the opposite end: build everything valuable on Tier A, and let Tier B be a bonus that can fail without taking the app down.