Explode with voices

• Nov 10, 2017 - 16:00

I know for 3. there is work towards allowing a single staff in the score (eg "Flutes") map to two different parts ("Flute 1" and "Flute 2"). I gather this works by allowing you to specify which voice goes to which part. I haven't played with this enough to know it works, how well it works, how much more work there is to do, etc. But I'm wondering, short term, could the Explode tool be used to help with the process of setting this up manually? I know from time to time the idea of having Explode do something with multiple voices comes up, but my impression it mostly had to do with a fairly different use case - converting SATB score from closed to open. Which might well have different expectations. Or does it? What do people think the results should be if one does an explode on a staff that contains a combination of single note passages, chords, and multiple voices?


That's a complicated question. I've often wished I had this feature, but I'm torn as to how it should work. I normally want it to separate parts from one staff to two in orchestral music. The problem arises when I consider that the one line with both parts has a combination of chords and voices. I also have some staves with 3 parts on them with the same dilemma, a combination of chords and voices. In both situations there are places where who plays is indicated by something like "Flute I only" with no voice 2 rests as in a lot of classical scores I have seen. I'm not sure how to make this scenario work with explode.

In reply to by mike320

So I'm in exactly this situation right now, which is why I ask :-). I have my doubts about how well the automated scheme for MuseScore will work given exactly these complications: mixtures of chords and multiple voices used to indicate the separate parts, as well passages where a single line is intended to be one part only. But I do suspect I could come up with an algorithm that made the Explode command do its best in these cases, with the caveat that I'd still probably need to deal with the solo passages manually. The question is, would such an algorithm also do the right thing for choral scores, or are the requirements different enough from the orchestral case as to mean an algorithm that works well for one would not work well for the other?

I'm kind of suspecting I could make it work in a way that was "good enough" for both cases, but I'd like to see more discussion here before I proceed.

In reply to by Marc Sabatella

Whenever someone make a suggestion that could make my music entry easier (or harder), I like to comment on it and give my opinion as you are probably well aware. I always hope others will give their opinions so it doesn't boil down to two or three people making a decision that will affect many users.

I think the problem is that the average user only looks to the forums when they run into a problem they can't solve. They either don't know or don't care that this is the place to introduce changes to the program that they may wish were done. Perhaps there is a way to advertise the forums to encourage more people to read them.

In reply to by mike320

Well, a condition would be that users have perfect command of English, or their mother tongue, to get involved in such a discussion ("complicated question", you said) with solid arguments. This condition, of course, is not, cannot be fulfilled.
The development of MuseScore is done by people who speak English for people on the same side. Otherwise, you have to be motivated, and have a minimum of control (rather, to have already an expertise ) of the MuseScore tool to dare to get involved in this kind of discussion.
I sometimes use this "Explode" feature
I just do not understand Mark's first message. Or rather, it has too many things / ideas, not concretely illustrated.
We should classify the most frequent use cases and make one or more proposals: and say / show, currently, we get that, that's what we could get, this or that.

In reply to by cadiz1

I can explain by way of example I believe. The attached file has some sample measures form an actual score transcribed to look like it did in the original score. The first line shows what was in the original score. The 2nd and 3rd lines show what each line of music would look like if Explode were used.

explode example.mscz

Notice that in the 3rd measure, there is only one line of music. When you explode it is moved to both instruments. If this is a unison section, that is what you want, if it is a solo section for one of the instruments, you only want it on one instrument. In the measures with voices, both voices are currently exploded to both instruments which is rarely what anyone would want. In the last 3 measures where there are chords written, they explode to the proper instruments. Mark is asking if there is a way to determine how this should properly explode so each instrument gets the correct lines of music on them. This is a simple example with very clearly defined parts (except measure 3) so an improved Explode command would be able to do a reasonable job of putting all of the music in the correct parts. I said this is a simple example because it is mostly very obvious who plays which notes. I have lines of music with 3 instruments written with a mixture of chords, 2 voices and 3 voices where determining the desired results of Explode becomes more complicated.

