Skip to content

Conversation

@XiaoMigros
Copy link
Contributor

@XiaoMigros XiaoMigros commented Dec 27, 2025

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).

Custom levels of detail

Nonetheless, under Preferences there are various levels of detail provided for the user to choose from:

  • Reset all positions to sensible MuseScore values
  • Import only manually adjusted positions (default)
  • Import all positions (inherit a visual copy of Finale appearance; mostly concerns tie directions and beam slants)

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.

Features

The importer detects and imports the following:

  • Notes, grace notes, tuplets, (l.v.) ties
  • Beams and beam positions
  • Instrument and note transposition
  • Tablature notes and string data
  • Barlines
  • Staff brackets
  • Staves, staff types, instrument changes
  • Page layout: Page margins, system margins, distance between staves, individual staff visibility
  • Articulations
  • Tremolos
  • Fermatas
  • Notehead parentheses
  • Ornaments
  • Breaths & Pauses
  • Fingering
  • Sticking
  • Tempo text
  • Dynamics
  • Expressions
  • Harp pedal diagrams
  • Staff text
  • Lyrics
  • Header/Footer text, text in frames
  • Score style settings
  • Spanners: Hairpins, ottavas, slurs, glissandos, trills, etc.
  • Score properties (metadata)
  • Clefs
  • (Custom) Key signatures
  • (Composite) Time signatures
  • System object staves
  • Chord symbols
  • Repeat barlines, markers, jumps, and voltas
  • Arpeggios (single- and cross-chord)

Unit tests have also been provided.

Part scores and slur handle positions are currently not imported, but may be added at a later date.

  • I signed the CLA
  • The title of the PR describes the problem it addresses
  • Each commit's message describes its purpose and effects, and references the issue it resolves
  • If changes are extensive, there is a sequence of easily reviewable commits
  • The code in the PR follows the coding rules
  • There are no unnecessary changes
  • The code compiles and runs on my machine, preferably after each commit individually
  • I created a unit test or vtest to verify the changes I made (if applicable)

@XiaoMigros XiaoMigros force-pushed the import-rebased branch 5 times, most recently from 55bd255 to 38eeb73 Compare December 29, 2025 13:33
@XiaoMigros XiaoMigros force-pushed the import-rebased branch 2 times, most recently from e3d34f8 to e08c773 Compare December 29, 2025 18:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Needs Review

Development

Successfully merging this pull request may close these issues.

2 participants