-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Import Finale's .musx file format #31594
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
In the interest of full disclosure, there may be some need for an opinion from the MuseScore legal team on this. The xml inside a |
ef6cc8c to
6df411f
Compare
ba3d32c to
4465494
Compare
4465494 to
a039652
Compare
Made in collaboration with @rpatters1 over the best part of this year.
.musx file importer
This PR allows MuseScore to read Finale's .musx file format, used by Finale from version 2014 until its demise. As MuseScore hopes to win over users leaving Finale, this importer offers a way out without sacrificing existing score libraries. While MuseScore's MusicXML import from Finale has improved substantially over time, many visual inaccuracies are caused by the lossy export from Finale itself. This importer therefore has a focus on visual accuracy (over "good MuseScore behaviour" or playback).
Prefences for level of detail
Nonetheless, under Preferences there are various levels of detail provided for the user to choose from:
How to handle element positioning:
Conversion from Finale-native fonts to SMuFL symbols
Prior to v27, Finale did not incorporate the SMuFL standard and used a diverse assortment of fonts to cover musical symbols. Many MuseScore users may not have Finale and its fonts installed on their device, which is why the importer detects and converts most of Finale's symbol fonts to SMuFL equivalents. This is enabled by default. For powerusers who may wish to keep their original fonts (or be using SMuFL optional or MakeMusic-only glyphs), this can be disabled.
More options could be provided; with the new reset options in the format tab we haven't yet deemed them necessary.
Code quirks
The importer differs from other importers in that it layouts the score mid-import, several times. These calls are needed to compute the correct positions of various elements. Integration with the layouting code is kept minimal - only a small handful of methods are called from it - so any changes made to the engraving module shouldn't have much effect.
Two new dependencies are linked using
FetchContent- fixed release versions can be created before merging this PR.Features
The importer detects and imports the following:
Unit tests have also been provided.
Part scores and slur handle positions are currently not imported, but may be added at a later date.