musescore / musescore/MuseScore
MuseScore 4.5 legacy default style is missing from Qt resources
@mathesoncalum is already working on this.
Since Aug 11, 2026.
- Dominant language
- C++
- Stars
- 15.1k
- Forks
- 3.3k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 91
Description
Issue type
Opening/saving issue / build resource packaging bug
Description
MuseScore defines and uses a Qt resource path for the MuseScore 4.5 legacy default style (named v450 and versioned 4.50 in these resources), but the corresponding file is not registered in src/engraving/engraving.qrc.
As a result, opening or converting a MuseScore 4.5 score can repeatedly report:
DefaultStyle::doLoadStyle | failed load style:
:/engraving/styles/legacy-style-defaults-v450.mss
In the reproduced console conversion, the converter exits with code 1.
Expected behavior: the existing MuseScore 4.5 (v450) legacy default style is packaged at the path used by DefaultStyle, and a MuseScore 4.5 score can be opened and saved as 5.00 without this resource error.
Source evidence
Tested against current main:
- MuseScore:
106e63b078a2da40538da3d2d7a60e475fc0cdba muse_framework:34210b4b4c01c425bbe4bd711fee5d04bebc1641muse_deps:39c897ed2e10d79f44d16d439a6a3cb77364d461
src/engraving/style/defaultstyle.cpp defines:
static const String LEGACY_MSS_V450_PATH(
u":/engraving/styles/legacy-style-defaults-v450.mss"
);
DefaultStyle::resolveStyleDefaults(450) passes that path to loadedStyle().
The corresponding file exists:
src/engraving/data/styles/legacy-style-defaults-v450.mss
However, src/engraving/engraving.qrc registers the v1, v2, v3, and v302 legacy default styles, but not v450. The file therefore exists in the source tree but is not packaged at the resource path used by DefaultStyle.
Steps to reproduce
- Configure and build the MuseScore console application with the VTEST configuration at the revisions above.
- Use the existing repository fixture
src/engraving/tests/timesig_data/timeSig-11.mscz, which contains a MuseScore 4.5 score (4.50file-format version) and excerpts. - Extract the MSCX and use the console converter to open and save it as MuseScore 5.00.
- Observe repeated failures to load
:/engraving/styles/legacy-style-defaults-v450.mss; the reproduced conversion exits with code 1.
Minimal fix verification
Adding only the following entry to src/engraving/engraving.qrc fixes the reproduced conversion:
<file alias="engraving/styles/legacy-style-defaults-v450.mss">data/styles/legacy-style-defaults-v450.mss</file>
After reconfiguring and rebuilding the same checkout, the same input converts successfully and writes the 5.00 MSCX. No change to defaultstyle.cpp, the style file, or the input fixture is required.
Existing project context
The omission was already identified in an unresolved review thread on the merged PR that introduced the v450 legacy style:
The comment correctly notes that the file is not packaged because it was not added to engraving.qrc, and asks whether the file is needed. The reproduction above confirms that the existing MuseScore 4.5 (v450) loading path does use it.
The same failed-load message also appears incidentally in Issue #30870, but that issue tracks duplicate percussion note entry and contains no fix or acceptance criteria for the resource problem.
Why existing tests may not expose it
Although timeSig-11.mscz is present in timesig_data, it is not referenced by a test in timesig_tests.cpp. Its presence in the test-data directory therefore does not make CI open it.
The VTEST configuration also disables unit tests (configuration, engraving-test disablement).
A focused engraving/DefaultStyle regression test that proves the MuseScore 4.5 (v450) style can be loaded from its Qt resource path would directly cover the missing registration.
Regression
No known working revision after the v450 legacy style and its load branch were introduced in commit 837fbd0b183ecd0ce743ba6c575adf39d9f93507.
Operating system and build environment
Linux, Qt 6.8, GCC 12, VTEST console configuration.
Checklist
- Reproduced on current
main. - Searched the Issue and PR trackers for the exact resource name, path, and error.
- Used an existing repository fixture as the reproduction input.
- Verified the minimal QRC-only fix with the same build and input.
- Linked the earlier unresolved review that identified the packaging omission.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.