A web application for real-time score following. Upload a music score (MusicXML, MEI, or PDF) and follow along as you play, with synchronized highlighting powered by Matchmaker (ISMIR 2024 Late Breaking Demo).
- Real-time score following with Audio or MIDI input
- Multiple alignment algorithms: arzt, dixon, hmm, pthmm, outerhmm, audio_outerhmm
- Simulation mode: upload a performance file (audio/MIDI) and play back with pre-computed alignment
- Score formats: MusicXML, MEI (via Verovio), PDF (via Audiveris OMR)
- Visual feedback: note cursor + measure highlighting
- Python 3.12 (conda recommended)
- Node.js 20+
- FluidSynth and PortAudio (system libraries required by
pyfluidsynthandpyaudio) - Audiveris (optional, for PDF score support — download from releases, no separate Java installation needed)
# macOS
brew install fluidsynth portaudio
# Linux
sudo apt-get install fluidsynth portaudio19-devconda create -n matchmaker-demo python=3.12
conda activate matchmaker-demo
cd backend/
pip install -r requirements.txtcd frontend/
npm install# Start both backend and frontend
./start_app.shOr start separately:
# Backend (http://localhost:8000)
cd backend/
conda activate matchmaker-demo
uvicorn app.main:app --reload --port 8000
# Frontend (http://localhost:50003)
cd frontend/
npm startOpen http://localhost:50003 in your browser.
The first startup may take longer as
partituradownloads required soundfonts.
- Upload a score — MusicXML (.xml, .musicxml), MEI (.mei), or PDF (.pdf)
- Optionally add a performance file — audio (.mp3, .wav) or MIDI (.mid) for simulation mode
- Select input type and algorithm — choose Audio/MIDI device and alignment method
- Play — the score cursor follows your performance in real-time
Upload a pre-recorded performance file alongside the score to run in simulation mode. Instead of listening to a live input, the app:
- Runs the selected alignment algorithm offline against the performance file
- Produces a time-aligned mapping between the audio/MIDI and the score positions
- Plays back the performance audio with synchronized score highlighting
Select an algorithm and click Run Simulation to compute the alignment. Once complete, press Play to start playback. The score cursor and measure highlight move in sync with the audio. You can switch algorithms and re-run to compare different alignment results.