I realize that there is a language barrier that keeps some people from entering into such a discussion. Having looked at the French forum in translation, I see why it is confusing for someone who only speaks French to try to follow the discussions in English. We use totally different words for many terms. I would encourage people who do not speak English to not allow this to be a barrier. There are people who are willing to explain terms that someone speaking another language does not understand much as I am attempting to do here.

In reply to by mike320

Yes, we are are definitely talking about the same thing. Let me present a simpler but also more complete example, and maybe we can talk about that. I have attached the MSCZ file, here is what it looks like:


We have one staff being exploded onto two staves. The first thing I note is that in the case of someone writing for a saxophone section as I described before (case #1), the expected result after Explode would be for each of the three staves to have only a single part. In case #2 with the two flutes sharing a staff in the score, the expected result if for the top staff to stay exactly as it is, and the bottom two staves to show the two individual flute parts. In case #3 with the SATB score, think the expectation is the same as case #1 - the contents of top staff get replaced by the contents of the top part. But we can around that by saying that for case #2, you have to start by copying the top staff to the second staff, then exploding that. The real question is whether the actual handling of each the individual measures should be the same for all three cases. My guess is there will be agreement about some of these measure, less so about others.

So what I think would be interesting is for people to post their own pictures showing what you think the Explode command should do here. If there is widespread agreement, I can probably implement it. if on the other hand everyone has different ideas about the right thing to do, we need to keep working.

Attachment Size
explode-voices.mscz 8.66 KB

In reply to by Marc Sabatella

I believe this would be consistent with standard notation rules for shared wind instrument staves:


While this would be what I would expect for strings:


In my opinion, the best thing to do is implement a way to modify "explode" and "implode" behaviour depending on the presence of the keywords "a2", "1.", "2.", "col 1", "div.", "unis.", etc. I see this as being kind of like how "pizz." and "arco." can be made to modify mixer sounds.

In reply to by shoogle

Yes, ideally we would track the a2, div, unis, tutti, etc - but realistically, that's a big can of worms. Seems it would kind of be needed in order for a fully automated system to work, but more of a "want" for an explode tool - you can always fix up those things later.

In reply to by mike320

Hardly. You don't need to write "pizz." to enable the pizzicato sound effect; you can write anything and then you go into the text properties and enable whichever sound effect you desire, or none. That's the kind of system I envision for "explode" - it wouldn't be automatic or involve any kind of AI at all. It's just a few simple rules:

  • "1." (or equivalent) - notes belong to 1st stave only. Similar for "2.", "3.", etc.
  • "a2" (or equivalent) - Chords are split between staves. Voices are split between staves. Lone notes belong to both staves.
  • "div." (or equivalent) - Voices are split between staves. Everything else belongs to Staff 1 only.
  • "unis." (or equivalent) - Cancels "div." - everything belongs to Staff 1 only.

It's really not complicated at all, and I don't see how it could be done without text markings.

In reply to by shoogle

That being said, it is possible to have a partial implementation without text markings. This would require two explode algorithms:

  • Wind instruments - Chords are split between staves. Voices are split between staves. Lone notes belong to both staves. (In other words, if no text is present then "a2" is the default for wind instruments.)
  • Stringed instruments - Voices are split between staves. Everything else belongs to Staff 1 only. (i.e. "div." is the default for stringed instruments.)

The correct algorithm would be used depending on whether the instrument was defined as a wind or stringed instrument in instruments.xml.

Still, with this system in place I don't see it being much extra work to add "1.", "2." and "unis.".

In reply to by shoogle

Having re-read the above I think we are talking about different things. I was talking about how this should work in MuseScore 3, whereas Marc was talking about a stopgap solution to use until MuseScore 3 is released. That being the case I would say that "explode" should always just implement the "a2" algorithm, no matter what type of instrument it is being applied to.

In reply to by shoogle

You can't have it work perfectly and automatically without markings, indeed. But as we seem to be agreeing, it wouldn't be wise to rely on the text itself, any more than we do for pizz - it would have to be some new property attached to the text. Anyhow, yes, a fully automatic scheme is way way beyond the scope of what can be done for 2.x - it relies on the voice-to-part feature that is master only. So while that's a fine topic for future discussion, it isn't that relevant here. I'm trying to figure out how I can improve the situation today, for 2.2.

That's why I'd like to find the most generally useful Explode semantics for multiple voices. That would allow people to get a very good head start on the process of extracting these parts, and then they'd just have to fiddle with the passages that the default handling doesn't get right.

I think the "wind" rules are probably the ones that make the most sense, as this is the case I think that will come up the most. Violin 1 & 2 already get their own staves almost always; the string rules are just for the case where one of the parts temporarily splits onto two staves, right?

In reply to by Marc Sabatella

There are two violin sections in an orchestra with their own parts. There are times when a section plays div, which tells the instruments to divide the section into an appropriate number of parts. Most of the time, these parts are kept on the same line in orchestral scores as well as the parts. On occasion they will be split between two (or more) staves as long as necessary. This is usually because it would be confusing as to who plays which notes if they are on the same line. When div. into 3 or more occurs, there are almost always extra staves with no more than two parts on a staff. All of this is true of all string instrument sections. I realize that strings are capable of playing multiple notes at a time, so this makes it more difficult to design a function that will take all of these possibilities into account.

Since it seems a choice must be made to go on with the project, I would say the wind scenario would be the most useful, unless you want to create 2 new explodes or have an options popup when it is executed.

In reply to by mike320

So I think we are all in agreement here. The rules for an advanced explode tool in MuseScore 2.2 should be:

  1. Chords are split between staves
  2. Voices are split between staves
  3. Lone notes belong to all staves

And here are a couple of special cases and how to deal with them:

  1. If there are more notes in a chord than there are staves to explode to...

    • divide the notes equally between staves, with any remainder going in the upper staves
    • so 5 notes divided between 3 staves would be shared 2, 2, 1 between staves.
  2. If there are voices and chords present at the same time...

    • voices take preference for determining which staff gets which notes/rests
  3. When a voice contains an invisible rest...

    • the rest is ignored for the purposes of explode (i.e. the voice is considered empty)
    • so if there is an invisible rest in Voice 2 then the contents of Voice 1 is shared between all staves

There are more complex cases, but they are unlikely to appear "in the wild" (and if they do appear then musicians will probably not be able to agree on an interpretation anyway).

In reply to by Marc Sabatella

As one of the scores for our choir rehearsal needed to "extract" a mezzo-soprano part from the soprano-staff; I had a go at a very basic plugin helper.
It has a lot assumptions though: It basically copies all of voice1 from one staff onto a different staff, but only for regions that don't have voice2 data in the original staff. It basically automates you having to copy and paste all these inbetween fragments yourself.

Far from being a real solution of course, but it could lighten the pain in 2.1 for now. Have a look at https://musescore.org/en/project/copyfill-a2div-style-score (for God knows how I had to name the beast)

In reply to by jeetee

Thanks for this! I may well take a look at your work. But FWIW, I did make a very brief stab at what we've been talking about thus far, and immediately realized the real problem here - measures with mixed content. For example, measures where the first couple of beats use chords, then multiple voices just for the nest beat, etc. Or places where the moving line happens to be between notes of a chord, or crosses above/below over the course of the measure, etc. It's the deciding how to identify the part to be extracted that is hard, not the actually doing of the deed.

In reply to by Marc Sabatella

@Marc, I'm struggling to picture anything that the rules I suggested wouldn't work with. Perhaps you could give a visual example?

> For example, measures where the first couple of beats use chords, then multiple voices just for the nest beat, etc.

This shouldn't matter. The rules I gave were never meant to operate on the measure level; they are supposed to consider each segment individually. The only tricky situation I can think of is when voices contain notes of different lengths, but solving that just involves keeping track of what the last thing in each voice was, and where it was in the measure.

In reply to by shoogle

The case of different lengths is indeed what I mean. Tricky if voices appear and disappear and in different relative positions vertically over the course of the measure. Not saying it isn't solvable, just that it is more than the very simple extension of the current code I was hoping it might be. We don't currently do anything like this at all.

In reply to by cadiz1

Yes, I apologize, I know my original post was kind of vague and probably hard to understand even for native English speakers. Let me try to be a little clearer.

As I see it, there are basically three situations where people are likely to want to use the Explode feature:

1) You are composing new music for a group of related instruments (say, five saxophones in a jazz big band), and you have a passage where everyone has the same rhythm, articulations, and dynamics, but different notes. This is the only case the current Explode feature was designed to handle.

