Open Score Format

SourceForge.net Logo
Home About Download Help  Contact Us 

The Format

Open Score Format Specifications

There are two specifications that describe Open Score Format.

The OSF Packaging Specification 1.0 describes the format of OSF Packages and the way to sign them.

The OSF PVG Application profile 1.0 describes differences between MusicXML 2.0 Strict and the Open Score Format PVG Subset.

Automatically generated documentation for the osfpvg schema can be found here.

» back to top


Open Score Format W3C XML Schemas

The Open Score Format PVG Application Profile schema (content subset for PVG content)

Schemas for files used in OSF Packages


» back to top

How to create Open Score Format PVG Content

The Open Score Format defines a subset of MusicXML Strict 2.0 for use with Piano Voice Guitar (PVG) content. This excludes MusicXML features that are not needed, and tightens up the definition of the the reaminder. It is hope that this will simplify the task of implementing to read or process this type of content.

Recordare's Dolet 4.7 export plug-in for Finale can directly read and write OSF packages.

Many other tools that can generate MusicXML 2.0 Strict or MusicXML 2.0 files can also be used to generate OSF PVG MusicXML compatible files when used with PVG Scores, The OSF Packaging Toolkit can use these files to build packages.

Recent versions of Recordare's Dolet 4 for Sibelius export plug-in is known to produce OSF PVG compliant MusicXML files, as is Finale 2009, which has Dolet built-in.

It is likely that many other tools also work too.

Recipe for creating OSF Packages

  1. Create a PVG score using the using your tool of choice
  2. Create the metadata files and directory structure required for the Open Score Format Package
  3. Use the OSF Packaging Toolkit to compile and validate the package

» back to top

The OSF Packaging Toolkit

The OSF Packaging Toolkit can be downloaded from the downloads area on the project's SourceForge project site

How to use the OSF Packaging Toolkit

You can use the OSF Packaging Toolkit for creating, unpacking, validating and signing Open Score Format packages. Download the tool and save it in any folder, then open the command line prompt and navigate to that folder. Once there, write OSFPackagingTool then any valid combination of the commands listed below.

Examples:
Create a package:
OSFPackagingTool -cp -p C:\mypackagefolder -out C:\foldertosavepackagein

Create a signed package:
OSFPackagingTool -cp -p C:\mypackagefolder -out C:\foldertosavepackagein -c C:\mycertificate.p12

Unpack:
OSFPackagingTool -u -z C:\myzip.zip -out C:\foldertounpackto

Validate:
OSFPackagingTool -u -z C:\myzip.zip

Argument: Explanation: Requires: Will run these tests:
-cp create package -p
-out
MetadataSchemaTest
ContainerSchemaTest
ManifestSchemaTest
RequiredComponentsTest
ConformToApplicationProfileTest
-u unpack -z
-out
ContainerSchemaTest
RequiredComponentsTest
UnlistedFilesTest
-v validate -z
MetadataSchemaTest
ContainerSchemaTest
ManifestSchemaTest
ConformToApplicationProfileTest
MetadataTermsTest
MediaTypeTest
-vs validate signature -z
-c
VerifySignatureTest
SignedFilesTest
-p the path to a package
-z the path to a zip file
-out the path to where the package should be unpacked or where to save the zip
-c the path to the certificate
-pass the password for the certificate (if there is any)
-s sign package -cp
-p
-c
» back to top

How to create a certificate

We recommend OpenSSL to create private keys and certificates. An example of how to create a PKCS#12 certificate is below, for further documentation please visit www.openssl.org/docs/.

First generate a private key:
openssl genrsa -des3 -out privkey.pem 2048

Then create a certificate using that private key:
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

Finally create the PKCS#12 certificate from these files:
openssl pkcs12 -export -in cacert.pem -inkey privkey.pem -out certificate.p12

» back to top

Getting OSF Packaging Toolkit Source code

The OSF Packaging Toolkit was built in .NET 3.5. The source code can be downloaded here (version 0.9).

For creating and zipping up packages we use the latest release of DotNetZip (version 1.6).

It passes the Mono compatibility test, although it fails on the schema validation when running it. There's a bug open for this, any help solving it would be much appreciated. We have also raised the bug with Mono, please check there for updates.