- From: Robert Patterson <robert@robertgpatterson.com>
- Date: Fri, 11 Apr 2025 15:04:30 -0500
- To: Music Notation Community Group <public-music-notation@w3.org>
- Message-ID: <CAACncetADPcRbOW4tRCEfG+vzHaOBRkbKv39AyOhw91q0bgjNw@mail.gmail.com>
Adding a musicxml export would be possible. The musx processing is all encapsulated in a Musx C++ DOM <https://github.com/rpatters1/musxdom> that any project can use. But I don't see much purpose being served by such a project at the moment. I don't think it could improve meaningfully on the export that is available within Finale. The biggest limitations in the export/import of musicxml appear to me to be limitations of the musicxml spec. (Particularly how it handles linked parts and more generally page layout.) My hope is that MNX will capture more information and become robust and accepted enough to be usable before Finale is so dead that a stand-alone musicxml export would be a chronic need. But it's always there as a project if someone wishes to take it up. That's the beauty of open source. For that matter, it would be possible to create direct exports to MuseScore and Dorico files. Those might lose the least in translation. Of course, Dorico is proprietary and MuseScore is not documented. This is why MNX made the most sense to me as a project, even though it is still a moving target. FWIW: denigma also includes a musicxml "massage" function that tweaks some minor details in a finale-exported musicxml to yield better results in specific circumstances. I could see adding more tweaks before attempting to rewrite the whole export. On Fri, Apr 11, 2025 at 2:08 PM Samuel Bradshaw <samuel.h.bradshaw@gmail.com> wrote: > This is great! Do you have any plans to develop a similar command-line > tool to convert Finale files to MusicXML, without needing Finale? (Or is > there one already, that you're aware of?) MNX is the future, but a MusicXML > tool would help with the transition to other music notation software in the > short term. > > On Apr 11, 2025, at 12:54 PM, Martin Keary <martin.keary@gmail.com> wrote: > > Congratulations, Robert, that's an amazing contribution for the Finale > community! > Martin > > On Fri, Apr 11, 2025 at 7:36 PM Robert Patterson < > robert@robertgpatterson.com> wrote: > >> Today I released new versions of mnxvalidator >> <https://github.com/rpatters1/mnxvalidate/releases> and denigma >> <https://github.com/rpatters1/denigma/releases> (a Finale musx file >> exporter). These are both command-line tools compatible with macOS, >> Windows, and Linux. All are completely open source and released under the >> MIT license. >> >> ## mnxvalidate >> >> Adds a large number of new validations from version 1.0, mainly to do >> with sequence content. The full list is available at the link >> <https://github.com/rpatters1/mnxvalidate/releases>. A big architectural >> change is that all the validation code is now in the MNX DOM, which makes >> it available to any project that uses the DOM. >> >> ## denigma >> >> Denigma is an archival utility that can process Finale musx files without >> the need of Finale. The new version of denigma >> <https://github.com/rpatters1/denigma/releases> exports as complete an >> MNX file as is currently spec'ed. Right now it defaults to `.mnx` >> extensions for output despite the output being raw json. You can override >> the extension to `.json` if you wish. >> >> Since MNX is not a fully realized specification, the current iteration of >> denigma is probably mainly useful as a dev tool. If you have access to >> Finale and/or a cache of Finale musx files, you can quickly generate >> schema-compliant json for whatever scenarios you are interested in. I would >> be interested to know if there are any tools or websites that can render >> MNX, because so far I have been relying only on schema validation and my >> semantic validation to decide if the output is valid. >> >> ## MNX DOM for C++ >> >> With a few minor exceptions, this DOM fully implements the schema and >> documentation as of today (4/11/2025). It offers typed wrappers around a >> shared nlohmann root json object and accesses the classes with >> json_pointers. This obviates the need for class-level serialization. All of >> the data is accessed with typed methods defined with boilerplate macros. >> The validation code in the repo provides examples of how to use the DOM >> classes. >> >> The GitHub repo is here <https://github.com/rpatters1/mnxdom>. >> Documentation (Doxygen) is here <https://rpatters1.github.io/mnxdom/>. >> >> >
Received on Friday, 11 April 2025 20:04:48 UTC