Optical music recognition (OMR) takes images of sheet music and turns them into playable, editable music that you can build into your application.

About ReadScoreLib

What is ReadScoreLib?

ReadScoreLib is fast and highly accurate cross-platform OMR library designed to be built into 3rd part software.  Whether deployed as a server or in-application ReadScoreLib delivers the very highest standard of accuracy and coverage available today.

How does it work?

Whether PC, Mac, iOS or Android, ReadScoreLib comes with an easy-to-integrate API for each chosen platform.  Simply call ReadScoreLib with pages of music notation and receive the equivalent MIDI and MusicXML in seconds.

Is it accurate?

Yes, ReadScoreLib is accurate.  For normal printed/engraved music notation ReadScoreLib is at least as accurate as any music scanner available today.

Is it fast?

Yes, very fast.  Most pages take approx. 1 second on an iPhone 12 or a modern PC.  With our multi-core API it is much faster.

Does ReadScoreLib generate MusicXML?

Yes, ReadScoreLib generates MusicXML reflecting every detail of the music layout, right down to cross-staff and over-measure beaming.

Can the results be played?

Yes, ReadScoreLib generates a MIDI file that plays the music as printed.

How can ReadScoreLib be deployed?

ReadScoreLib can be deployed as a server, or it can be built directly into application software.  ReadScoreLib does not itself contact any outside server and does not require an internet connection.

What does ReadScoreLib cost?

ReadScoreLib is licensed through an annual subscription. Contact us for details.

Where can I see ReadScoreLib?

To see what RS ReadScoreLib L can do download our ReadScoreLib app PlayScore 2 from the Apple App Store or Google Play.  PlayScore 2 uses ReadScoreLib  and lets you load music images or PDF scores, and export the resulting MIDI and MusicXML.


ReadScoreLib understands Common Western Notation, that is mainstream printed/engraved music from the last few hundred years.  Handwritten music is not supported.

  • Bars, notes, rests, accidentals including double and cautionary accidentals
  • Bars, notes, rests, accidentals including double and cautionary accidentals
  • Tuplets: triplets, duplets, quintuplets, septuplets etc (both marked and implied)
  • Staff bracketing: grand staff braces, grouped staff brackets etc
  • Measures: bar lines, double bar lines, repeats, 1st and 2nd ending, bars spanning systems and pages
  • Anacruses, compliment anacruses
  • Dynamics: f, ff, fff, fz, fp, mf, p, pp etc
  • Hairpins (crescendos and diminuendos)
  • Articulation (>, ^, . – etc)
  • Ornaments trills, turns, mordents, shakes etc
  • Tremolo: note strikethrough, alternating, beamed alternating white notes etc
  • Special symbols: fermata, repeat-bar, ottava etc
  • Fingering for piano, violin etc
  • Arcs: slurs, ties
  • Clefs (system and inline): treble, bass, tenor, alto, soprano etc
  • Key changes: system, inline, cautionary
  • Time signatures: system, inline, cautionary and implied

Yes, but you must supply an external OCR library.  There are many licensable OCR systems available and most platforms now provide OCR as part of the operating system.

ReadScoreLib comes in a version for each platform that supports the language generally used on that platform.

ReadScoreLib for iOS – Swift

ReadScoreLib for Android – Java

ReadScoreLib for Mac – Objective C

ReadScoreLib PC – C

The MusicXML produced by ReadScoreLib can be read by any music layout engine such as flat.io or our own companion product SeeScoreLib.  SeeScoreLib is very fast and does a beautiful job of rendering music.  SeeScoreLib is also supported on the full range of platforms.

But you can just as easily choose to display the static music page images as published.  ReadScoreLib provides a full range of APIs to let your users interact with the visual music, just as PlayScore 2 does.

Why Optical Music Recognition?

Today a vast range of apps and applications exist that do something with music notation.  Whatever the application does, whether it displays music, edits music, plays music or teaches music, the music has to come from somewhere.  Usually that is either

  • From a fixed library that comes with or through the app

  • Supplied by the user, scanned in, imported, downloaded or purchased

If the music comes from a fixed library it can be handled flexibly by the app.  The app can reformat to suit the user, it can be marked up for interactive playing, the app can accompany an instrument or a voice etc.  But the music available probably won’t be exactly what the user wants.  The piece might not be available, or in the edition the choir is using, or arranged for the right instrument.

On the other hand if the app can scan in or import music from anywhere, there is no limit to what can be accessed.  But now the app can’t do anything that requires knowledge of the music.   To the app the music is just a series of pictures.  All it can do is show them.

This is where OMR comes in.  An OMR enabled application has the best of both worlds: it can accept music from anywhere, but it can also handle it flexibly – reformat, play, and generally interact.

Today with ReadScoreLib, OMR is easy to integrate into any application that already uses MusicXML, but  ReadScoreLib also works well for applications that simply display the music pages as published.   ReadScoreLib includes APIs that let your users interact with the music just as PlayScore 2 does.  ReadScoreLib can tell you exactly what musical symbols are on the page, including their accurate bounding boxes.  And it can relate those graphical symbols to beats in the bar.  This allows tee application to provide a rich interactive environment.

Contact Us