Audiveris

Sunday, January 11, 2009
Description
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.

Audiveris works with printed music sheets only, the task of recognizing hand-written scores being significantly harder.

Since versions 3.x, Audiveris is a fully functional music scanner. Because 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:

  1. Detection and correction of potential skew angle of the sheet,
  2. Removal of staff lines, detection of systems, staves and measures,
  3. Extraction of individual music items, essentially based on their appearance and their structure,
  4. Music translation based on the extracted music items, and essentially driven by music grammar,
  5. Manual correction of remaining errors,
  6. Export of logical music information, using the MusicXML format definition,
  7. Direct playback using a MusicXML/MIDI interface,
  8. Finally, any other application able to read / write MusicXML format can be chained to the output of Audiveris.

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.

Licence
GNU General Public License (GPL v. 2.0)

Location
https://audiveris.dev.java.net/

Gervill - Software Synthesizer

Description
"Gervill" is a software sound synthesizer which was created as a proposal for the Audio Synthesis Engine Project.

Gervill was designed to be generic synthesizer for Java.
By adding gervill.jar to your classpath you should be able to load SoundFonts/DLS files using MidiSystem.getSoundBank().
And MidiSystem.getSynthesizer() should return instance of Gervill Synthesizer.

Advanced features of Gervill are accessed thru the AudioSynthesizer interface.
Warning! This interface may change or be moved in future.

Gervill has been tested successfully with these applications:


Gervill project mainly consists of 3 modules:

  • The SoundBank Readers/Writers

    Made of these classes:
    com.sun.media.sound.DLS*
    com.sun.media.sound.SF2*
    com.sun.media.sound.AudioFileSoundbankReader

    There is a one SoundBank reader/writer for each soundbank format which Gervill supports.
    Currently there are 2+ formats supported:
    DLS, SoundFonts and Audio Files.

  • The Internal Instrument Model

    Made of these classes:
    com.sun.media.sound.Model*

    All the soundbank readers above implements the internal instrument model.

  • The Synthesizer

    Made of these classes:
    com.sun.media.sound.Soft*

    The heart of the code. Here is where we have resamplers, filters, mixing, tuning,
    voice/channel managament, control routing, midi messages parsers.


Licence
GNU General Public License (GPL v. 2.0)

Location
https://gervill.dev.java.net/

JFrets

Description
This project aims to create a guitar training and tab writing software. It displays the note/chord and plays the sounds as well. The user can also create their own songs by using the graphical neck to select the notes, and they are translated into guitar tablature. You can create songs by creating song parts and add the note names to the parts. You them just add the parts to create a song.

Licence
GNU General Public License (GPL v. 2.0)

Location
https://jfrets.dev.java.net/

JFugue

Description

JFugue is an open-source Java API for programming music without the complexities of MIDI.

JFugue makes programming music this easy:

Player player = new Player();
player.play("C D E F G A B");
See more examples | Learn how to get started

In addition, JFugue provides many more features:
Read more about features | See the Complete Guide

  • Music Strings let you specify notes, chords, instruments, tracks. More...
  • Music can be played at runtime, or saved to and opened from MIDI files
  • Music can be sent to and received from external devices: keyboards, mixers, etc.
  • A "Pattern" of music can be transformed and manipulated in interesting ways
  • Support for microtonal music, intuitive rhythm tracks, anticipating musical events
  • Other music parsers and renderers can be easily integrated into the JFugue architecture

JFugue is ideal for applications in which music is generated at run-time, such as:

Using JFugue is also a great way to inspire future programmers, and to experiment with music theory and composition.

Licence
Unknow

Location
http://www.jfugue.org/