[playback] Secondary voices: lower velocity/dynamics by default
All voices which are not Voice 1 could be lower in velocity by default. I think one should want this in 99% of the case. In case this is not wanted, the user could disable this with some given option.
If the user wants more complexity, then he/she will manually select the other voices and input the wanted velocity values by itself. But it would be neat to have at least voice 1 standing out by default.
Comments
I don't think your assertion that in 99% of the case voice 1 should be louder than the other holds true. I'd rather think in 9x% they should be the same volume.
I'd say that to the extent the assertion is true, it is the case only for the top staff of non-contrapuntal solo piano music music. It would not be true at all for the bottom staff; it would not necessarily be true of either staff for contrapuntal music; it would not generally be true for the piano part in an ensemble when another instrument has the melody; and it would normally not be true for instruments other than piano (eg, orchestral or vocal scores in which multiple parts are combined on one staff).
But of course, having the mixer give you independent control of the volume of the four voices would be a fine enhancement, one that comes up often and that I support. Then one could use it to give the nudge to voice 1 in the specific cases where it is desired.
In reply to I'd say that to the extent by Marc Sabatella
Yes I was thinking for piano only, in SATB cases of course it's not wanted.
The "mixer solution" doesn't seem bad either.
In reply to Yes I was thinking for piano by 255
Many of your suggestions basically amount to implementing something analogous to Finale's "Human Playback", which is fine idea for some time down the road - an optional and customizable extra prepass that happens before playback to do some of these sort of tweaks.
In reply to Many of your suggestions by Marc Sabatella
-empty-
In reply to Many of your suggestions by Marc Sabatella
Yes, you know, suggestions are no harm. XD But I know that my best bet is trying to compile MuseScore and trying to contribute. I'm considering it eheh.
BTW, I don't think Finale has this voice volume thing either. Sibelius doesn't, that I'm sure.
And both Finale and Sibelius don't have this pedal thing either, and you need long and annoying workarounds to do that, something I talked about in other forums too.
I don't aim to a complete realism of course, these are just things that I consider quite basic (although maybe not easy to implement) to have for a decent playback. But it's very subjective and we all know what's the main goal of MuseScore for now.
You said "extra prepass" and thinking about that, a plugin could do this.
It's a matter of deciding what could be hardcoded in MS and what could be a plugin.
Main problem is that plugin creation in 2.0 has some limitations, you cannot access certain elements yet. So for example, you can't do what I want here in the OP because you can't access dynamic markings to know the current level of velocity.
And you can't change the effect of the pedal markings either.
Also, there are certain things that just can't be done as a pre-pass without already available information, e.g. if you want a non-notated rubato, you must have a way to indicate that somehow (with some already available tool, e.g. a line set as invisible) BEFORE running the hypothetical human playback plugin.
So, certain things just must be hardcoded in MS otherwise a plugin cannot even be made.
It's basically something that should procede in parallel (both MS code and plugin support).
Maybe we could do a "main topic" about this, if there's not something similar already.
In reply to Yes, you know, suggestions by 255
FWIW, rubato playback is something I would not be surprised to see implemented relatively soon. Doubtful for 2.0, but perhaps not unlikely for 2.1. There already some hooks in the code for it.
As for the rest of things that have come up, a plugin could handle some things, but indeed, not enough given limitations of the framework. In addition, a plugin would have the downside of needing to be re-run after each change. The Finale model is to have it built in to the program and run on each play operation, but only if you enable the option. It's not a bad way to go - more automatic, and of course, then there is no propblem accessible the full data structures. Anyhow, definitely worthy of further discussion at some point.