The ReadScoreLib Optical Score Recognition system


ReadScoreLib is a cross-platform library for converting multi-page printed musical score images to MIDI and MusicXML, as seen in the PlayScore 2 App.  ReadScoreLib is ideal for mobile apps as well as Mac and PC applications as it can compensate for the lighting and geometric distortions produced by device cameras. ReadScoreLib is available on OS X, iOS, Android and Windows.

The ReadScoreLib SDK comes with a language interface appropriate for the platform – Java for Android, Swift for iOS, C for Windows.  There is also sample app source code to get you started.

ReadScoreLib generates MusicXML following the format of the original music, including cross-staff beaming and other refinements. Slurs, ties, articulations, hairpins and dynamics are supported and ReadScoreLib is the only Optical Music Recognition product to support tremolo notation. Grace and cue sized notes are also supported, with grace notes interpreted correctly.

Like the PlayScore 2 app, ReadScoreLib generates MIDI that really sounds like music.  The rhythms come out faithfully and there is no jerky stopping and starting typical of OMR systems.  Triplets sound correct and cross rhythms, syncopations etc are correctly interpreted.  Articulations are followed, with trills and turns played naturally.

The generated MusicXML preserves the layout and formatting of the score.  Braces and brackets, repeats and second endings, articulation, slurs and ties, pauses, tremolos, dynamics and voice allocation all follow the original.  The ReadScoreLib development team is working all the time to support new symbols and idioms.

ReadScoreLib can correct inconsistencies and missing information found in many scores. Printed music is often an incomplete description of the intended performance, leaving much to the intuition of the human reader. A typical page of printed music may lack a time signature and rests in some of the parts. It may contain triplets and duplets not marked as such and notes misaligned with their intended beat. As a result traditional OMR output can render poorly as MusicXML and sound jerky and unmusical. ReadScoreLib makes up for these deficiencies and generates a MIDI file which sounds continuous and musical.

ReadScoreLib makes use of vertical and horizontal information throughout the score to improve recognition generally.  This is why the recognition of multi-page complex music is as good or better than simple music.  ReadScoreLib performs global time and key analysis to improve key and rhythmic stability.  Bars and arcs spanning systems and pages are supported.

The ReadScoreLib SDK is easy to use and to incorporate into an app or a PC/Mac application using the sample app that comes with the SDK.

ReadScoreLib processes a typical page of music in a few seconds on the iPad, less on a modern Mac or PC.  See detailed information HERE

ReadScoreLib evaluation and licensing

You can evaluate ReadScoreLib first by downloading PlayScore 2 Pro for iOS (iOS uses the most up to date ReadScoreLib version).  You can photograph music with the camera, but you can also import scans and images scanned or derived from PDF files etc.  And you can save the resulting MIDI and MusicXML.

If you would like to discuss licensing, please email and we will come right back to you.  For in-depth evaluation we supply an evaluation version of the ReadScoreLib SDK on the required platform(s).

Optional extended features

The extended features below can be licensed as part of the API and are invoked through extended ReadScoreLib API calls.

Tremolo/tremolando *** Tremolo now comes as standard in all versions of ReadScoreLib ***
This includes the notations including:

1) stem strokesplays_1
2) joined and separated alternating plays_2
3) alternative notations plays_3

Bounding box and ID
This feature lets you obtain the exact locations and bounding rectangles on the page for every recognised object. This is provided in the form of a separate file listing coordinates and IDs for each object and referencing the generated MusicXML. Comments in the XML provide the same information . default-x and default-y are also supported.

Lens feature
This allows you to access the pre-processed image generated internally by ReadScoreLib in preparation for analysis. This is a thresholded image with photographic distortions removed. This image is easier for a human to read than a photograph and will be useful in certain kinds of application.

Text OCR
This allows lyrics, directions, instrument names, tempo indications etc. to be recognised and incorporated into the MusicXML.  Please note that dynamics are recognised independently and are part of the core API.

The SeeScore SDK for MusicXML rendering

The SeeScore SDK is a compatible MusicXML rendering library also available for licensing.  A free evaluation download is available at