2) You are creating a score in which you have two related instruments (say, two flutes in an orchestra) sharing a single staff, but you want those two flutes to each gets their own part. Right now, you can do this by actually having three staves for the flute in the score: one that has both parts combined, and then one for each of the two flutes. Make the first staff visible in the score but don't generate a part for it. Generate parts for the other two but make them invisible in the score.

3) You have a choral score for four voices represented on two staves ("closed" format SATB, with SA on the top staff and TB on the bottom) and you wish to convert it to four staves ("open" format SATB with S, A, T, and B each on their own staff).

The question is, can we design improvements to the Explode feature to handle multiple voices that will actually handle all three of these cases equally well? Are there situations where people in case #3 would want something different from people in cases #1 or #2? I used to to assume the answer was yes, and that there was therefore no good way to handle multiple voices. But maybe I'm wrong. Maybe there is a good way to handle multiple voices that makes everyone happier - or at least makes most people happier than they are now, and doesn't make anyone less happy.

If I understand this question correctly, my suggestions are:

There is no perfect solution I think.
May be there are two types of menu entries: a) Explode (instrument) b) Explode (voices)

a) Explode (instrument)
in same stave, some places has only one note and some places it can have more notes than the number of parts(1), in which case:

1.1. When there is a single line : each part has the same copy. (the user deletes the unnecessary one)
1.2. When there are two lines...: divide the sound into X parts in pairs. (user deletes unnecessary ones)
1.3. When it is more than X lines...: add the extra voices, starting from the top part to the bottom.
2. Software predict parts, according to the area that voice contains. (some kind of logical process req'd.)
99. Ask the user (this should be the least desirable situation; On a multi-pages score, this can be unbearable.)

(1): for example: Piano or Guitar to Strings-quartet.

b) Explode (voices)
Voices are another problem.
Sometimes it is used only because it is needed (think: Right hand of piano). Sometimes it shows two separate parts (like: Horns 1, 3 and 2, 4).

