5 reasons for JavaScript engine for MusicXML using VexFlow

5 Reasons why we decided to build the first open source JavaScript engine for MusicXML using VexFlow

Last updated on September 27, 2018, 7:33 PM

Every developer building solutions for digital sheet music and JavaScript sooner or later stumbles across VexFlow:

“VexFlow is an open-source online music notation rendering API. It is written completely in JavaScript, and runs right in the browser. VexFlow supports HTML5 Canvas and SVG.”
vexflow.com

Here at PhonicScore we were like “Great, just what we needed! Oh wait, no MusicXML support? Impossible, there must be something?”

Trust me, there is nothing useful out there, yet.

As a music tech startup adding a web app to our fleet of MusicXML sheet readers, we know how hard it is to build and maintain everything from scratch. At PhonicScore we love to work with VexFlow in order to avoid inventing the wheel twice. Unfortunately Vexflow does not support MusicXML. We are strong believers in MusicXML. Users / consumers / musicians also opted for this format.

Thus we decided to build our own open source JavaScript engine for MusicXML using VexFlow.

Here are five reasons that led to this decision:

1. VexTab does not read MusicXML

VexTab is a language also created by to the creator of VexFlow to quickly create, edit, and render standard notation and guitar tablature that comes with VexFlow. VexTab is responsible for reading text commands новости and calculate the sheet music which is then rendered by VexFlow.

VexTab is proprietary and not free for commercial usage. Meh.

2. No MusicXML JavaScript parser available

There are two promising solutions: Dan Ringwalt’s “VexFlow MusicXML Plugin” and Taehoon Moon’s “Concerto Project”. We took a close look at both you can look here. It turned out that both would need a complete overhaul.

3. Reward for non open source software

On February 8, 2016 VexFlow issued a $5,000 bounty for creating a MusicXML Parser for VexFlow.

The downside?

“If you win, you must transfer full ownership of Preview: the code to me. This means that you may be unable to use, build derivative works from, or redistribute any code developed for this bounty.”
https://github.com/0xfe/vexflow/issues/323

We feel that in the future displaying sheet music on the web should be wholesale jerseys common knowledge like it is displaying this piece of text in your browser.

4. Web app “Practice Bird”

Our new product “Practice Bird” is a practice log for musicians. As a web app we need to display sheet music in web browsers.

5. We love community

A great community already evolved around VexFlow. A recent comment on GitHub shows that there is strong need for a MusicXML parser:

“Why don’t we all, everyone in this thread who expressed interest in building this but having it stay open-source, build it together openly on github? (…)”
Mike Turley on GitHub, March 24, 2016 https://github.com/0xfe/vexflow/issues/323#issuecomment-200930175

What are we waiting for? Let’s get started and build this together!

Photo by Michael 1952, Creative Commons License 2.0, No changes applied, https://flic.kr/p/8hwACH