Coder Social home page Coder Social logo

proxymusic's Introduction

proxymusic

ProxyMusic allows to marshal/unmarshal Java objects in memory to/from MusicXML 3.0 data in a Document, a stream or a file.

This binding provides an easy way for Java programs dealing with music symbolic information (such as score scanners, music editors, music sequencers, etc) to read or write files in MusicXML.

ProxyMusic supports the following MusicXML features:

  • Marshalling/unmarshalling of ScorePartwise
  • Marshalling/unmarshalling of Opus
  • Handling of standard (uncompressed) .xml files
  • Handling of compressed .mxl files

Implementation

All MusicXML elements and attributes are implemented as 250+ Java classes that are automatically generated from the MusicXML defining shema as found on its vendor site.

The main advantage of this automated approach is to result in an efficient and error-free implementation.

Building

Building ProxyMusic is easily achieved with the following terminal command:

mvn clean install

This command will (re)build the ProxyMusic Maven artifacts (binary, source and doc), taking as input the schema definition files src/main/xsd/musicxml.xsd and src/main/xsd/opus.xsd.

Usage

The latest ProxyMusic release is available on Maven Central and thus can be easily integrated in a Gradle or Maven build. Alternatively, it's possible to build a local artifact.

A utility class, named proxymusic.util.Marshalling, is available to ease the handling of both marshalling and unmarshalling of ScorePartwise and Opus entities.`

A few examples of use:

  • A small example is available in the proxymusic.util package in the test branch, its name is proxymusic.util.HelloWorldTest.java. This example performs marshalling and unmarshalling of the classical HelloWorld as available in the MusicXML tutorial.
  • Another small example, focused on the marshalling and the unmarshalling of a part-list element, is available as proxymusic.util.ScorePartTest.java.
  • For marshalling and unmarshalling Opus entities, see simple proxymusic.opus.OpusTest.java example or more realistic proxymusic.opus.MxlOpusTest.java example.
  • For dealing with compressed .mxl files, see proxymusic.mxl.MxlTest.java example or proxymusic.opus.MxlOpusTest.java.
  • A real size example is provided by the companion Audiveris project. Audiveris is an Optical Music Recognition software (OMR) which uses ProxyMusic to handle the marshalling layer. For detailed information, refer to Audiveris ScoreExporter and PartwiseBuilder Java classes.

proxymusic's People

Contributors

hbitteur avatar maximumspatium avatar kieve avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.