Soprano Recorder Tutor
An interactive web app for beginners to learn the soprano recorder: upload a scanned score or photo, the backend (Audiveris in Docker) extracts music note list, and the frontend plays the tune, highlights notes on the staff, and displays the fingering for each note with practice controls (slow, loop, change octave).
Motivation & goals
I dont want to learn notes, but i have will to play some songs on Recorder so i set such goals for my project.
Help absolute beginners get started with soprano recorder quickly.
Provide immediate audio playback of written notes.
Show fingerings for each note and a practice mode (loop, slow tempo, metronome).
Create a reproducible pipeline using Docker so the analysis is portable.
There main core feautures that i have tryed to implement here.
Upload image/PDF of sheet music.
Backend recognition using Audiveris (runs inside Docker).
Return JSON note list.
Frontend sheet renderer (JSON → rendered score).
Note-by-note playback synchronized with score highlight.
Fingering diagrams for soprano recorder, per pitch.
Practice tools: tempo control, loop selection, octave changing
Save / export MIDI (not yet).
Architecture
Frontend: HTML, JavaScript, CSS, recorder fingering component.
API / Backend: Flask / Quart.
Recognition service: Audiveris running inside Docker.
Optional: worker queues for each Docker container (scaling with container count).
- Deployment: Docker Compose for local/development; Kubernetes for production.
Frontend components
I’ve tryed to make simple and user friendly design. Main components:
Upload page: drag-and-drop, show accepted file types.
Processing status: spinner, progress(should be).
Score viewer: Js updated list.
Player: play/pause, tempo slider, loop selection, octave changing.
Fingering panel: static webpg recorder diagram; highlight holes for each note; show left/right hand labels.
Also, I just found out that I can play this song on the recorder.