Skip to content
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

Sequence/Part exclusivity in layouts #274

Open
clnoel opened this issue Dec 2, 2021 · 1 comment
Open

Sequence/Part exclusivity in layouts #274

clnoel opened this issue Dec 2, 2021 · 1 comment

Comments

@clnoel
Copy link

clnoel commented Dec 2, 2021

I feel like mode is kind of central and necessary when talking about using part-voice in layouts.
Here's a thought example: Imagine a choral piece, where the final chorus has a high-soprano descant. It's the only place in the whole piece where the sopranos would split, and for the set of measures where it exists, the relevant sequences are labelled voice="descant", and no other voices are labelled, even in those measures.

<system-layout "twoStaffVoices">
    <staff-layout>
        <voice-layout stem="up">
            <part-layout part="soprano"/>            
        </voice-layout>
        <voice-layout stem="down">
            <part-layout part="alto"/>
        </voice-layout>
    </staff-layout>
    <staff-layout>
         ... male voices ...
    </staff-layout>
</system-layout>
<system-layout "twoStaffVoicesDescant">
    <staff-layout>
        <voice-layout stem="up">
            <part-layout part="soprano" part-voice="descant"/>            
        </voice-layout>
        <voice-layout stem="down">
            <part-layout part="soprano"/>
            <part-layout part="alto"/>
        </voice-layout>
    </staff-layout>
    <staff-layout>
         ... male voices ...
    </staff-layout>
</system-layout>

In the descant layout, how does the algorithm know to not repeat the descant sequence in the stem-down voices? The only way for it to know that is if we assume that a note can only show up in a system layout once, and that is patently false as you could easily just add a whole part to more than one staff layout. In order for that layout to work, we need to add <part-layout part="soprano" part-voice="descant" mode="exclude"/> to the downstem voices. We can't assume that any note only shows up in a system layout once, or that a part refers only to the unlabeled sequences.

Originally posted by @clnoel in #185 (comment)

@joeberkovitz
Copy link
Contributor

joeberkovitz commented Dec 3, 2021

I have a couple of questions that may help me understand the issue better. It’s not an objection that this is broken, just trying to get to the core of why this is needed.

  • the example assumes that the descant voice was labeled in a useful way within the soprano part. Why then would the encoder not have also labeled the other voice or voices in a useful way to let them to be included in the stem-down layout, simply omitting descant from the list of included voices? The example seems to be putting an artificial roadblock in the way of the encoder doing something simple?
  • I realize this is jumping ahead a bit, but one could label the events in the split passage with class names and then apply styles to selectively flip stems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants