Trigger system for playback
As MuseScore continues to improve notation-wise, the desire for better playback can be better addressed. But how do we create a system that's intuitive and extensible, without dramatically increasing complexity?
My suggestion: Playback triggers. To elaborate, when the playback cursor passes a certain static element (usually a repeat symbol), it sets a trigger. Elements that have an impact on playback (like notes, dynamics, ornaments) can have a property modified when a certain trigger is passed, such as "Play" or "Velocity".
From a code perspective, elements would need some way of defining triggers to set, and defining automation based on which triggers are set. The playback code would need to respect those triggers and insert modified events accordingly when the score is generated. It would be convenient if triggers could be set outside of playback so that, for example, the user could listen to the score after a repeat without having to take it.
If this is done properly, we could reap quite a few benefits regarding playback. Complex repeat systems could be implemented by automating the jump properties. We can have different verses be sung when singing gets implemented. Triggers could be implemented as midi control signals so that custom midi event support comes automatically, and articulations can cause altered playback in a DAW.
Notation still comes first, but I think a change like this can give MuseScore very sophisticated playback for a reasonable effort.