I'm a pianist who's always been obsessed with understanding how great players think through harmony. What voicings are they using? How do they voice lead through changes? What's actually happening under their hands?
Back in 2022, I built Harmonic Analyzer (https://www.youtube.com/watch?v=iNgSgvUmiOs) – a Mac app that used ML to transcribe polyphonic piano recordings. It got some traction, but I never quite finished it. Requiring users to download a Mac app felt like unnecessary friction, and I didn’t want to limit distribution to Mac users.
I just shipped Pianolyze (https://pianolyze.com), a complete rewrite that runs entirely in the browser.
Tech stack:
• ONNX Runtime hosting Bytedance's piano transcription model (https://github.com/qiuqiangkong/piano_transcription_inferenc...) • Web Workers for async transcription, exposed via Comlink • WebGL for piano roll rendering • Web Audio API for playback • IndexedDB for model caching • React + MobX State Tree
Nothing leaves your device. No servers, no uploads, no inference costs.
Try it: Just drag and drop any solo piano recording (MP3, WAV, FLAC, M4A). The model downloads once (~100MB), and then everything runs locally. It works best with solo recordings; accompaniment can confuse the model. Chrome and Safari work best, on desktop.
I'd love feedback on the UX, performance on different hardware, and how well it handles various recordings. Also happy to discuss the technical approach.
Here it is in action, transcribing the great Mulgrew Miller: https://www.youtube.com/watch?v=sWW-Z9_n8Mk