- Get Involved
-
- Project tools
-
-
- How do I...
-
|
audiveris
Project home
Notice: the projects area will be down for network maintenance from 8 pm to 10 pm PDT, Saturday 7/28. We regret any inconvenience.
If you were registered and logged in, you could join this project.
Message from the owner(s)
A beta version of Audiveris 3.0 is now available for download, so that early users can try it and provide valuable feedback. Documentation manuals are being updated and will soon be made available.
Audiveris
Updated:
Current version 3.0 was released on 29-Jul-2007. Starting with version 3.0, Audiveris is now
a complete music scanner, going all the way from the scanned music sheet input to the
MusicXML output.
We would appreciate any feedback, in the form of suggestions or bug reports (please provide
the scanned image with your report, to help us analyze the program behavior).
Please note there is still room for external contribution, see the section below on
Foreseen Contributions.
Project Goals
Audiveris is an Optical Music Recognition (OMR)
module. Starting from the image of a music sheet, it provides
high-level logical music information compliant with the MusicXML
definition. Other tools such as a Midi Sequencer, or a
Composition Editor can then read and update this standard
data.
There are already commercial tools in this area but Audiveris
is, to our knowledge, the first Java open-source OMR tool. It is
a cross-platform tool, written entirely in Java, and tested on
Windows, Solaris, Linux and Mac OS (Mac test is on-going).
Audiveris works with printed music sheets only, the task of
recognizing hand-written scores being significantly harder.
|
Current Status
Starting with version 3.0, Audiveris is now a fully functional
music scanner. Since there may still be remaining errors in the
translation, the program offers the user the ability to guide
the translation on the fly. It can also take advantage of
user-supplied data in order to further train its internal neural
network, and thus improve the glyph recognition task.
More detailed information is available in the provided manuals,
but here are the main phases of the application:
- Detection and correction of potential skew angle of
the sheet,
- Removal of staff lines, detection of systems, staves
and measures,
- Extraction of individual music
items, essentially based on their appearance and
their structure,
- Music translation based on the
extracted music items, and essentially driven by music
grammar,
- Manual correction of unavoidable remaining
errors,
- Export of logical music information, using the MusicXML
format definition,
- Finally, any other application able to read / write
MusicXML format can be chained to it.
There is still room for improvement in this program but the
internal architecture is now fairly stable and robust enough to
be used and augmented by people willing to contribute.
|
Foreseen Contributions
Here are a few ideas of contribution that would make sense and
be really appreciated:
- Rather easy
- Validate Audiveris on other platforms than Windows,
Solaris or Linux. Some people volunteered
for Mac OS (Brenton Partridge is actively
working on it).
- Integrate with a MusicXML player such as Xenoage
of Andreas Wenger.
- More significant
- Find and integrate an open-source OCR (Optical
Character Recognition), preferably in Java, in order to
handle the various text pieces (typically lyrics) which
for the time being are simply discarded.
- Integrate with a Visual Music Editor for manual
correction, for printing, etc. Audiveris has only an
embedded rudimentary editor. For example Xemo would be
a natural partnering tool, however the Xemo site doesn't
seem active anymore.
- Evaluate a move to NetBeans (the platform,
not the IDE). This would move Audiveris stand-alone
application to a much better integration environment,
taking advantage of view and parameter management. This
could also ease the integration with visual
editors.
- Fairly difficult
- Consider addressing hand-written scores. This
domain could take benefit of a significant part of
Audiveris framework, however this would really be a
project on its own. To be discussed if anyone is
interested by this daunting task.
|
|
Download
-
The
download area always contains the latest
stable release, provided as one single archive
for jar files, source code, documentation and
training material.
-
The CVS
repository gives you access to the very
latest version of all software pieces, even
before they get packed in a stable release.
|
Documentation
All documentations are bundled with the source archive
above. They are also available on-line here:
|
Release notes |
The chronology of development activities. |
|
Installation |
Informations to set the software up and
running. |
|
Example |
Quick start example. |
|
Operation |
How to operate
the software as an end-user. |
|
Design |
Key decisions made on music extraction and
translation. |
|
Implementation |
How the software is organized internally. |
|
Notes |
A collection of tiny notes on Audiveris evolution. |
|
API |
The Javadoc pages of all classes. |
|
Implementation
Audiveris is a pure Java stand-alone application (about 260
classes for 85000 lines of Java code)
- Techniques
- Linear Adjacency Graphs (LAG) record pixel
information as a directed graph structure, composed
of pixel contiguous runs organized in sections.
- Sticks are developed above LAGs to take
advantage of the structuring sticks of a music sheet
(staff lines, ledgers and legato signs are such
horizontal sticks, while stems and barlines are
vertical sticks).
- A Neural Network allows efficient pattern
recognition as well as training based on user input
for continuous improvement of the tool
efficiency.
- Technologies
- Java Advanced Imaging (JAI) for number crunching in
image processing (loading image, accessing pixel data,
rotating the image, etc)
- Swing or user interface,
with JGoodies enhancements in terms of forms
and look & feel.
- JFreeChart for charts.
- JAXB 2 for XML persistency.
- Jama for linear algebra in Java.
- Java 6 is the preferred choice for Java,
since JAXB 2 is already integrated in this
distribution.
- Companions
- ProxyMusic is a separate project, dedicated
to the marshalling between Java objects and MusicXML
files. Audiveris today supports MusicXML V1.1 and
will soon support MusicXML V2.0 which Recordare has
just released. Please refer to
https://proxymusic.dev.java.net
|
|
|