How trumanchho/omr-jianpu-melody-generator works
OMR Melody Generator turns uploaded Jianpu sheet images into editable symbol tokens and downloadable, playable MIDI. The principal workflow runs from image upload through server-side segmentation and CNN classification, then token editing and MIDI generation. The README also describes training, playback, and image preview. Source excerpts establish the upload and generation calls; some UI features are documented but their implementation was not sampled.
Main entry points: server.py OMR endpoint · CharGrid.tsx Symbol editor · ImageList.tsx Image uploads · App.tsx Scanner app
Components 17
Web application
- Scanner app
omr-project/src/App.tsx - Image uploads
omr-project/src/components/ImageList.tsx - Symbol editor
omr-project/src/components/CharGrid.tsx - Symbol grid state
omr-project/src/contexts/charGridContext.tsx - Token state
omr-project/src/contexts/tokenContext.tsx - Prediction state
omr-project/src/contexts/isPredictingContext.tsx
Recognition backend
- OMR endpoint
flask-server/server.py - Image segmentation
flask-server/generate.py - Symbol classifier
flask-server/generate.py - Class labels
flask-server/variables.py
Melody output
- Token parsing
flask-server/melody_generator.py - MIDI generation
flask-server/melody_generator.py - Generated MIDI
- Melody playback
omr-project/src/components/CharGrid.tsx
Model training
- Trained CNN
flask-server/jianpu.model.keras - Model training
flask-server/train.py
Other components
- Musician
Connections 28
- Musician → Image uploads: uploads score
omr-project/src/components/ImageList.tsx - Scanner app → Image uploads: renders
omr-project/src/App.tsx - Scanner app → Symbol editor: renders
omr-project/src/App.tsx - Image uploads → OMR endpoint: posts image
omr-project/src/components/ImageList.tsx - OMR endpoint → Image segmentation: segments image
flask-server/server.py - OMR endpoint → Image uploads: returns preview
flask-server/server.py - OMR endpoint → Symbol editor: returns symbols
flask-server/server.py - Symbol editor → OMR endpoint: requests predictions
omr-project/src/components/CharGrid.tsx - OMR endpoint → Symbol classifier: classifies symbols
flask-server/server.py - Symbol classifier → Class labels: uses labels
flask-server/generate.py - Symbol classifier → Trained CNN: loads model
README.md - Model training → Class labels: uses labels
flask-server/train.py - Model training → Trained CNN: trains model
README.md - OMR endpoint → Token parsing: parses tokens
flask-server/server.py - OMR endpoint → MIDI generation: generates MIDI
flask-server/server.py - Token parsing → MIDI generation: provides parsed tokens
flask-server/server.py - MIDI generation → Generated MIDI: writes file
flask-server/melody_generator.py - OMR endpoint → Symbol editor: returns predictions
omr-project/src/components/CharGrid.tsx - Symbol editor → Generated MIDI: downloads MIDI
omr-project/src/components/CharGrid.tsx - Symbol editor → Melody playback: plays melody
README.md - Scanner app → Symbol grid state: provides state
omr-project/src/App.tsx - Scanner app → Token state: provides state
omr-project/src/App.tsx - Scanner app → Prediction state: provides state
omr-project/src/App.tsx - Image uploads → Symbol grid state: updates grid
omr-project/src/components/ImageList.tsx - Image uploads → Token state: updates tokens
omr-project/src/components/ImageList.tsx - Symbol editor → Symbol grid state: reads and updates
omr-project/src/components/CharGrid.tsx - Symbol editor → Token state: reads and updates
omr-project/src/components/CharGrid.tsx - Symbol editor → Prediction state: tracks prediction
omr-project/src/components/CharGrid.tsx