i. Each voice goes separate staves.
ii. A complex logic is considered, including both of 1 and 2. options of above (and more).

need to specify the following note:
Explode succeeds if the instrument (system/stave) consistently contains a certain (constant) number of notes (or voices). Otherwise: you may have to manually correct any errors that may occur.

So it turns out there has already been work done on making explode work with voices and it is already merged for master. However, it is all or nothing: either we deal with the source as chords or as voices. So it doesn't really help with this case. So now I'm wondering, what case was it trying to help, and would the more general algorithm we are looking at here still be good for that case?

See the PR that added the functionality here: https://github.com/musescore/MuseScore/pull/2760

Hey guys, it's good to be back in the Forum after a while (Sorry, College eats up your time).

I don't have that feature, but I figured I could go ahead and give suggestions in this area.

Anyway, as someone who arranges Choral Music a Lot, my expectations in regards to exploding voices is that The SA staff and the TB staff will each explode into two separate staves when it becomes necessary, arrows indicating an explode or implode should be included. An Implode from 4 staves to two should also be added. Oh, and Line breaks should be implemented with both. (Voice 1 on one Staff, Voice 2 on the other).

As for Orchestral Music, the only instance I would see that would be for the woodwind section and all that, if the two flute parts, or two Clarinet parts each play something different.

For both, I think Labels should also be used, so the reader won't be confused.

I do think the Explode tool could be used to achieve this. I'm fine with any tool just as long as it isn't confusing.

Do you still have an unanswered question? Please log in first to post your question.