Allow setting notehead scheme on a note-by-note basis in the Inspector

• Sep 16, 2019 - 09:32
Reported version
3.2
Priority
P2 - Medium
Type
Functional
Frequency
Once
Severity
S5 - Suggestion
Reproducibility
Always
Status
closed
Regression
No
Workaround
No
Project

Currently one can assign a notehead scheme to a staff only. Using staff change elements, this can be achieved on a per-measure basis.
In educational scores, it is not uncommon to only use the named notehead for the first occurrence of a given note; something currently not possibly within MuseScore.

The idea is to allow setting the notehead scheme on a note-by-note basis using the inspector.
A possible easier in-between step would be to at least expose those notehead symbols within the current listing (as is already the case for 7-shape noteheads). The downside there is that the notehead doesn't automatically update when the pitch is changed; but it would allow us to create the desired end result without having to resort to the symbols pallet (and manual placement involved in that workaround approach)


Comments

Status PR created fixed

Fixed in branch master, commit 4c0db9b19b

_fix #294542: Allow setting notehead scheme on a note-by-note basis in the Inspector

Resolves: https://musescore.org/en/node/294542.

Up until now, notehead scheme has only been a StaffType property. If a Note is going to have its own notehead scheme, it seems fitting to do a bit of reorganization. Here is a summary of the changes made:
- Moved enum class NoteHeadScheme to NoteHead::Scheme, alongside NoteHead::Group and NoteHead::Type.
- Added HEAD_AUTO as a possible value for NoteHead::Scheme.
- Moved scheme2userName(), scheme2name(), and name2scheme() from class StaffType to class NoteHead.
- Renamed Pid::STAFF_NOTEHEAD_SCHEME to Pid::HEAD_SCHEME. This change is reflected in the Plugin API, with Element property staffNoteheadScheme being renamed to headScheme. This should not break too many existing plugins, because the NoteHeadScheme enum values have never been exposed until now. Speaking of which,
- Exposed the NoteHead::Scheme enum values to the Plugin API as NoteHeadScheme.HEAD_AUTO, etc. And finally, (and the main point of all of this):
- Added a property of type NoteHead::Scheme to class Note, and exposed it via the Inspector. If set to HEAD_AUTO (the default), the StaffType’s noteHeadScheme will be used. Otherwise, this will override the StaffType’s noteHeadScheme._

Fix version
3.5.0