musescore / musescore/MuseScore

Intruction-list file format

Open
#25,978 1 comment 0 reactions 2 assignees View on GitHub

@cbjeukendrup is already working on this.

Since Jan 7, 2025.

feature request
Dominant language
C++
Stars
15.1k
Forks
3.3k
Avg merge
2d 2h
Merged PRs (30d)
91

Description

Your idea

As the Musescore files (mscx) are XML-based, versioning them with git is not trivial.
I thought of discovering the idea of creating a new file format that is based on instruction lists that describe the score bit by bit, an example:

part -id 1 -name "Clarinet in B" -instrument-id "wind.reed.clarinet.bflat"
...

With this, the file format is more like a step-step guide for the program on how to build a score.
As it could then be line-based, it is way easier to read and version these files.
Manual tweaking is also way easier and programmatic generation could be eased.

An other approach that is not XML is possible, too.
This issue is more a discussion issue to explore possibilities into this direction.

Problem to be solved

Versioning Musescore scores is difficult, but sometimes beneficial.
The XML format of the current musescore files is pretty bad when trying to version it.

Sometimes, it is also beneficial to automatically merge multiple scores into one.
A text-based file format could use git in helping with that.

Prior art

No response

Additional context

No response

Checklist
  • This request follows the guidelines for reporting issues
  • I have verified that this feature request has not been logged before, by searching the issue tracker for similar requests

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.