Add ability to have a different MIDI pitch for drum instrument based on articulation or tremolo
Currently, MuseScore renders articulations for all instruments in two ways: it changes the length of the notes (gate time for staccato) or it changes MIDI velocity (accent for example). These behaviors are currently configurable in instruments.xml at the instrument level.
Unfortunately, a popular way to notate an open hi-hat for drums for example is to use a "open" symbol on top of the note. In this case, MuseScore should use a different MIDI pitch based on this "articulation" instead of changing the velocity or the length of the note. It also common to use accents or stacattos to notate different sound.
In a similar manner, MuseScore renders tremolos by sending several MIDI events. For drums, a possibility to send a single event on a different pitch would be useful.
I would propose to add a new concept of "variants" for a given drum instrument.Currently a drum instrument is defined as a [MIDI pitch + notehead + line] triple. In the drum palette, the user chooses one of this element and that's it.
My proposal is to add one or more variant would be added to this triplet: a variant would have a pitch and an articulation and/or a tremolo. If the user chooses a drum instrument from the palette, it would work exactly the same. If it adds an articulation and/or a tremolo to the chord, MuseScore would then play the matching MIDI pitch defined in the variant.
Questions are :
- What do we do with articulations defined at the instrument level ? Do we stop rendering them for drums? or Do we render them for drum instrument without variants? Or do we render them only when there is no matching variants for a given tremolo/articulation? At least, for articulations we have control on the instrument in instruments.xml, so we can just keep on rendering them.
- Same question for tremolos. Unfortunately, tremolos are currently always rendered and this is not modifiable on an instrument basis in instruments.xml.