Skip to content

Audiveris/audiveris

Repository files navigation

Logo by Katka

Audiveris - Open-source Optical Music Recognition

The goal of an OMR application is to allow the end-user to transcribe a score image into its symbolic counterpart. This opens the door to its further use by many kinds of digital processing such as playback, music edition, searching, republishing, etc.

The Audiveris application is built around the tight integration of two main components: an OMR engine and an OMR editor.

  • The OMR engine combines many techniques, depending on the type of entities to be recognized -- ad-hoc methods for lines, image morphological closing for beams, external OCR for texts, template matching for heads, neural network for all other fixed-size shapes.
    Significant progresses have been made, especially regarding poor-quality scores, but experience tells us that a 100% recognition ratio is simply out of reach in many cases.
  • The OMR editor thus comes into play to overcome engine weaknesses in convenient ways. The user can preselect processing switches to adapt the OMR engine before launching the transcription of the current score. Then the remaining mistakes can generally be quickly fixed via the manual editing of a few music symbols.

Key characteristics

  • Good recognition efficiency on real-world quality scores (as those seen on IMSLP site)
  • Effective support for large scores (with up to hundreds of pages)
  • Convenient user-oriented interface to detect and correct most OMR errors
  • Available on Windows, Linux and MacOS
  • Open source

The core of engine music information (OMR data) is fully documented and made publicly available, either directly via XML-based .omr project files or via the Java API of this software.
Audiveris comes with an integrated exporter to write (a subset of) this OMR data into MusicXML 4.0 format. In the future, other exporters are expected to build upon OMR data to support other target formats.

Stable releases

On a rather regular basis, typically every 6 to 12 months, a new release is made available on the dedicated Audiveris Releases page.

The goal of a release is to provide significant improvements, well tested and integrated, resulting in a software as easy as possible to install and use:

  • for Windows, an installer is provided on Github;
    The installer comes with pre-installed Tesseract OCR languages deu, eng, fra and ita.
    But it requires Java version 17 or higher to be available in your environment. If no suitable Java version is found at runtime, a prompt will ask you install it.
  • for Linux, a flatpak package is provided on Flathub;
    The package comes with pre-installed Tesseract OCR languages deu, eng, fra and ita.
    The needed Java environment is included in its packaging, therefore no Java installation is needed.
  • for MacOS, unfortunately, we have nothing similar yet 1 -- for now, you have to build from sources as described in the following section on Development versions.

See details in the related handbook section.

Development versions

The Audiveris project is developed on GitHub, the site you are reading.
Any one can download, build and run this software. The needed tools are git, gradle and a Java Development Kit (jdk), as described in this handbook section.

There are two main branches in Audiveris project:

  • the master branch is GitHub default branch; we use it for releases, and only for them;
    To build from this branch, you will need a jdk for Java version 17 or higher.
  • the development branch is the one where all developments continuously take place; Periodically, when a release is to be made, we merge the development branch into the master branch;
    As of this writing, the source code on development branch requires a jdk for Java version 21.

See details in the Wiki article dedicated to the chosen development workflow.

Further Information

Users and Developers are advised to read Audiveris User Handbook, and the more general Wiki set of articles.

Footnotes

  1. If you wish to give a hand, you are more than welcome!