My long-term free software project (Braille Music Compiler) just produced
some offspring! xsdcxx-musicxml is now available on GitHub.
I used CodeSynthesis XSD to generate a rather complete object
model for MusicXML 3.0 documents. Some of the classes needed a bit
of manual adjustment, to make the client API really nice and tidy.
During the process, I have learnt (as is almost always the case when programming)
quite a lot. I have to say, once you got the hang of it, CodeSynthesis XSD
is really a very powerful tool. I definitely prefer having these
100k lines of code auto-generated from a XML Schema, instead of
having to implement small parts of it by hand.
If you are into MusicXML for any reason, and you like C++,
give this library a whirl. At least to me, it is what I was always looking for:
Rather type-safe, with a quite self-explanatory API.
For added ease of integration, xsdcxx-musicxml is sub-project friendly.
In other words, if your project uses CMake and Git, adding xsdcxx-musicxml as a
subproject is as easy as using git submodule add and putting
add_subdirectory(xsdcxx-musicxml) into your CMakeLists.txt.
Finally, if you want to see how this library can be put to use:
The MusicXML export functionality of BMC is all in one C++ source file: musicxml.cpp.