You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Multiple voices example is another example that depends on some close-to-magical functionality from the importer. The json contains absolutely no hint as to which voice should have stems up and which should have stems down.
In the general case, correctly inferring stem directions from multiple sequences seems non-trivial. It is surprising to me that the committee would assume that level of sophistication in a consumer when they contemplate consumers that don't even know whether to show accidentals in C major. The only solution I can think of involves sloughing through all the sequences just to put them in some kind of average staff height order before even beginning to process them, taking into account cross staffing somehow. That's a lot of extra code that every importer has to write and a lot of opportunity to be wrong.
The two programs I am most familiar with, MuseScore and Finale, do not attempt it. MuseScore hard-codes stem directions up/down for even/odd voices (counting from 0). And Finale has per-layer settings that determine it. I don't know about Sibelius or Dorico, but I suspect at least one of them takes a similar approach. For these programs, it would be trivial for them to export hints about stem direction.
Here are some hint ideas:
Add a dictionary of voices that include default stem direction per voice. Then suggest that multi-sequence staves should use those voices. (I already proposed this in Managing flexibility for imports and exports. #468, but I add it here for completeness.)
Suggest a consistent order for sequences in a part measure. Maybe we could suggest that sequences should be interleaved up/down/up/down, or vice versa.
Add an optional stem direction to the sequence itself, and suggest that it should be used when more than one sequence is present for the same staff.
I realize that we are already handling a lot of this with layouts. Layouts may certainly override these hints. But most of the examples contain no layouts. I would like to be able to import them as closely to how they appear in the documentation as possible. Right now, this is a big sticking point.
The Multiple voices example is another example that depends on some close-to-magical functionality from the importer. The json contains absolutely no hint as to which voice should have stems up and which should have stems down.
In the general case, correctly inferring stem directions from multiple sequences seems non-trivial. It is surprising to me that the committee would assume that level of sophistication in a consumer when they contemplate consumers that don't even know whether to show accidentals in C major. The only solution I can think of involves sloughing through all the sequences just to put them in some kind of average staff height order before even beginning to process them, taking into account cross staffing somehow. That's a lot of extra code that every importer has to write and a lot of opportunity to be wrong.
The two programs I am most familiar with, MuseScore and Finale, do not attempt it. MuseScore hard-codes stem directions up/down for even/odd voices (counting from 0). And Finale has per-layer settings that determine it. I don't know about Sibelius or Dorico, but I suspect at least one of them takes a similar approach. For these programs, it would be trivial for them to export hints about stem direction.
Here are some hint ideas:
I realize that we are already handling a lot of this with layouts. Layouts may certainly override these hints. But most of the examples contain no layouts. I would like to be able to import them as closely to how they appear in the documentation as possible. Right now, this is a big sticking point.