Improved playback architecture
I'd like to propose a change to the playback architecture. It would enable a lot of new features, including several that have been requested recently on other threads. I'll first describe it at a high level, and then if people think it sounds like a good idea, I can go into more detail about how it might work.
The idea is to create a new abstraction layer for translating score elements into midi commands. It would let you have a file describing the features and behavior of a particular synthesizer. Then you could load that file and everything would "just work". In particular, it would describe three aspects of playback: instruments, articulations, and dynamics.
MuseScore has built in support for GM soundfonts, so if you use one it automatically selects the right sound for every instrument in the Mixer. This feature would let it do the same for non-GM soundfonts. It would also work for external midi synthesizers. Just load one file and it configures everything for you, including sending Program Change messages as needed.
Currently, MuseScore supports a very small set of articulations. For example, stringed instruments have three: normal (whatever that means), pizzicato, and tremolo. But most commercial orchestral synthesizers have a lot of others: marcato, spiccato, detache, etc., each with or without mutes, not to mention distinguishing between up bows, down bows, and slurs. This would let you use those.
Lots of mechanisms can be used for selecting articulations. With GM, each articulation is a different program, so you select them with Program Change messages. But a lot of synthesizers use keyswitching, where you press keys outside the normal range of the instrument to select articulations. Or they may use a midi controller for that purpose. Sometimes they use velocity to smoothly blend from legato to marcato. Slurs can be indicated with the sustain pedal, or by setting the velocity to 0, or in other ways. So the file needs to describe what articulations are available, and also how to activate them.
Dynamics can also be indicated in multiple ways. GM synthesizers use velocity for that purpose, but others use the expression controller, or the mod wheel, or other mechanisms. And this can even vary between instruments within a single synthesizer. So percussion instruments might base dynamics on velocity, but stringed instruments might base it on a controller.
So my idea is that you would load a file describing a set of instruments, and the available articulations for each one, and the mechanics of how to play them, and then MuseScore would take care of everything for you. Does this sound like a good idea? If so, I've thought a lot about how it might be implemented, and I can provide details on my ideas.