Hey folks!
i just completed a project I’ve been building: AI-Powered Maestro Finder — upload a MIDI or record a short solo piano clip and it guesses the composer (Bach / Beethoven / Chopin / Mozart) with confidence bars and a quick piano-roll. There’s an optional sheet-music view too.
Live app: https://ai-powered-maestro-finder.streamlit.app/
Code: GitHub - akthammomani/ai_powered_maestro_finder: Shazam-style composer ID for classical piano (MIDI or audio) with a compact CNN. Streamlit UI + Colab notebooks.
no MIDI handy? examples: ai_powered_maestro_finder/assets/examples at main · akthammomani/ai_powered_maestro_finder · GitHub
Under the hood:
(1) Frontend: Streamlit + a touch of CSS, Plotly for charts, OSMD for MusicXML rendering
(2) Model: compact CNN on 88×512 piano-rolls (8 fps), tuned with KerasTuner; ~98% test accuracy
(3) MIDI → piano-roll: pretty_midi at 8 fps, range A0–C8 (88 keys), binarized, padded/cropped to 512 frames.
(4) Recorded Audio → MIDI: Basic Pitch (ONNX) transcription, then the same piano-roll pipeline into the CNN.
(5) Piano-likeness filter: after transcription we analyze the roll (via pretty_midi) for mean polyphony, chord-frame ratio, unique pitch count, and note density; if it’s mostly monophonic/sparse, we warn (likely voice/whistle). We also run duration/RMS sanity checks on the raw audio.
(6) Stack: Python 3.11 · TensorFlow 2.19 · Keras 3.10 · pretty_midi · music21 · miditoolkit
Would love any feedback / bug reports / PRs.
Thank you!