Features
The MusicXML Tasks application:
MusicXML 4.0 Relational Database
The relational database is a mapping of the MusicXML 4.0 schema definition.
The database stores all information found in any valid MusicXML document.
A database setup is required for any conversion to or from a database. The tool is configured to use MySQL, PostgreSQL, and Oracle XE (Express Edition).
On the first successful database connection test or successful database conversion attempt, all of the MusicXML database tables are created in the schema as set in the tool's DB Settings tab.
Using the Database
I've included a section in the guide called "Using the Database" that gives an example of how the MusicXML relational database can be used with reporting software to give a visual representation of score data.
In fact, any application that uses SQL statements to query relational data can be plugged into the MusicXML data set because of its use of the SQL standard.
Tasks Interface
MusicXML Tasks is an interface to the MusicXML relational database.
The MusicXML Tasks interface can also:
* Validate a MusicXML file against the MusicXML 4.0 schema
* Compress a MusicXML file
* Perform conversions:
  MusicXML -> Database
  MusicXML -> LilyPond
  MusicXML -> PDF
  Database -> MusicXML
  Database -> LilyPond
  Database -> PDF
  LilyPond -> PDF
The application is available for use on Windows or Linux.
MusicXML input can a compressed or uncompressed file, and in partwise or timewise format.
The tool has a JavaFX interface, and on Windows is bundled with is own Java JRE as a standalone application. On Linux, users install their own Java JRE separately. Users configure the tool to connect to a database which is set up and configured separately.
A database setup is not required for any task that doesn't require a database connection.
A local LilyPond installation is required to convert to PDF, and a PDF reader installation is required if the user wants to open the PDF file when a conversion to PDF is completed.
Command line scripts and bulk processing
A set of command line scripts that run the interface functionality are included in the application. The linux version of the scripts allow for piping.
The script musicXmlBulk performs bulk processing of input, including the bulk conversion of MusicXML to database records, and the bulk conversion of database records to the other output formats listed above.
Format Conversions
The application uses Java beans based on the MusicXML schema as the common data structure. Each bean maps to the relational database using the Hibernate framework for object-relational mapping. All conversions at some point (other than LilyPond to PDF) load or create the Java objects which are then operated on by series of handlers, factories, and builders to perform each type of conversion.
Convert MusicXML to Java / Convert Java to MusicXML in your application
You can place the jar file in the classpath of your application, and easily convert MusicXML to a Java beans structure, or construct a MusicXML Java beans structure and convert it to XML.
See section Java Code -> Application Use
Task Output
Task output is displayed in the console area at the bottom of the tool. Users can optionally redirect console output to a file for separate viewing. Users can also output all of the SQL queries used in a database conversion for reference.
LilyPond File Output
LilyPond is a typesetting application for music scores. LilyPond files are stored in their own file format.
The LilyPond conversion code is my own.
The code is written to fail gracefully at the measure level, so that whenever a measure calculation fails, rather than having the entire script fail, a placeholder measure-length spacer is put in that measure instead, which the user can then change manually.
Most major LilyPond features are implemented, but for those not implemented, the user will need to edit the file later. Some unimplemented features are noted in the task output.