-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to group parts? #185
Comments
Yes. I also think this needs fixing. |
What about choral pieces that sometimes have the SATB each on a separate staff, and sometimes have the female voices on one staff and the male voices on one staff? You have to be able to move a "voice" from one staff to another to correctly represent the original. -- Christina |
Sorry, I'm still trying to understand this myself.
and all that's missing is the ability to name particular staves and/or voices. (§6.11 looks a bit unfinished...) §4.5 says (my emphasis)
According to §6.2.2, sequences can have both a cross-measure "voice" attribute (so four sequences of "sequence" elements in the same Part could be labelled as belonging to voices S, A, T and B) and a "staff" attribute denoting the staff index (from top to bottom in the Part). So @clnoel 's example should be no problem. Apropos: I had a problem with MNX-Common by Example, Multiple Voices. In that example, the lower voice is presented first, so it should really have its stems pointing upwards. I had to go through a few hoops to make the example look like the given graphic. I think that voices MUST be presented in top to bottom order, otherwise things get unnecessarily complicated, -- and that the example does not actually match the graphic. Summary of my current understanding (is this right?):
Is the distinction between (non-printed) voice identifier and (printed) voice name the distinction needed to solve Issue #183? Is the (internal MNX-Common) voice identifier "layout", and the voice name (printed in the score) "analytical"? |
If we alter this to not knowing how to order the staves in the system, then I agree here. Voices should appear on staves wherever their associated notes should appear. But the ordering of the staves is a layout issue that needs to continue to be addressed. Whenever the system layout changes we will need labels. This occurs at the beginning of the piece, anywhere the arrangement of voices on staves changes, anywhere the number of visible staves changes, and probably some other places that an editor chooses to put one in for clarity. |
@clnoel I'm not sure I understand you there.
I think things should be kept as simple as possible: voices in staves, staves in parts, parts in systems and systems in the score should all be consistently organised: The order in which the elements occur in the XML should be the top to bottom order in the score. Any of these orderings (except systems in the score) can change at any point in the score/XML. |
Oh... arg... I skipped the "part" in the hierarchy. I meant staves ordered within the part not within the system. Parts would be ordered within the system. My point, though, is that voices don't order in the staff. Once a voice is in a staff, it can't really have a vertical order relative to other voices, because the note sequences might cross each other musically. |
I don't see any problem with voices crossing musically on a staff. An upper voice (the one with stems up) can have pitches below those of the lower voice (that has stems down). |
This issue is collecting TODO items for the voice to system hierarchy, and may end up as a Pull Request, so here's a summary of the items so far (comments and corrections welcome, of course):
I'd like to discuss whether there should be a maximum number of voices per staff. |
@notator I disagree on limiting the number of voices per staff. There are tons of examples in literature where there are more than 2 voices on a staff (to name most of Bach's preludes & fugues as an example). In choral music, there are also lot's of examples where all voices are again split up in multiple voices like "SSAATTBB", and still visualised on 2 staves. |
@bhamblok you're right, of course, about the Bach examples, but I'm still not sure that this belongs in the standard profile. As I said, I think this needs discussing. |
@notator This GitHub issue has gotten quite a ways off-topic...! Regarding multiple voices, I don't see a good reason to limit the number of voices in an MNX-Common file. To the original issue topic (how to group parts), this still needs to be designed. My gut take on this is that we'd have a separate section, somewhere in the document, which would let us specify the groups by listing IDs. (For example, "this group consists of parts P1 and P2, and it uses a bracket.") |
@adrianholovaty Thanks for your thoughts. They are in line with current MusicXML approach. Days after opening this issue I found #33 that seem to address the same concerns but, probably, with a very different implementation. I still think that this issue should receive more priority because depending on the final decision it could affect significantly to current MNX skeleton. |
@adrianholovaty Okay, granted: the question of how many voices per staff there should be in the standard profile is off-topic. The idea really belongs in the debate about profiles (#68, #175), so I'll save it for when we get back to those issues. But the rest of the above thread, containing a review of the container hierarchy, is very much on-topic. (@cecilios asked for more discussion around the subject of grouping parts, because the result might affect the basic structure of MNX-Common documents. The container hierarchy is the basic structure of an MNX document.) The current state of this discussion is that
This affects the way brackets can be defined. You said:
Here are some thoughts to follow that up:
BTW: I think #33 could now be closed. |
Sorry but, looking closely at the problem of extracting Parts, I've come to the conclusion that the above review of the container hierarchy must be wrong. I now think that the Spec is only talking about anonymous voices that can be played by one performer (so the voices don't need names). A Part should be an entity that can be extracted from a score to be played by one performer.
The spec needs to distinguish between different staff types that occur at different levels in the container hierarchy:
If this is correct, a "part-group" can be a set of system-staves connected by a single barline. So far, so good, but a problem arises, because MNX-Common is designed for flexible layout. Nevertheless, it should still be possible to declare the fixed, top to bottom order of the (single performer) Parts in the global measure directions, and to define (nested) brackets (independently of the group-barlines) that enclose them... Still working on this. |
Okay, if we're still looking at making definitions, I want to talk about the following visual groupings we see in a piece of music.
I believe that what I am calling "Grouped Staves" above is the source of the original question (Part-Groups), especially in regards to how this might affect the MNX-Common hierarchy. If that understanding is correct, then in my opinion, "Grouped Staves" are entirely a layout question, as is the ordering of the staves in the system, and as such are completely separate from the musical/notational definition of the notes in the parts, just as the number of measures per system are separate (because they depend on page size). And we should not be worrying about it right now, because we are trying to separate out such layout concerns into their own section rather than mixing them in. This way, the same MNX document can be easily used to either faithfully reproduce the original by using that layout information, or to easily order/reorder or selectively include whichever parts are wanted by disregarding it. Which doesn't mean that the parts don't need a name to be used for display. Probably they need both a full name and an "abbreviated" name, such as "Soprano" and "S". The layout specification can then choose when/how to display these names. If we are ready to start talking about how to map parts onto staves to create layouts, then I'm more than willing to help dig into it, but I think we're not there yet, considering that we are still defining how repeats and second endings work when we only have one part. --Christina |
Thanks @clnoel , a very clear explanation.
Yes, that were my concerns.
I see three approaches to this:
I'm not voting or suggesting any approach. My concerns are that it is necessary to define which approach will be choosen so that we all are aware of possible implications, instead of proceeding with details and later, when finally this be studied, having to go back or having to implement 'hacks' to avoid having to go back. |
Actually, I just realized that #57 (page and system flow) is in active review right now, so we do need to be worrying about this now! My point about this being a layout issues is that in a complex orchestral piece, you might have the 8 horns part-group as a grouped stave on the conductor's score, be printed out as the entire layout for the horns themselves, or ignored entirely in order to produce a score that is just one of the 8 horns. And all of those are valid options for which it would be nice to not have to have separate MNX files for. Instead, we specify each of the 8 horn parts separately, and define score-layout elements for the composer, for the horn group, and for each horn separately. Each of these different score-layouts would treat the group in different ways. So, if we have something like:
There are a lot of things in this proposal that are out of scope for this discussion (and in fact, I should probably post it over at #57 ) but one thing it definitely does is show how we can group parts. Also, I'm not attached to the naming conventions for any of this, just the general idea. |
@clnoel Nice approach! I like it |
@notator I'd especially like your input. I've posted an expanded version at #57 (comment) . |
@clnoel Many, many thanks for
I've got a lot to say about the code, but its rather off topic here so I'll continue that discussion in #57, as you suggest. I think we can finish with this issue (#185) when we're really sure what we mean by a "Part" and a "group of Parts". Further to my last posting, I now think that a "Part" should be defined in terms of booklets rather than performers: A "Part" is the smallest sub-unit of an MNX-Common file that can be printed in a separate booklet. (All the Parts defined in the file having the same number of measures as the Full Score.) Booklets containing just one, or an arbitrary combination of Parts can be defined and printed.
@cecilios, @clnoel: I think we are very close to agreement on the answer to this issue's question: "How to group Parts?". Now for #57! :-) |
In my opinion this should be like in MusicXML: an option in the group definition. |
@cecilios Yes. Agreed. Good idea! |
@notator Agreed on the "booklet" idea. That would also resolve the way I was struggling to define the soprano "part" of an SATB piece when there is a point at which the SA line has three notes. Especially if there is only one such place throughout the piece (like the final note). It didn't feel right to have to define a second-soprano part for the whole piece because of that one divisi, but we had restricted part to one performer. I like the idea of thinking in "booklets" although I'm not sure I'm attached to the name itself. (off-topic: I have a choral background, not a composer/symphonic one, so I tend to think in terms of those pieces of music!) @cecilios Yes. Attaching a |
And what about Mensurstrich barlines? Probably the set of options should be that of MusicXML. |
@cecilios 🤦 @notator What about percussion parts? In a full score they are frequently done on an instrument-by-instrument basis, but there are usually far fewer performers than the number of potential instruments. I can't imagine anyone ever putting out a "booklet" for a triangle part even though it is a stave in the conductor score. Although I guess you could. |
Thanks @clnoel for the link to the group-barline enumeration. Those options should, of course, also be supported by MNX-Common.
Particular Parts don't have to appear in every system (that's something I'm looking at for #57)... :-) Its up to the author of the file to decide how to organise percussion parts. Printed booklets can be defined to contain any combination of Parts, and the number of staves in each Part can vary from system to system (possibly from measure to measure). Presumably, its possible to define the number of stafflines in a staff (I haven't checked). |
@notator I was responding to what you said:
Although I just think I was being nit-picky. Because, as you point out, you could print just the triangle part if you really wanted to. I agree about the flexibility of having these score-layouts for percussion. The conductor can get his one-line staves with the percussion parts on it, and the percussionists themselves can get whatever other notation they want, like having the triangle part appear on a staff with another part, except with a triangle-shaped notehead. (Off-topic: I've seen some weird percussion pieces come through Musicnotes recently. There's no standard at all that I can see.) |
@clnoel Its very good, even important, to be nit-picky here. All, even rather vague, reservations need to be raised and investigated so that we can be sure we're talking the same language, and that there's nothing we've overlooked. Having to think a bit more about percussion parts was, I think, very useful. @adrianholovaty I don't think we can move on to #57 before the results of this issue (#185) have been incorporated into the Draft Spec. The Spec also needs to provide clear definitions of what it currently calls "staff" and "part". Staff: Part:
As you can see from the above discussion, defining a Part in terms of performers or sets of performers (or even instruments or groups of related instruments) leads to endless misunderstandings, and is much less powerful than defining it in terms of printability.
which doesn't help much either. There's no hurry for this, but I think this issue should have even higher priority than #57, which is currently under "Active Review". Maybe you'd like to wait for the next co-chair meeting? (Off topic: I'm nearly ready with MNX-Common by Example, Ties, and will then be starting on the Slur examples.) |
@notator Are you suggesting we put a section in the "Notational concepts" area to define systems before we define what their representational structure is? I guess I can see that, but I feel like #57 is the place where we are creating that definition. I agree that redefining the part definition might be good, especially as there is, in fact, confusion around how to distinguish between two parts that are printed on the same staff due to spacing/layout concerns. Defining it as applicable to a single performer does not allow for a divisi, and therefore is not really adequate. However, I don't understand the problem that the part-staff and system-staff thing is solving. It doesn't solve a grouping problem and it doesn't solve a problem in the part description that is covered by this topic (it has nothing to do with defining which sequence of notes belongs in each part). It is actually pretty clear what a staff is from the current description. Maybe we need a "staff-type" enumeration to facilitate default staff definitions inside the part and overriding staff definitions in the layout structure, instead? |
@clnoel I've been thinking about the current state of play here over the last few days and I'm uncomfortable about just one aspect of it: reusable layout definitions. Let's refer to your recent example which was super helpful in clarifying what's being proposed (see the The following things are bothering me — I am not taking a hard stand on these points yet, but I want to float these thoughts to see how others feel.
Based on the above my feeling is that while reusable definitions are nice to have, they are not necessary to put this issue to bed, and they carry some risk of overreach. Better to put them off. (By the way let's not discuss how a parser can handle reusable defs mechanically, which is pretty obvious. This is not a debate about feasibility. It's just about keeping things as simple as possible when we don't know all the ramifications and are trying to get things done.) |
One clarification - I’m only questioning the need for reuse of definitions below the level of |
New issue for that is now created, @joeberkovitz . Just to be clear, I still advocate for it, but I'm willing to discuss it later. |
With the closure of #266 and #270 and the breakout of #269 (thank you @clnoel) I have no more discussion points to offer here. This feels to me like a really significant chunk of progress: I believe the layout concept is going to turn out to be one of the most useful innovations in MNX. Once we merge a PR, I expect to use the layout structure proposed here to support styles in #263, as well as other remaining gaps in MNX 1.0. |
I feel like it's been a while since anyone had anything new to this issue, so I'm going to re-re-summarize. @adrianholovaty I think this represents our consensus for needed changes. I'd appreciate up votes from the various people, including lurkers, if they are in agreement. (And, of course, comments if you are in disagreement!)
Side issues (out-of-scope) include: Note that, since other people don't seem to want to discuss it, I've tabled my suggested |
@clnoel As you request comments: I have no experience with orchestral scores and on how to prepare the different score parts for the performers. Thus, it is difficult for me to contribute and to spot problems or missing cases. I agree with current proposal. My overall impression is that current proposal for the structure seems to cover normal use cases so it is good to me. You, the active participants, have done a good job developing this proposal. Thank you. IMO this can be closed and move to the side issues, that could add more light. |
@clnoel:
So here's your summary again (edited), with my comments behind, or enclosed in, // marks:
I think the above summary could now be converted into a Pull Request. Edit: The code for the example at https://w3c.github.io/mnx/docs/mnx-reference/examples/system-layouts/ needs to be updated to conform to this summary. Also, when the PR has been merged, we should add more example diagrams and code, especially to illustrate the use of "missing levels". This can be done using further PRs. I'd like to take this opportunity to thank you @clnoel for all your work in this epic thread. Something like this can only be achieved as a cooperation. Disagreements are inevitable from time to time, of course, but I think we've come through unscathed. :-) |
@notator:
Disagreements:
So here's the newly combined summary, with changes or reversions labelled with // marks. I've also pulled out the internal "notes".
P.S. |
@clnoel: Okay, we can go ahead and make a PR from your current version! :-) Here's what I'm thinking in detail:
Yes. This will need to be re-visited after the PR has been merged. As I said, we need some graphic examples and code illustrating "missing levels". These should. I hope, show why I think the stem directions need to be done like that.
I've added this to the list of issues that I want to bring up once the PR is merged. Adding a grand staff to a Disagreements:
Okay. I've made a note that I should create a PR for reusable layout definitions inside
Its precisely because we are not wanting to change the enum, but only add the descriptions that I think this could wait for a new PR. Practically speaking, the creation of diagrams and definitions may mean a little work and discussion that need not hold this PR up. I don't really mind if this is done before or after the PR is merged.
I think you missed my point. :-) But I'm quite happy with your current version. We will have to revisit this once we start discussing All the best, |
@clnoel Thanks for shepherding this issue through, and thanks for the executive summary! I can put a pull request together as a next step.
In the meantime, could you put together these pictures — and (if we're lucky) maybe even example documents for each one? |
In all the discussion of part groups, reductions, and other relatively fancy stuff, I don't know that we've talked about a relatively simple case: an ensemble piece in which there is a conductors' score with all parts (using one layout) and a set of part scores (which all use an identical layout except for the choice of part). It seems to me that this is a pretty common use case. But the current proposal doesn't appear to have a way to express the fact that all the part scores share the same layout, because it is the layout itself which designates which part is to be shown. Thus, each part has both a I'm not going to stop the train for this but it seemed worth pointing out to see if it's a concern shared by anyone else. I feel as though the current structure may be optimized more from a rendering point of view rather than an authoring point of view. |
I'm working on, and am soon going to post, a proposal for describing the labels, brackets etc. in a system's left margin. These things are purely a matter of layout, and cannot be related to This means that part scores cannot share the same layout. Each part score needs its own Update: The left-margin labels proposal, mentioned above, has been posted in #277 |
We now include an image of each symbol, plus a short text description. Refs #185.
…ve under it. Also updated the 'System layouts' example document accordingly. Refs #185.
I was looking at the new section for Parts to the MNX-Common by Example page and it raised the question of how to group parts (the MusicXML part-group elements). I've been looking in the specification and unless I've missed something, I have not found any reference to this.
I would appreciate some comments on this or what ideas are you considering for representing groups. Thank you.
In my oppinion grouping parts is a very important organizational element and this could affect current high level MNX structure, and should be addressed sooner than details of the specification.
The text was updated successfully, but these errors were encountered: