Add a two and four measure (multi-measure) repeat sign with playback

• Apr 12, 2011 - 11:56
Reported version
3.0
Type
Functional
Frequency
Many
Severity
S5 - Suggestion
Status
closed
Regression
No
Workaround
Yes
Project

MuseScore provides a repeat sign for one measure (without playback) similar to %. A repeat sign for two measures with two oblic lines is often used as well.

See full discussion : http://musescore.org/en/node/3441
Example


Comments

this would be especially useful for us drummers! This type of notation very common.

And it goes without saying, that for any repeat symbol It MUST PLAY the repeated measure(s) during playback.

I personally do not need it to play back.

What I would like to see is this double repeat sign with a facility to place it centred ON a bar line in the middle of that number of bars, or centered in a bar for odd number sections, and the ability to add a number over it, representing just how many bars to repeat. For example, "Repeat the previous 4 bars" with 4 bars left open and the double repeat on the middle bar line. I have used this a lot with hand scoring..

For me, this would be very useful, especially if it was an object attached to that bar line so one could, within those bars, write alternative notes or phrases of short duration, say an 8 bar repeat with an altered rhythm in bar 7.

Regards,

Xavierjazz, four three and four measure repeats you should use repeat barlines. Although three and four measure repeats are sometimes used in handwritten scores by composers and arrangers (to save time) they are not considered acceptable for use on performance scores (see Alfred's Essentials of Music Notation, 55, and other notation resources for this information). Since MuseScore supports copy and paste there is no need to support three or four measure repeats. This issue report should be limited to two-bar repeats.

It's not just about saving time; it's also about saving space and about readability. A four bar riff takes way more room than a four measure repeat sign, so if you have a whole bunch of them, we could talking about fewer page turns. It's also easy to get lost in passages like that, and reading four bar repeat signs rather than individual measures can help. As for repeat bars, that only works if the whole ensemble is repeating, which is unlikely. I guess you could introduce repeats into just the affected part after extraction, but that's not ideal, and it probably wouldn't work with linked parts.

While I'm sure that historically there were good reasons for using other methods in other styles of music, and that's where textbooks may be coming from, I think a modern notation should reflect modern practice. These sort of symbols are too useful in jazz, rock, or even minimalist music to not make them available just because an old-school publisher recommends against them.

I understand that. I think the most important part of Marc's post is, "I think a modern notation should reflect modern practice. These sort of symbols are too useful in jazz, rock, or even minimalist music to not make them available...".

Personally I would rather consider this than whether or not some past or present authority supports this type of notation or not. This symbol is, to me, very useful. If no one wants to program it, okay, but I would rather not get lost in "He says, she says, we must".

The point for me is usefulness.

Warm regards,

Agreed. If there really is that much current advice against the use of these symbols, I can see not making it available "out of the box", as with Finale. But then, it should still be possible to create the notation somehow if one really wishes. That's much how many other non-traditional aspects of notation are treated in MuseScore.

BTW, since I don't have the Roemer, I'm curious what alternative he suggests, and how he counters the observations I've made, or if he evem attempts to I recently picked up a copy of his much-vaunted chord symbol notation book, and found it kind of frighteningly arbitrary, calling various common uses "unacceptable" without giving a single reason for it. And then proposing alternatives that no one in their right mind would ever use, like Cmi(b5) instead of Cdim or Co for a dimished triad. Don't get me wrong - I do think most of his suggestions are pretty good. But he does tend to make fairly unilateral judgements rather than actually reflecting common practice. So I can't help wondering if this other book is similar.

That is common.

The thing about the .png is that the repeat references only the chordnames, allowing a different melody to be written.

SOLUTION!
Simply place a repeat sign in each of two adjacent bars, and then drag them together over the barline that connects them. Create staff text above them (CTRL+T) with the number 2 (or whatever number you desire), and use MuseScore font size 20. Takes less then 30 seconds!

Attachment Size
2barrepeat.png 2.91 KB

Thanks for the workaround. But is the solution still working when the first bars happens to be pushed at the end of a line, or something happens with the width of the bars? I support the request for a two-bar symbol, this should be also compliant to standard scoring rules. And I am fully convinced by the readability argument and would consider 4,6,8 bars very useful, though they may be not "official".

This sort of repeat dose not seem to be included in MuseScore 1.3 on an XP computer. I am attaching a peace that show what I mean. There is a bare repeat with four dots rather that the normal two which we have in MS.

Attachment Size
Hold the Fort 001.pdf 101.18 KB

@Wena this is not what this feature request is about. You should open another one. That being said, what you see in your score is a very particular and old repeat bar, it's unlikely MuseScore would support it.

From what I can gather reading Gardner Read's "Music Notation: A Manual of Modern Practice" there are not now nor have there ever been any 'standard' rules. There is no 'old-school', there is no 'modern-school', there are only pockets of conventions typically handed down teacher to pupil, and they only somewhat agree. Read cites examples of the double slash percent being used multiple times in a single bar to repeat a figure (Shaun Evans does this too) . Read goes on however to describe an alternative to the multi-bar repeat:

"on rare occasions will there be repeated a three- or four-measure pattern simple enough to justify the use of the bracket over the measures, again with the word 'bis' centered over the group" (his example looks like an alternate ending bracket broken in the middle with 'bis', ie 'twice' written in)

So it is maybe up for grabs for anyone who cares to blaze the trail. There are no rules, only conventions. And an acciaccatura, for example, can mean just about anything, and we should just be thankful the twentieth century explosion in notations as catalogued in John Cage's book 'Notations' did not catch on in any big way ;)

So far as I can tell, what we think of today as the standard set is a modern invention of convenience by the digital publishing industry; it is an artifact of the way we now prefer to (cheaply) typeset our music. Composers as recent as Stravinsky were still creating their own private dialects of musical schematics, and absolutely no one dared tell Igor he was 'wrong' (Bernstein tried, only once, and was reportedly beaten with the rolled up score!)

So the decision falls only to pragmatism. If the mod is easy to make in the code, I think there is a strong case for adding n-bar repeats; without a doubt a 16-bar repeat sounds absurd, but given late twentieth century minimalism, is it? From disco hits like TSOP to Philip Glass's Einstein on the Beach, a lot of tunes might fit on far fewer pages with n-bar repeat signs ;)

The situation composers have today is one where the machine tells the artist what is possible, and I think that is wrong; as William Burroughs put it (in a notorious Nike commercial no less) "Technology should serve the mind, not enslave the body" which I'd take as advice to say, "when in doubt, implement both". :)

So great, thanks for contributing. "The situation composers have today is one where the machine tells the artist what is possible, and I think that is wrong;".

For some reason it brings to mind a cartoon of a man yelling at a tractor.

Best wishes,

Has this feature been or is it going to be added? I have a four bar phrase repeated four times consecutively within a longer repeated section. It would be very handy to have an "n" bar repeat symbol to save space and make the score easier to follow.

The workaround above (dragging two repeats to the bar line) is broken in recent nightly builds. There appears to be a max offset being applied.

I'm running: c67a0ae

I'll also chime in that this is a very common notation used in modern drum and guitar lead sheets and musical scores.

Please consider adding this symbol to the palette and please restore the ability to drag repeat signs to the bar line in the meantime.

I'm attaching a few excerpts from musical scores that show these symbols:

- Jesus Christ Superstar (Vocal Score)
- In The Heights (Drum Score)
- Legally Blonde the Musical (Drum Score)
- Zombie Prom (Drum Score)

Attachment Size
JCS 2bar rpt.png 88.61 KB
ITH 2bar rpt.png 238.67 KB
LB 2bar.png 530.97 KB
ZP 2bar rpt.png 244.99 KB

What do you mean when you say "please restore the ability to drag repeat signs to the bar line"? Are you saying you are seeing an unrelated issue involving repeat barlines? I don't have any difficulty dragging repeat barlines onto my score, but if you are, you should probably file a new issue and describe the steps you are following precisely.

Shoichi: Does it work if the measures are wide, say if there are only 4 measures on a line? I'm seeing the offset being limited to 5.0sp meaning I can't drag the repeat sign to the bar line on wide measures. This used to work in older builds. I'm running a build from 12/12/13.

Shoichi: I figured out that I can move it using the inspector, but that is a huge inconvenience. It should be draggable to an arbitrary location as before.

Draggiong has never been a good way of doing these sort of things - double click and arrow keys is better. And that still works fine as far as I can see?

I guess I see dragging as the most obvious use-case since the user is dragging the symbol from the palette to start the operation. The "easiest" in terms of fewest mechanical operations is:

1. drag the repeat symbol from the palette to the measure and drop it there
2. drag the resulting repeat symbol to the desired location (in this case, on the bar line)

The above suggestion is to :

1. drag the repeat symbol from the palette to the measure and drop it there
2. double click the repeat symbol
3. move right hand to keyboard (since it's been on the mouse so far)
4. operate the arrow keys (tap, tap, tap -or- hold, but I'll probably overshoot and need to tap tap tap some more)
5. return right hand to mouse
6. de-select the repeat symbol (not sure, the app is in a new state after #2 and may need to be reset?)

The point is that efficiency matters and, while the arrow keys work, direct manipulation through dragging is much more accurate and efficient.

It may seem like I'm making a mountain out of a mole-hill, but changes in behavior like this sometime surface usability issues. Dragging to the bar line used to work and was an unremarkable feature. Something changed to limit dragging and this is now showing up as a productivity impact for at least this user.

We should want editing to be quick and painless and while workarounds like using the inspector, or double-clicking and using the arrow keys are technically equivalent to dragging, they introduce many more steps and make these operations nearly as painful as reading this rant that I'm typing.

OK, enough from me!

Does anyone acually use mice any more? :-) I think for most of us, trackpad is close to keyboard. And using arrows allows much more precision and reproducibility than dragging. That's why I consider it superior. But sure, if it happens to be convenient to fix dragging, I wouldn't be opposed to having that option - I just wouldn't use it, nor would I want to be limited to dragging, as it's kne of the least efficient operations possible for someone who prefers using the keyboard where possible.

Anyhow, better would be to simply implement the proper symbol.

This thread seems to loose focus. :-(
A n-bar repetion symbol ( n preferablly 2) would enhance ergonomics with any favourite input devi e ;-)

Yes, sorry, the drag/inspector debate clouds the real issue.

Add a 2-bar repeat, they are common notational devices.

The other issues should be broken out into separate bug reports.

Based on my limited understanding of the internals, I can see why it might be non-trivial to implement a working two-measure repeat sign, and why more general n-measure repeat sign would be even more so.

But I wonder: SMuFL defines a repeat2Bars glyph. Why not simply add this to the palette and allow it to be placed just like the existing repeat1Bar glyph? User would still have to move it into place manually, and hide the contents of the measures, and there would be no playback effect, but this would be an extremely cheap interim solution.

SMuFL defines a four bar repeat sign too, but there is no number. I thought about suggesting a bar line style too, but while it gets the job done, it seems pretty kludgy to me. After all, it's *not* in any sense a barline style. It just happens to be *displayed* over the barline. Making it so you could click a barline then double click the palette symbol and have it attach to the barlone (or drag & drop onto the barline) might be a semarntically cleaner to avoid the need for manual positioning. But that might be as much work as just implementing it "for real".

Is there a way of adding a +1 to a feature request without a spammy comment? (Consider this is a spammy +1 comment. ;-) )

A generic n-measure repeat symbol would be very useful (instead of having to workaround).

I wouldn't consider playback to be important (considering that musescore is not intended to be a midi sequencer and would interfere with internal understanding of repeats and measure numbers, esp when nested).

Yes, that is why this issue has already been filed :-). Meanwhile, the symnbol *does* exist in the Symbols palette (press "Z" to display); you just have to position it manually.

Thank you, Marc,
for your kind and fast answer.
Unfortunately, I've been scrolling the Symbols (z) palette up and down, but I wasn't able to find the symbol. Can you tell me where that is?
Thank you,
Gianpaolo

On the subject of scrolling up and down and not finding things… there's got to be a way to add a search box to the Master Palette to filter through the crushing mass of symbols. Something to think about.

Indeed, it's being thought about :-)

Meanwhile, though, this is as good a time as ay to put in a plug for the customizable palette feature. Once you find the symbol, add it to a custom palette, and at least it becomes easy to find in the future.

MuseScore 2 doesn't have an easy way to do this. When you select the double repeat sign in the Repeats and Jumps Palettes Menu, it puts the two-measure repeat sign in, but it doesn't actually join the two measure in a two-measure repeat.

Here's my work-around:

First, create your score:

DoubleMeasure1.png

For a two measure repeat, put a single measure repeat in both measures you want to turn into a two-measure repeat:

DoubleMeasure2.png

Go ahead and add the text above the bar line indicating a two-measure repeat, and the number of times this is to repeat:

DoubleMeasure3.png

Drag the two-measure repeat sign from the Repeats and Jumps Palettes Menu and attach it to the line between the two measures. It will need to be moved to sit on the bar line:

DoubleMeasure4.png

Do this to your entire score, saving as you go.

Select each of the single-measure repeats you've put in as place holders, holding down the command key on the mac as you click each rest (this will select all of the rests you click):

DoubleMeasure5.png

Now, once all the rests have been selected, you will see in the Inspector Menu a click box called Visible. It's checked. Uncheck it:

DoubleMeasure6.png

All of the single measure repeats will now be a light gray. DoubleMeasure7.png

You can still see them as you edit your document, but they won't appear when you print it out.

If you want to play this score in MuseScore, this won't work. This is only for printing scores.

Well, I finally found the 2 measure repeat sign - 36 clicks on the "next page" bar to get to the proper "page".

I also clicked on the repeats section of "Z". There is a single repeat only there, and when I tried initially (before I found the 2 bar) it inserted, but wiped out the rest in the bar. We don't need the rests but with that rest missing, I couldn't just copy the 2 bars and replace.

The 2 bar repeat sign leaves the rests in the bars.

Yes, you'd need to make the rests invisible.

In the current version 2.0.2), you can find symbols more easily by simply typing into the search box at the top pf the window. Eg, "repeat" will natrow things down to less than a dozen repeat-related symbols. No need to scroll through page after page of symbols.

I'm not against the rests, I just commented on what I found. The repeats and jumps selection has, as I said, just the single bar repeat. I used it first and moved it over a bar line and added "2" over it. Then I read further and found out about the 2 bar, etc. rests. Thanks for the search tip.

I downloaded MuseScore a couple months ago and started using it in earnest 4 days ago. I was putting together a chart for a band I'm in. I'd transcribed horns, bass, guitar, and some drums (only sections where needed as a cue) from a recording of a previous incarnation of the band. There was a lot of material and I really, really, really needed a 4 bar repeat.

Regardless of whether it's "proper" from a notation standpoint or what the visual hacks are, here's the practicality of my situation:

I wrote out the chart and brought my computer to rehearsal. I played my transcription for the bandleader and he detected errors in the bass and guitar parts. I transcribed it correctly but the players on the recording had "rewritten" their parts. The bandleader wanted it changed back. These were both 4-bar patterns that repeated roughly 8 times. If I'd had a 4-bar repeat pattern, I could have changed it once. But since I had to build out the 4-bar pattern and hit R seven times to copy it, I now had to change it 8 times. In addition, if the printed part had had the 4-bar repeats, the sheets for bass and guitar would have been 2 or 3 pages AND much easier to read. Doing it the current way (MuseScore version 2.0.3(?)), they were each 6 pages.

In *my* case, I needed it for both printed parts AND playback (demo and some drum rehearsal).

All this said, even with this "flaw" in the product, I'm VERY impressed. I got some scoring off the ground in a hurry (including time signature changes, tuplets in 12/8, etc. etc.) and by bringing the computer and professional looking parts to rehearsal, it transformed the inefficient way we usually do things. The product FAR exceeded my expectations. If I had this capability and one other thing fixed (I'll save that for another enhancement request), it would have been a 100% success instead of 95%. But long term, my efforts will be far more difficult without this feature.

But since I had to build out the 4-bar pattern and hit R seven times to copy it, I now had to change it 8 times
In case you missed it you could also change it once, select it and copy paste it 8 times.

But fair enough, it doesn't beat a 4 bar repeat.

For developers reading along, one more time, the hard part of this feature according to me is not to add the symbol or deal with the playback but it's a way to make sure that the X measures will always end up on a single system and never be separated from each other.

but it's a way to make sure that the X measures will always end up on a single system and never be separated from each other.

Just to make sure I'm understand what the issue is, are you saying the problem would be how to handle cases where musescore would break a system (either by a deliberate user-inputted line break, or because one staff of a multi-staff part can't fit within the page width)? In this mockup below, this is one possible way I would think to render such a case:

4-meas-repeat-break-system.png

Basically I would say have the break occur wherever layout says it should occur, but then make sure to make invisible the ending barline of that staff of the multi-measure rest.

Please correct me if I'm not understanding.

I'm realizing now there is also a question of where to place the n-bar repeat symbol when the line break occurs exactly in the middle of the n repeated bars: 4-meas-repeat-break-system-in-middle-of-repeat-where-should-put-symbol__.png

I know a couple Finale users. I'll see if I can get one of them to whip up something and get a screen capture of it.

I'll be more than happy to thoroughly test this feature when/if it becomes available and report back in detail to whomever the developer(s) is.

Thanks!

I know a couple Finale users. I'll see if I can get one of them to whip up something and get a screen capture of it.

I'll be more than happy to thoroughly test this feature when/if it becomes available and report back in detail to whomever the developer(s) is.

Thanks!

A 4 measure repeat over a system break might just automatigically split into a series of 1- or 2-measure repeats (SMuFL and Bravura has glyphs for 1-, 2- and 4-measure repeats, not more) and such a series might automagically collaps into a 4-measure repeat if a change in layout places them all in one system.

A 4 measure repeat over a system break might just automatigically split into a series of 1- or 2-measure repeats

No that will not work... a 4 measure repeat means that the player needs to repeat the 4 previous measures. If you replace it with two 2-measure repeats you change the semantic...

Thinking aloud: I'm thinking multi-measure repeat concept would share much but not all of same code as multi-measure rest. Currently class Measure has these private variables

      Measure* _mmRest;       // multi measure rest which replaces a measure range
      int _mmRestCount;       // > 0 if this is a multi measure rest
                              // 0 if this is the start of a mm rest (_mmRest != 0)
                              // < 0 if this measure is covered by a mm rest

I'm wondering if both multi-measure rest and multi-measure repeat should be covered by a new (currently non-existing) class called "MultiMeasure", or maybe instead at least have a lot of Measure class's functions and variables with "mmRest" in their name changed to just "mm".

Of course wouldn't share all behavior between multi-measure rests and mult-measure repeats, such as when a user toggles displaying multi-measure rests, then wouldn't want multi-measure repeats to be expanded out.

I'm thinking when displaying full score if only one staff contains multi-measure repeats, then each of those measures would be internally represed as individual measures, such that they would still visually look like a multi-measure repeat, but are really a series of measures with barlines set to invisible. But when only displaying a part where all staffs are multi-measure repeats, then would collapse all those measures that repeat a section into a single mult-measure repeat measure.

I'm also thinking about what happens when copying measures of a multi-measure repeat. If all the initial measures of the repeated section were included in the copied selection, then could copy entire measures as internally represented, such that the measures would be pasted as multi-measure repeats. But if copied selection doesn't include the initial measures of the repeated section, then would copy every segment from the initial measures of the repeated section.

Anyway, I might take a stab on this now, but I won't assign myself due to my habit of not following through.

another thing to consider

musescore symbol browser currently has symbols for single-meas, two-meas, four-meas repeats:

musescore-symbols.png

But I would like the multi-measure repeats to generalize to any number. Would be nice to display as many slashes as repeated measures. I'm wondering if should (or at least have the option) to additionally display the number of repeated measures ontop of the symbol,

4 w/out numeral:
4x-without-numeral.png

4 with numeral:
4x-with-numeral.png

5 with numeral:
5-with-numeral.png

5 with numeral inside the slashes:
5-with-numeral-inside.png

After some google sleuthing, I really haven't found how sibelius or finale handle multi-measure repeats (outside of user hacks). I did find this lillipond page http://lilypond.org/doc/v2.19/Documentation/notation/short-repeats

which presents an intersting dillema... Here likipond is using the number above the percent sign to indicate the count of how many times the measure repeat, or multi-measure repeat, has occured (I suppose to faciliate the reader's counting). I doubt this is standard, but that display method would conflict with the use of a numeral indicating the size of the multi-measure repeat.

I do notice for two measure repeat, that lilipond is still keeping the barlines and having the barline bisect the double-percent sign, but I worry with any more than 2-measure repeat, then that method might cause confusion cause would display measures with nothing inside of them (which might confuse reader into thinking nothing is to be played).

This is also the consideration of *nested* repeats. For instance in this sample chart someone actually gave me to read a couple days ago:

nested-mmrepeats.jpg

where that first 4-meas multi-measure repeat consists of {the first measure of the 7/8 repeated three times, then the 4rd measure of the 7/8 played once}. I think this should be valid input that musescore should handle playback (or at the minimum not crash). But then hypothetically might even have that entire thing be enclosed by another multi-measure repeat (whether or not such notation is something easy to read or if used often is another question, but it would be nice if the implementation could handle such cases). I'm thinking would look back according to an integer number of measures, and then recursively resolve the lookup to get notes from the initial measure. That would also work for case that have a sequence of multi-measure rests as well.

And looking at that handwritten score I notice still have the barlines but have a long slash that goes across all barlines, and with the number on top. I don't think that is standard notation (but then again I don't think there is any official standard notation on multi-measure repeats), but I'm thinking of considering that notation. The advantage is that you could break a multi-measure repeat across a line break, and also would still at least have some ink inside the first measures of the multi-measure repeat which would indicate to the reader that there is something there (as opposed the concern I raised earlier about empty space which might confuse the reader into playing nothing).

Another note to myself...if when viewing full score or a part and someone tries to insert a measure inside of a section where or or more staffs are repeated measures, then should handle that somehow...maybe present a popup telling user can't insert measure there since shouldn't break a multi-measure repeat.

one more consideration: I'm noticing at https://musescore.org/en/node/34946 that

is using the numeral to indicate the number of times that the *previous single measure* is repeated. This is different semantic than saying that the previous 8 measure will be repeated. I think it would be nice if musescore could handle both situations: (A) have a set of N measures be repeated once, and (B) repeated N times. But now I'm wondering if should handle both A & B together: repeat a set of M measures N times.

Again nothing is standardized, but after looking at this image, I'm thinking that for multi-measure repeats, the slash should extend across the measures being repeated, so that it is visually clear that there are multiple-measures that are repeated.

looking back at comment #10's example:

I'm wondering about what happens when chord symbols are repeated. When chords are written above measures, there are no bar lines to intersect. Of course with computer charts, it is easy to copy and paste chord symbols, but still maybe it is still useful to have multi-measure repeats work with chords-only. But since there are no barlines in that case, then the method of drawing a single slash across all barlines wouldn't be as useful since there are no barlines to connect. I think the for the case of repeated chords, I think the better way to go would be to add a way to input N% when typing chords via Ctrl->K.

just making a note of a strange corner case to handle gracefully: if a multi-meas repeat occurs after a section with repeat barlines, then the simplest way to handle playback of the multi-meas repeat would be to pretend that the repeat barlines didn't exist and to just repeat measures. Obviously no one should notate anything like this since it would confuse any reader, but I'm just making a note to handle this case so that musescore doesn't crash.

just making a note about putting a number counter on top of each measure of repeated measures, I found this article http://www.rpmseattle.com/of_note/on-location-number-repeated-measures-… about a finale plugin to do this: https://usermanuals.finalemusic.com/Finale2012Win/Content/Finale/Number… and sibilius has a built-in-feature for this http://johnhinchey.com/2010/09/23/sibelius-tutorial-drum-set-notation-p… ...and interestingly the sibelius built-in feature places the count inside parenthesis. I'm thinking parenthesis is probably better way to go for counters, should that be implemented in musescore.

also cross-linking to the musescore feature request for exactly this: https://musescore.org/en/node/121481

I wrote in https://musescore.org/en/node/121481#comment-574636 that there is a potential conflict between these two feature requests if both of these features try to write to the same spot on the top of center of the measure. This is making me think the multi-measure repeat feature should write its number centered in the middle line of the staff, to leave space above the center of the measure for the counter number if that other feature gets implemented.

Re: #66.

There is too much interpretation by adding so many various slashes; too many words for the concept.

In my experience, 1 slash + 1 bar, 2 slash = 2 bar, 3 slash plus numeral = x bars, usually placed on a barline between 2 or 4 bars with the numeral above the stave. It's much simpler and easier to grasp. 3 would have to be a special case, perhaps in the middle of 3 bars?

I think initially that the symbol has to be (for now), separated from playback considerations, remembering the initial charter. I understand the wish for MIDI representation, but this facility is too useful to delay while trying to solve playback concerns.

This should not be a bar line but a type of repeat, with the flexibility to represent melodic lines or harmonic symbols. It should be placeable anywhere on the score, perhaps always tied to a bar line. This would allow maximum flexibility.

It has 2 components: slash and text. These two aspects would be addressed:

- within the stave (repeat the melodic line and use the same changes each time) and
- outside the stave (repeat the changes).

Later, a MIDI facility could be added, perhaps with a (if here = x, if there = y?) choice.

The problem I'm rasing about empty space for more than 2 measures of repeat, for example:

3-bar-repeat.png

is that it is not immediate obvious to the reader what to do for that first empty measure. I worry that if a line break occurs somewhere inside that multi-measure repeat, then there would be empty space, which I think can be misinterpreted to mean nothing is played.

Which is why I'm preferring a single long diagonal slash across multiple measures:

3-bar-repeat-slash-extends-across-with-number.png

and that number 3 could optionally be included or not. Maybe a bigger dot is better:

3-bar-repeat-slash-extends-across-with-number-bigger-dot.png

And then if a line break occurs, then at least there is some ink inside the measures at the end or start of the newline, so reader doesn't think there is nothing:

3-bar-repeat-slash-extends-across-with-number-bigger-dot-with-line-break.png

Re: #66.

There is too much interpretation by adding so many various slashes; too many words for the concept.

In my experience, 1 slash + 1 bar, 2 slash = 2 bar, 3 slash plus numeral = x bars, usually placed on a barline between 2 or 4 bars with the numeral above the stave. It's much simpler and easier to grasp. 3 would have to be a special case, perhaps in the middle of 3 bars?

I think initially that the symbol has to be (for now), separated from playback considerations, remembering the initial charter. I understand the wish for MIDI representation, but this facility is too useful to delay while trying to solve playback concerns.

This should not be a bar line but a type of repeat, with the flexibility to represent melodic lines or harmonic symbols. It should be placeable anywhere on the score, perhaps always tied to a bar line. This would allow maximum flexibility.

It has 2 components: slash and text. These two aspects would be addressed:

- within the stave (repeat the melodic line and use the same changes each time) and
- outside the stave (repeat the changes).

Later, a MIDI facility could be added, perhaps with a (if here = x, if there = y?) choice.

Ok, yes, I'm liking the long slash too for more than 2 measures.

And regarding playback, yes the playback is less of a priority, focus should be on display first...I was mainly just making notes about things that would need to be considered for playback.

Some more internet sleuthing about usage from drummer sites. It seems http://www.play-drums.com/Pad/lesson11-repeats.asp is saying that a number above the single-measure repeat symbol (%) is used to indicate that the previous measure is repeated N times. That same page and bottom of http://www.drummagazine.com/lessons/post/drumkey/ has example of a the number 2 above a double-slash percent sign through a barline to mean repeat the previous 2 measures once. I'm guessing the two-measure (double repeat slash) sign is fairly common, so should have option to display the specific case of two-measures as such (either via preferences or inspector, or by having an actual two-measure repeat symbol in pallate which is dragged ontop of a barline).

The way I would think any-length multi-measure repeats could be inputted is by user selecting the entire measures and then double-clicking on some long-slash icon in the repeat pallete (or from menu or from special keystroke). The case of two-measures I think could be displayed either with long slash or via the specific double-slash percent symbol on barline.

I'm imagining two new palette symbols: one is the the double percent sign with 2 above, which if dropped ontop a barline would treat the two surrounding measures as a 2-measure repeat (or if dropped on an empty measure of a single-instrument score would break into two if permitted, but would popup an error if is part of a multi-instrument score). Another would be a long slash with two dots and an N above the slash, which is a genertic N-measure repeat, which if user had selected multiple measures and double clicked that icon, would turn those measures into multi-measure repeat, or if dropped on a single measure, would make a long slash version of single measure repeat which could then be expanded by pressing shift-> any number of times to increase the number of measures that the repeat covers (just like with other line elements such as hairpins).

I'm implementing new classes MultiMeasureRepeat and MultiMeasureRepeatSegment derived from Spanner and SpannerSegment, because this new concept is something that spans across measures.

I started coding for a generalized "Multi-Measure Repeat" as a new class derived from SLine (which is derived from Spanner):

https://github.com/musescore/MuseScore/compare/master...ericfont:10220-…

so far I have got it to render as an icon in pallette (most of this code is based off glissando) roughly how I think it should look (maybe not so thick):

multi-measure-repeat-as-rendered-to-pallete-icon.png

I am having the style configurable for line thickness and whether or not to display the size of the multi-measure repeat as a number (as the "1" is displayed in that icon). I'm about to implement code for dropping onto measure(s) and layout. It would span from just after the start barline of first measure and end just before end barline of last measure of repeat. The minimum horizontal span distance will try to be as small as possible if there is not a lot in other measures. It will funtion for any number of measures, including only 1 & 2 measures. But I'm thinking I should file a separate issue for this general multi-measure repeat.

For the specific symbol of a two measure repeat, I'm was initially thinking that would be a spanner as a special case of a 2-measure multi-measure repeat, but now I'm leaning towards having it be a barline type as xavier said. One thing I'm wondering about is what is the proper way to display on a line break...should it be dangling off the end of the line like follows:

two-measure-repeat-end-of-line.png

or should that symbol be broken in half, with the second half rendered on next line (although it seems that would interfere with displaying the clef at the start of the next line).

And regarding the specific symbol for 4-measure repeat, I don't think that should be implemented, because of the empty measure problem I raised earlier.

I haven't followed all the details but as a drummer I can confirm that http://www.play-drums.com/Pad/lesson11-repeats.asp and http://www.drummagazine.com/lessons/post/drumkey/ represent common repeat notation.

Ok. I'm thinking of making a separate issue request for "Single Measure Multiple Repeat", which would operate just like multi-measure *rests* (which would be toggled with pressing M). Hopefully as I said before that could share a lot of the same code as multi-measure rests.

xavier writes in #73:

This should not be a bar line but a type of repeat, with the flexibility to represent melodic lines or harmonic symbols.

I'm not totally sure what you said in that sentence. I think the two-measure repeat symbol should be internally represented as a type of barline (please let me know if you mean something different).

It should be placeable anywhere on the score, perhaps always tied to a bar line...

Also one problem I have with that is that the double-percent symbol can also be placed *inside* of a measure...according to http://lilypond.org/doc/v2.19/Documentation/notation/short-repeats "Patterns that are shorter than one measure but contain mixed durations use a double-percent symbol."

another example from http://www.dolmetsch.com/musicalsymbols.htm :

another example from http://dictionary.onmusic.org/terms/4804-repeat bottom of page:

This symbol can represent two separate concepts: Two-Measure Repeat, or Mixed-Rhythm Simile Mark. If user drops a Mixed-Rhythm Simile Mark, then I think any beat of a measure should accept the drop (and if playback is implemented, will repeat prior beat). But the Two-Measure Repeat should be a barline internally, and so will only be able to be dropped on measures. Since these are two different things sharing the same symbol, I think best to differentiate them in the palette by having the Two-Measure Repeat icon be displayed on a barline, like:
double-repeat-over-barline-icon.jpg

while the Mixed-Rhythm Simile Mark's icon won't be over a barline. I guess such a Mixed-Rhythm Simile Mark (or whatever it is properly called) would be a separate issue, but I'm only bringing it up know because it can drop on any beat, while the two-measure repeat can only drop on measures.

Hi. This is a great project, and I encourage you.

What I meant is that is should be able to be used as a short cut for saying "play the melody as written in these 2 (or more) bars and use the changes from the previous 2 (#) bars", as shown in post #10 in this thread.

:)

I believe we should keep things simple here because we can make them very complex for no benefit. So I believe we should keep the scope a lot more narrow.

1/ MuseScore already has full support for % to indicate that the previous measure should be repeated. It's biggest default is the drawing... it should use the symbol from the font.

2/ The most requested feature is support for °//. to indicate that the two previous measures should be repeated. Eventually for 4 measures. I'm not sure we really need to support a random number of measures.

3/ I never saw such a sign to span two different system or more in published music, so I tend to believe that using a spanner is over-engineered. Also I don't like the large thick line. However, I still think that a two measure repeat should not end up on a break and so we need a way to tell the layout engine that these two measures should be kept together no matter what. And ideally, the 4 measures also be kept together to make it easier to read (two measures with notes and the two measures with the °//.)

4/ Supporting a number on top of the % sign would be nice. In most cases (lilypond, Gould, rpmseattle) this number is a counter and not a number of repeat. So to repeat a measure 8 times, one needs to have 8 measures and number them from 2 to 8.

5/ I would argue that all the rest (% in the chord symbols, beat or motif repeat) is good to be logged here but it's out of scope for this particular issue.

Thanks for that input.

I made issues for the other related concepts i mentioned so I don't loose focus on this issue:

#127391: display courtesy counter when have consecutive measure repeat simile symbols
#127376: Simile Mark as Chord Symbol (for either 1-measure, 2-measures, or 4-measures)
#127391: display courtesy counter when have consecutive measure repeat simile symbols
#127396: Simile Marks inside measure to indicate repeat previous beat (playback & display) & MusicXML i/o for "beat-repeat" & "slash"

I'm not going to make a feature request for my generalized multi-measure repeat symbol since lasconic seems to be dismissing since is not used in published music. It may just be something used in certain small music communities. I still think it is a useful symbol. If anyone else has seen it please let me know, but I'll halt my work on that for time being.

Back to lasconic point 3 about preventing line breaks, I can imaging situation where a series of staggard two-measure repeat signs on different staffs would prevent any line breaks from happening at all. But I guess that would be a very unusal corner case.

Also regarding grand staffs, should the two-measure repeat symbol occur in between the two stafffs of a grand staff:

grand-staff-two-meas-repeat-middle-of-staves.png

or should it appear on each staff of a grand staff:

grand-staff-two-meas-repeat-both-staves.png

I'm thinking putting it on each staff would be easier to implement.

1. If one of the measures surrounding a two-measure repeat barline is deleted, then should both those measures be deleted?

2. If copy a measure surrounding a two-measure repeat barline, then should the elements from the source measure be copied, or should nothing be copied.

2a. If copy selection includes both source measures, then I would imagine that pasting those should be straightforward element-per-element copy. But if the copy selection only contains one of the two source measures, then what?

3. MeasureBase currently has boolean member "_repeatMeasure". I'm considering changing that into an integer instead, where value 0 still means not a repeat, value 1 means single-repeat measure, 2 means is part of a two-measure repeat, and then 4 or any arbitrary-size of measure-repeat (if ever implemented) can all store that int amount in "_repeatMeasure". Let me know if this is a bad way to go about it. Wait actually I'm thinking there will be complications if one staff is part of a two-measure repeat while another staff is a single measure repeat in that same measure. So I'll just stick to boolean _repeatMeasure meaning that any staff in that measure contains a repeat measure or is part of any 2- or 4-meas repeat. (EDIT: let me think about this some more...sorry for spam)

to answer point 2, since the current behavior in 2.0.3 is when copying measure repeat is to copy the measure repeat element and not the original source elements, then I'll stick to that same behavior and by copying the measure repeat barline and not the source elements.

Re: MusicXML actually uses Measure Repeat for multiple-measure repeats :

The measure-repeat type is used for both single and multiple measure repeats. The text of the element indicates the number of measures to be repeated in a single pattern. Both the start and the stop of the measure-repeat must be specified. The text of the element is ignored when the type is stop. The measure-repeat element specifies a notation style for repetitions. The actual music being repeated needs to be repeated within the MusicXML file. This element specifies the notation that indicates the repeat.

and that music xml has two attributes:

type: Both the start and the stop of the measure-repeat must be specified. The text of the element is ignored when the type is stop.

slashes: The slashes attribute specifies the number of slashes to use in the repeat sign. It is 1 if not specified.

So I guess when importing or exporting to musicxml, I will need to use the start-stop format .

After studying the MusicXML specification for measure-repeat, I think I figured it out here . My understanding is that MusicXML actually supports any arbitrary number of measures for the unit being repeated. Hence, a MusicXML is able to represent a 2-measure repeat, a 3-measure repeat, a 4-measure repeat, or a 100-measure repeat. I'm going to use that as an argument for MuseScore to support any-sized measure repeat.

I'm no longer sure about internally categorizing the two-measure repeat as a barline, and am instead thinking should internally represent as close to this MusicXML specification as possible, such that the first measure of a repeat would have some label saying that a particular staff or set of staves is the start of the multi-measure repeat, then have the subsequent measures contain some "rest measure" filler element, then the last measure of a series of repeats contain something representing "stop".

One thing I'm not perfectly clear about MusicXML is how does it represent a part that has two or more staves, but where the measure repeat only occurs on one of those staves. Since MusicXML's "measure-repeat" element is an attribute of a *Measure*, then it seems to me it is not possible for MusicXML to represent the concept where one size of measure repeat is in one staff of a part while another staff of that part has another sized measure repeat. I'm thinking of prohibiting such input by the user, and tell the user that only one type of measure repeat is allowed in a particular measure of a part.

As I was looking into that, I discovered what I believe is a logical error in musescore setting and unsetting of _repeatMeasure boolean property: #127556: MeasureBase::_repeatMeasure inconsistent interpretation when some but not all staves contain measure repeat symbols. I don't feel like touching that boolean until the meaning for multi-stave measures is precisely defined.

One other thing I need now is some test cases of MusicXML input files which contain two-measure repeats. I unfortunately don't have finale or sibelius or another other software capable of outputting a valid MusicXML file. I could hack my own MusicXML test files, but I'm afraid I wouldn't implement it correctly. Especially would like MusicXML scores where some staves have the two-measure repeat, while another stave has a single measure repeat. Also I'd like to see MusicXML for a two-staff instrument like piano where one staff has a measure repeat while the other staff doesn't.

ok, as I was looking into the musicxml some more, I managed to manually type some music xml files for two-measure repeat which I could sucessfully import into Finale NotePad 2012 (even though I couldn't create a multi-measure repeat inside finale notepad). I also discovered that the measure-sytle has an optional number which specifies the staff of a part, which allows specifying a two-measure repeat on only one staff:

piano-two-measures-followed-by-two-measure-two-bar-repeat-bottom-staff-only.xml
screenshot from finale notepad:
Screenshot (59).png

And if no number is specified, then the two-measure repeat applies to each staff of a multi-staff part:

piano-two-measures-followed-by-two-measure-two-bar-repeat-unspecified-staff-number.xml
screenshot from finale notepad:
Screenshot (60).png

So now that I have a valid xml file to work with, I'm going to start implementing the two-measure repeat by first working with MusicXML import from these.

Regarding displaying the staff in between the two-staffs of a grand-staff, since finale notepad doesn't seem to do that, I'm just going to stick with displaying on each staff for now... If someone can maybe open that second xml in a new version of finale or sibelius and let me know if the symbol displays in between staffs or on each staff, that would be appreciated.

I was trying to make a four-measure repeat symbol manually as MusicXML: piano-four-measures-followed-by-four-measure-repeat.xml, but when importing into finale notepad, I just see those as a series of two two-measure repeats. Again if someone has newer finale or sibelius and could open that and let me know if it displays as two measure repeats or 4-measure that would be nice. It could be that finale notepad 2012 isn't fully implementing the MusicXML since it doesn't appear to be able to handle >2-measure repeats.

I can't figure out a nice way for the multi-meas repeats to be represented as regular chord-rest or barline elements in the score data structure, since they sortof exist across multiple measures and not fully contained inside any measure. If they exist above measures, then the next higher thing in the hierarchy is System. If lasonic thinks spanners are over-engineering, then the cleanest & simplist I can come up with now is to give System gets a QList of multiMeasureRepeats, which extend Element and each have a start measure index, staff index, and size. System::layout() can easily check that list when laying out so won't break.

I'm also thinking there isn't really any element visible in each measure of a multi-measure repeat, so I'm not sure I should have any element inside those measures of multi-measure repeat. I don't even think I should have some sort of "filler" element, since the element base class has the virtual function draw, which wouldn't be implemented for something that doesn't get displayed. I know musescore currently complains when loading scores that have empty measures, so I'll make sure to check empty measures to see if the belong to a multiMeasureRepeat. I'm thinking any act of turning measures into multi-repeat measures should remove all elements in those measures, and then add a multiMeasureRepeat to the parent System's QList.

Regarding breaking across lines, I think that user should be able to manually put line break if wanted. And I think there are some corner cases like a bunch of staggered multi-measure repeats where an automatic line break has to be put in if abosolutely necessary, but will avoid it. Also I'm guessing lasconic would want to prohibit HBoxes from being put inside of a multi-measure repeat if he doesn't want them broken.

maybe multiMeasureRepeat could extend RepeatMeasure, or even just be a repeat measure with longer duration...then could share most code for layout. System would contain a QList of type RepeatMeasure.

Others things I'll prevent from being put on other staves within a multi measure repeat include elements that affect all staves, such as keysigs and timesigs.

Reusing RepeatMeasure will be good I think for the drawing and layouting. Without thinking too much, I would store (and write/read) it in the elements of the first measure of the repeat group and let System alone since for the moment it's a construct used at layout time only.

Regarding your question in #87

1. If one of the measures surrounding a two-measure repeat barline is deleted, then should both those measures be deleted?
I see two different solutions. If this measure is *selected* then both measures are selected and then deleted. Or if a measure is deleted, then the other measure is kept and emptied (or filled with the right content)

2. If copy a measure surrounding a two-measure repeat barline, then should the elements from the source measure be copied, or should nothing be copied.
I would go for the source or a full measure rest.

2a. If copy selection includes both source measures, then I would imagine that pasting those should be straightforward element-per-element copy. But if the copy selection only contains one of the two source measures, then what?

I don't get this one.

Thanks!

question 2a. concerns if have the following:

| source measure A | source measure B | two-measure repeat

And copy source B and the two-measure repeat, then when paste somewhere else, should it be:

| source measure B | two-measure repeat

or should it be

| source measure B | source measure A | source measure B |

If the two measure repeat is selected entirely, I would copy as it.
If not, I would copy the source, except if we make it impossible to select only a measure behind a repeat measure.

How is this feature implemented in other software?

Finale (2012)
https://usermanuals.finalemusic.com/Finale2012Win/Content/Finale/Measur…
Measure repeat is a staff style, similar to our staff style but Finale staff style can change anywhere along a staff (a bit like our current instrument change). There are two builtin staff style "One repeat measure" and "Two repeat measure". These styles can only be applied to complete measures. You select one or more measures and apply the style.
Other repeat measure numbers are not supported directly and involve hacks and so will not export to MusicXML. http://www.finaleforum.com/viewtopic.php?t=4342
Attached some MusicXML files coming from Finale.

Attachment Size
measure_repeat_Finale.zip 89.98 KB

Interlude while sibelius is loading...

MusicXML does support any number of slashes, but SMuFL only have 3 glyphs for measure repeat: https://w3c.github.io/smufl/gitbook/tables/bar-repeats.html and currently they don't have separated glyphs for the points and the slash.

If we decide to implement any number, we would not be able to draw repeat sign using the glyphs and we would have to stick with our current "manual" drawing. it's a pity, in particular in the light of https://github.com/musescore/MuseScore/pull/2853 (see the images)

We could make a feature request to SMuFL but it will take ages before it's implemented in fonts. Done: https://github.com/w3c/smufl/issues/62

Sure but that would be ugly if there is a mix...

Sibelius 7 (MusicXML attached, directly from Sib7 and not the Dolet plugin)
1, 2, and 4 bar repeats are elements that the user can find in the repeat palette. Selecting a rest and clicking on one of the sign will turn the X next measure into bar repeat. Two little blue arrows appear on top of each barline to show that the measures will stay together on a system. It's not possible to add a line break Deleting the first measure of the measure repeat will work and X-1 full rest appears. Deleting any other measure, or a selection containing any other measures from the repeat measure will do nothing if the first measure is not included. As far as I can tell, the number (2 or 4 written like time signature) is not editable and there is no way to create a X slash repeat measure (with X!=1,2,4). Also, when displaying the inspector, the sign is labeled as a rest, just like a full measure rest.

Attachment Size
repeat_sib.zip 67.6 KB

Sure but that would be ugly if there is a mix...

I understand. I'd rather support the ability to handle X!=1,2,4 even if look ugly. I know I personally need such repeats.

Thanks for these finale & sibelius examples!

Maybe this is naive, or maybe I missed some prior discussion, but it seems to me the most natural way to think of these multimeasure repeats is exactly like multimeasure rests, just drawn differently. In fact, they could probably be implemented as a simple flag on a multimeasure rest that says "draw me with a %-type symbol instead of a horizontal bar". They could even be toggled with the existing command for toggling multimeasure rests. We'd just need a different way of marking a passage as being a candidate for conversion - instead of checking for expanses of empty measures, we'd preusmably have some additional new use command to mark a passage as being a repeat of the previous measures. Some flag set on the measures themselves perhaps.

I had thought of multi-measure rests, but the main problem was that multi-measure rests work across all staffs of a system, while these multi-measure repeat signs work on an individual staff-by-staff basis.

looking at enum TDuration::DurationType, it seems there is a V_MEASURE but not a way to express multi-measure. One option is to add a V_MULTI_MEASURE type to that enum, or I could just add a measure size to RepeatMeasure class. It seems DurationType is used quite a bit, I'm probably more likely to mess something up if I modify duration type to include multi-measure. I'm going to first try adding a measure size to RepeatMeasure.

As it is now in my MusicXML import code, for a sequence of N-sized multi-measure repeats, I'm only creating an element for every N measures, and leaving the other measures empty... I'll see how well this goes, hopefully there isn't a problem from not having the total durations of each measure add up correctly.

Excellent, yes I will try to incorporate...I will have to look more closely. My one worry I expressed earlier was the following corner case: if a series of consecutive measures all have such a "nobreak" rule, then what happens if layout would exceed page margin?

I've managed to get layout basically working:

Screenshot (74).png

Note: The glyphs are only available for 1, 2, & 4 slashes, but I manually draw the symbol as fallback, so I'm able to handle any sized-measure repeat. So in above pic the 3-measure repeat and the 8-measure repeat were manually-drawn. And you can see them in the pallete. Although when I finalize the PR, I'll only include 1, 2, & 4 slash versions in the pallete. I'll have the user able to change the number of slashes and size via the inspector.

Note that in the screenshot you see red rectanges, which is musescore's debugger indicating that there are no ChordRests in those measures. The way I'm internally representing these multi-measure repeats are as an element in the first measure of the multi-measure repeat. And when I drop one of them from the palette onto a particular measure, the code automatically removes all subsequent ChordRests in the measures covered by the multi measure repeat. The current way to select the multi-measure repeat is to either select the first measure of the multi-measure repeat section, or to directly click on the element. I'm thinking maying that when selecting, maybe I should have the entire block of measures and the element be selected together.

Any opinions let me know.

FYI my TODO list:

  1. for some reason my layout code is putting all the multi-measure repeats on the top staff of each system...I need to figure out the proper way to have them appear in their proper staff.
  2. I have a glitch with a barline getting shifted out of position...that is a result of musescore not knowing what to do when there are no chordrests in a measure.
  3. The MusicXML i/o code is working for my test cases, although I'm going to make some more complicated ones. But I need to decide on regular MuseScore .mscx output. I'm thinking of saving exactly how I'm storing these elements internally: i.e. as a ChordRest element at the beginning of the first measure of each multi-measure repeat for a particular staff.
  4. I need to develop and enforce rules about when user is allowed to drop multi-measure repeats onto measures. For instance, if there are time signature changes or repeat barlines within the measure covered by the multi-measure repeat, then such a score wouldn't make logical sense, so I don't know if I should allow such states.
  5. copying multi-measure repeats, and their internal elements, as I discussed earlier with lasconic
  6. I need to incorporate werner's new NoBreak ability, so that the multi-measure rests don't break on a newline
  7. option to display number over the multi-measure repeat element to indicate the size.
  8. playback

If user has forced-inserted a line break in middle of the measures covered by multi-repeat measure, or if for whatever reason the system layout has ended before the middle of the measures covered by the multi-repeat measure, then I'm going to draw the element at the very last barline of the system.

Well I temporarily fixed that barline issue with a hack ...but I'll need some better general way to handle measures that don't have any segments (other than their end barline). I'm also a bit stuck on why my repeat measure elements on the 2nd (or lower) staff only draw on the top staff, even though according to the debugger, they are clearly elements of of the 2nd (or lower) staff. Any advice on how/where the layout code handles the y position of 2nd (or lower) staffs would be useful for me.

FYI for cases when where there is a forced newline, I draw repeat measure element at the end barline of a system, as you can see at end of 3rd line here:
But example-repeats-forced-line-break.png

Similarly if there is a HBox breaking the system:
dealing-with-hboxes-mid-repeat.png

One thing I'm going to also do is to have the measures covered by the repeat measure be as thin as possible...since one of the reasons for multi-measures rests would be to save space.

oops, I had forgot to set ElementFlag::ON_STAFF in my constructor, which is why layout wasn't putting it on it's correct staff. Got it working multi-staff now...here is how musescore imports a MusicXML from sibelius export:

musescore-musicxml-import-of-mutl-meas-mutli-staff-saved-in-sibelius-exported-to-musicxml.png

Looks good. But one funny thing to note is that MusicXML says that if slashes is not specified, then it should be equal to 1. However, the Sibelius file that lasconic provided me did not have the number of slashes specified for these multi-meas repeats...so if I followed the rules of MusicXML exactly, then I should set the number of slashes to 1 even though they are 2-meas or 4-meas repeats. So I actually think to be consistent with Sibelius, I should assume that if number of slashes is not specified, then I should use the number of measures as number of slashes...

*by the way I had promoted RepeatMeasure from being a descendant of Rest into being a descendant of ChordRest, since being a Rest was sortof getting in my way. But I forgot to update the constructor.

Oh, another small thing to note, the handrawn slashes are slightly smaller vertically than the symbols...see how the hand-drawn just goes from staff line 4 to staff line 2, while the symbols exceed that slightly:

repeatmeas-symbol-2-slash-1-slash-left_handdraw-3slahses-right.png

So if Sibelius is not adhering to the MusicXML rule about slashes :

The slashes attribute specifies the number of slashes to use in the repeat sign. It is 1 if not specified.

If I follow the maxim, "be generous in what you accept and strict in what you generate", then I say if a MusicXML file doesn't specify the number of slashes, then I think I'll go ahead and write the correct number of slashes when export back to MusicXML...sound good?

I got numbers displaying just above the symbol, center justified.

got-numbers.png

I hardcoded the rule as if number measures > 1, then display numbers.
I also am placing them just slightly above the symbol. This is different from sibelious & finale which place the number above the top of the staff. I have my reasons...because I like to leave space above the staff for chord changes!!! But let me know if you disagree.

thanks for you opinion...I guess I'll wait and see what the committee decides...as it is now I have that value as a constant

Regarding noBreak, I managaed to get it working by calling setNoBreak(true) . Seems to work as desired. And it doesn't produced bad behavior if is stagger 2-meas repeats every measure such that it has to make a break somewhere (which was my concern earlier).

layout is basically done now. So my todo list is now:
I guess todo now is:

  1. mscx i/o
  2. complicated i/o test cases
  3. rules about when user is allowed to drop multi-measure repeats onto measures.
  4. delete these elements (currently I'm segfaulting since have measure without any elements. Should I fill all the measures with rests?)
  5. copying multi-measure repeats, and possibly their internal elements
  6. playback

The size of this discussion is growing year by year. I am really impressed. It is really exciting to be a part of this. It seems #ericfontainejazz has invented some visionary and useful repeat signs. What is the topic, when I want to go and implement and use it? I am also really into reading a lot more about the programming options in MusicXML and how to link it to my own version. Thanks.

Just got into this topic today. Took a little time to find it. By now I make bars invisible, make a note for the musician f.i. in the drum-part, keep the playback and everything works. Except for the ability to narrow the (played but invisible) measures to save space, make it more readable and make fewer page turns.

This has been discussed so often with no apparent easy solution.

Is there some disagreement as to in bar/on bar-line preferences? Is it the difficulty in merging text (number of bars) and image (the slashes with the dots) or is it considered solved the way it is now, and is it just so inaccessible and complicated one accessed?

I wish there was some way to cut down on the fiddling one has to do.

Right now as far as I know the steps are:
"z". Master pallets>symbols. "Repeat" in the top search box of that window to find the images. Then one has will have to position it and add text (and position it) over the symbol if you want a number of bars.

An ability to place both once and then lock them together would be useful but that just seems very complicated to add to MS (with my very limited knowledge of programming).

The biggest problem is that the the MusicXML specs say:

The actual music being repeated needs to be repeated within the MusicXML file

Which when I implement I had to refactor a lot of MusicXML code, but lvinked said that made review difficult. It might be easier if I break into two separate PRs, first for multi-measure repeats in musescore, and second one for MusicXML import/export so review is manageable.

And there was some segfaults (I think a result of how the measures after the first measure of a multi-measure repeat will have no segments other than barline segments). I would probably more sense if it tried to make the changes against 2.1 stable, because I don't know how much of the segfaults were just a result of 3.0 being instability, to be honest.

Thank you very much.

It makes sense to me to break it into 2 parts. As a start, getting it implemented in MuseScore would initially solve this numerous request.

Is the problem in MusicXML the porting over of the sign itself or the meaning of the sign (repeat x bars)?

Also, thank for your work, eh?
:)

The problem in MusicXML is not the sign but the requirement that have to copy the actual music...which requires doing some sort of recursive lookup of music elements when exporting. So if I have a measure of music followed by a single-measure repeat sign followed by a two-measure repeat sign, then when exporting the 2nd measure of the two measure repeat, would have to look and export the music elements from the single-measure repeat sign, which would recursively redirect to the first measure. Things like spanners (eg slurs crossing over barline) I think I had to ignore, but other than that there is nothing bad or messy about the recursion...but it just meant that I had to refactor lvinken's code.

that requirement is simply for MusicXML file format spec. I believe the purpose of that spec is so that a program which doesn't implement single or multi-measure repeats will be able to import the the repeated music even it ignores the multi-measure repeat XML element.

Would it be possible to adapt this feature for something like this? The intent being for the musician to comp the same period over a given number of measures? Currently I'm making the multimeasure rests invisible and overlaying staff text to achieve the look but it seems to break those measures and obviously doesn't have playback.

Attachment Size
Multimeasure Play.png 13.35 KB

I realize it's not inline with standard western musical notation, but I know lots of drummers who prefer this kind of chart (more fully-fledged examples attached) when they're mostly just laying down a groove but have some arranged breaks, hits, etc. Just the ability to edit the shape and text of a multimeasure rest would be enough.

Attachment Size
mellotone_drums.gif 79.74 KB
Sample chart 2.jpg 688.73 KB

Do you know of computer score writers that allow notation like this? I actually want some feature to collapse multiple single measure repeats together like multi measure rests work. But without some official standard it will be hard to get musescore to implement.

For non-standard notation, you can already do whatever you want (more or less) by adding a graphic/image. I am not aware of any standard for the sort of notation you are describing, so I think using graphics will be the way to go.

BTW, just because you've seen some handwritten charts done this way, I wouldn't assume that means the people actually reading them *prefer* it that way. I would bet it was done that way out of laziness by the writer, not as a favor to the drummer.

I don't know of any computer score that provide any functionality for collapsed measure repeats, but I have removed the multi-measure rest bar and replaced it with text (e. g. "keep time") in Finale before.

Adam, that's not a bad idea. Actually user can already do that in 2.0.3 by setting a multi-measure rest to invisible (V) and then adding large staff text placed inside the staff:

manual-repeat-32x.png

I don't know if musescore should include any extra features to accommodate such action further.

Oh, and by the way, since 2.1 is almost done, it is time to focus on 3.0 issues, so I'll try fixing up my previous PR for this long overdue feature...

Attachment Size
manual-write-repeat-32-times.mscz 3.95 KB

That is great - but using that method it won't audibly play right? Great for visual, yep. See my comment #1 on this thread. :) Plus, it's an excuse to comment here again 140 comments after my first comment, we don't want you to think I'm not following this whole thing. Thread is impressive thank you ALL !! Drum On, drummers :) -Tim

Regarding the last few posts (e.g. #139 and #140), I once requested it.

I believe the excerpts with that topic were typeset using Amadeus Music Software (by Barnes Music Engraving).

In reply to by Jojo-Schmitz

Jojo, the thing that blocked acceptance of my PR was that https://usermanuals.musicxml.com/MusicXML/Content/CT-MusicXML-measure-r… says

"The actual music being repeated needs to be repeated within the MusicXML file."

This caused a great deal of headache, because I interpreted that as saying that all the musical elements from previous measures needed to be duplicated in the measure of the multi-measure repeat. I supposed the reason for duplication was so that a program which didn't implement the multi-measure repeat when importing a MusicXML file could at least import the musical elements of the measure-repeat. But that meant I had to modify the MusicXML export code to duplicate the previous measures. I chose to use a recursive function since to me it made things easier, since potentially might have a string of measure repeats. But the reviewer (leon) didn't like that cause it made the code hard to review.

Thinking about all this now again, I'm thinking that maybe the word "repeated" in that sentence from the MusicXML doc actually simply means "included", even though to me "repeated" means the notes must be "duplicated". Anyway, if we use the much simpler interpretation of "included" then that will dramatically simplify the MusicXML export code, since will basically mean that I'm just adding an extra element instead of modifying the structure of the export code.

Well I didn't do that in the code I had written...but that is something I could add. What I did have was a few different palette cells for 2-meas repeat, 4-meas repeat, 8-meas repeat. But on second thought, maybe only the single-measure and 2-meas should be included in the palette, while any longer measure repeats could be editable via the inspector. I suppose when increasing the size would mean measures would be overwritten. And when decreasing the size, then would fill measures with a measure rest. I can imagine some confusion when changing from an even numbered measure repeat to and odd-numbered measure repeat, because the even numbered ones are centered on a barline, while the odd ones are centered on in the middle of a measure.

i don't know if you looked at the image: https://musescore.org/en/node/10220#comment-582876

I did have option to display the number or not. Sometimes number overlaps with a barline if the barline connects to the staff above.

But I really haven't seen too many examples online for measure repeats beyond 2 and 4 online, so I don't know if there is an official right way to do those.

Thanks for pointing me to this. I'm sure I saw it quite a while ago :).

This would work for me certainly.

Thanks for your contributions and best regards.

In reply to by xavierjazz

Right. I agree it's not vital that it play back, it could just be visual. Playback of the 2 measures (or 4) would be ideal, though! Thanks all for your comments and contributions to this thread. Can something simple-for-now be done? Perfection can always follow later in some future ( where we all have 40 hours in each 24 hour day.)

I had playback working in my PR, but understand the problem is my PR was rejected due to complications from literally interpreting that sentence from MusicXML specs.

In reply to by 321_contact

I use this quite often, but it a very error-prone "work around."

  1. since each repeat sign is attached to a different measure, when you change breaks or anything that affects spacing of the measures, the repeat signs drift, as does their corresponding text. It has to be re-formatted.

  2. In many instances, with newer versions of MuseScore, there is a very limited horizontal range in the amount of space you can drag the repeat sign.

Sorry to just past this in this but i dand know where els.

I have just downloaded Musescore 2.3. to my Windows 7, laptop.

I did have the Musescore 2.2 beta, before and found a very useful way to separate the voices such as Alto, soprano and so forth. On the same windows 7 but that has been done away with during the update.

I simply filled the bars with its notes and after completing the score I selected the first bar and on the voice at the top of the page a chose 2. It separated the higher notes and turned up the staves and turned the lower ones down.

I worked through the howl script including the base ones. It very much helped congregational singing.

It seems that that dose not work in MuseScor 2.3! I had to change each note of voice or laying just the one voice at a time.

The attachment is an example of my preference.

I have been looking in Marc’s book to see if the Musescore 2.3 has a different way to do the same thing? But so far not found any way.

Attachment Size
Exampl.mscz 1.66 KB
Frequency Many
Regression No
Workaround No

I have added comments in https://musescore.org/en/node/12571, as I'd like to use a configurable Simile. Should I open a separate ticket?
In any case, that would also solve the 2-bar repeat. The mark is not the 2-bar-repeat mark but this works well, especially for drum scores, where there is any number of repeat bars in between the bars that are different.
The reference: http://play-drums.com/Pad/lesson11-repeats.asp. There are multiple options available for repeats used in percussion, but the one in the screenshot seems the most practical for full-bar repeats.

Attachment Size
Screenshot from 2019-01-07 23-08-30.png 9.88 KB

In reply to by ericfontainejazz

Update: I received a response back from the MusicXML main author to clarify my earlier question on interpreting the sentence from the MusicXML specs: https://github.com/w3c/musicxml/issues/254

It seems that music elements need to be included in each measure of the multi-measure repeat. That was indeed what my earlier PR was based upon, which is good. But now I just need to finalize. I did ask him for an "official" test case...I still want to wait for that to be sure.

In reply to by David Bolton

Just adding in my support for this issue. I'd love the extra flexibility of multi-measure repeats with multiple repeat counts (repeat last three measures seven times). In scores with multiple instruments, it can make a huge difference in workflow, especially since you can change just one measure to affect that change over the whole pattern. If I have a simple 2-bar drum loop, and I want to edit the pattern a little, repeats mean there's only one pattern to edit. without this, you're forced to copy paste the pattern over and over and hope you don't get off on one measure and screw up the whole thing.

FWIW, it's very simply to do a repeated copy/paste - just select the region and hit "R" as many times as you want. No need to wrroy about getting off by a measure, it won't happen.

Severity S5 - Suggestion S1 - Blocker
Reported version 3.0 3.1

Really happy to see ericfontainejazz making progress on this. My experience is in marching percussion: drum corps and college drumline. I've seen and played music written by prominent directors in the field today. n-numbered repeats are a marching percussion industry standard as far as I can tell.

The existence of the MDL workspace tells me that the marching percussion use-case is one that MuseScore takes seriously. But in my view, lack of this feature makes MuseScore unusable for serious marching percussion scoring.

One point of clarification about this use case: a big difference between this multi-measure repeat and a regular barline repeat is that regular barline repeats affect every instrument in the score, where as multi-measure repeats only affect one instrument. Therefore it should be possible to have one instrument repeating the previous 4 measures while the rest of the instruments are playing something new. See attached.

What can common folk do to help the progress of this? Thanks so much

Not sure if you've studied the full thread with the various workarounds, but the symbol does exist on the symbols palette and is not particularly difficult to add or position. You won't get playback without using a separate invisible staff - not a terrible workaround for occasional use but indeed a pain for percussion where this might be used a lot). But for scoring, it's perfectly possible already. See also #287245: Add symbols to barlines - if/when my PR for this is merged, the process will become simpler still.

This is an important feature of good music layout: it reduces a musician's cognitive load, because when you see it, you don't have to do the mental work to parse what might be a subtly different two new bars of music--your brain can immediatly reuse the flight plan it just executed, freeing you up to concentrate on other aspects of the performance.

Pretty please!

In reply to by Howard-C

The part that blocked my work was confusion in the MusicXML standard for representing multi-measure repeats, specifically the following ambiguous sentence:

"The actual music being repeated needs to be repeated within the MusicXML file."

https://usermanuals.musicxml.com/MusicXML/Content/CT-MusicXML-measure-r…

Which sounded like copies of the notation from the repeated measure need to be put in every measure that is repeated.

In reply to by ericfontainejazz

Maybe somebody can check how other reference implementations do it and compare?

My two cents by the way - i feel trying to solve two problem areas in one go here may become too overwhelming to implement in one go (and still keep up the fun during the process :) ).
1) the one-bar repeat from the palette gives nices playback, thus working as expected, while the two- and four-bar repeat signs are already there but don't do much apart from looking nice, which feels like a quirk to some users.
2) the MusicXML mapping of 1 to n measure repeat's (wikipedia calls them "simile marks" btw). When we know the exact requirements for that, we know what needs to be implemented and discuss adding an n-measure-repeat item to the palette.

It may be more manageable to implement the two in incremental pull requests. Also my impression is that many MuseScore users are waiting for 1) already and that it's what you can call a low-hanging-fruit, not too hard implement b/c it's basically just filling the gap (missing playback).

2) is of course is highly desireable but turns out to be a lot harder to achieve and still needs research, maybe as group effort.

In reply to by Philzen

The MusicXML standard maintainer Michael Gould has added an update to the question I raised https://github.com/w3c/musicxml/issues/254 by adding a new commit (https://github.com/w3c/musicxml/pull/319/files) to clarify that:

"The actual music being repeated needs to be repeated within each measure of the MusicXML file."

That previous lack of certainty was basically what was hanging me up, preventing me being confident in coding. I suppose since MuseScore 4.0 development is starting back up, then I would like to re-take implementing this, unless someone else has taken ownership...my old PR from years ago is probably too stale now that I would need to start fresh.

Oh great, glad to hear from both of you and that you have taken this up to be resolved finally! Please ping me when it is in a state for me to try out and test so I can provide feedback.

I will say when you get to the MusicXML import/export code...I vaguely recall Leon who wrote most of that basic basically said something along the lines of it was too hard for him to review my changes because I made so many changes.

So my advice would be when you get to the MusicXML import/export part, just be very careful with every code change you make.

Also for reference, I asked Michael Good:

"I am curious about MusicXML's design purpose for repeating the actual music within each measure of the MusicXML file. Is that to allow the MusicXML to be backwards-compatible so programs which don't implement measure-repeats could simply ignore the measure repeat element but would still import the actual music being repeating for those measures?"

And he responded:

"Yes, that is pretty much the rationale. Requiring the repeats also provides better compatibility with applications that deal more with playback and analysis, not just notation editors."

Great, tried out.

out of curiosity I wanted to see what would happen if I chained a bunch of measure repeats staggered on different staves to see how it handled forcibly breaking. If am at this point:

before-overflow.png

And then I add one more 4-measure repeat in bottom right, then I get the following result:

after-overflow.png

Which is just a little unusual. Though at least it handled it somehow. I'd prefer if it broke up the chain somewhere in the middle of the chain, instead of breaking after the first two measures like that. I haven't looked at the code...maybe a lot of that logic is outside the scope of your project, though.

I'm also a little suspicious of how undos work. Cause at this point I have to press Ctrl-Z several times before it starts undoing the previous mutli-measure repeats. And it still doesn't remove the layout breaks which were automatically added. Each time I press Ctrl-Z should have undone one multi-measure repeat (including the auto layout breaks) completely at a time.

Thanks for testing! Indeed, my handling for groups with too many measures to fit on a system is just good enough to prevent a crash, not actually good. I decided that the result you see was at least no worse than that of a measure with too many notes, and I was wasting time fruitlessly trying to make it smarter, so I moved on.

With regard to undo, the issue with needing to repeat the command several times before it reaches the desired point on the stack affects many types of edits intermittently, so I don't think it's specific to my implementation of MeasureRepeats. For the problem with breaks not being undone, can you provide steps to reproduce?

Understandable that you would not want to add special code and complexity to handle that unusual case, so I'm fine with that.

For the issue of breaks not being undone, I'm finding that that only happened when I created the unusual case...for instance with a save file like the state of the first image I shared ( adding-next-4-meas-rest-cause-undo.mscz ) if you add the break to the final measure of the chain, then it creates the extra two breaks...but pressing undo then only removes the repeat and not those breaks it seems.

Hmm, looks like it's another side effect of creating a too-large group. Undo does remove the grouping elements, it's just that the relayout doesn't ripple backwards to the previous systems. If you make any change that would bring them to the attention of the layout algorithms (e.g., select one of the whole rests and move it up or down with the arrow keys), then everything catches up. I don't like it, but from my previous forays into that area of code I think it's beyond me to fix it.

Now that I have my build working again, I'm going to be looking at the layout issues today. The whole business of how we layout measures as we're building systems, and how we handle measures that we need to try to lay out on one system to see if they fit, then relayout on the next system once we decide they don't, it pretty tricky. Complicating the matter is the whole "partial relayout" system we have, where you only need to relayout what has changed

Note to self: one simple solution to the original problem @Isaac Weiss identified might be to decide we need to relayout a system that starts with a "no break" element even if we actually don't. It's possible this same solution would work for the new problem identified here.

In reply to by Isaac Weiss

Well my advice is probably bad cause I recall my code was rejected because i changed too much of the existing export/import code. So i dont know if i should provide advice. I see my old branch from 2016 is here https://github.com/ericfont/MuseScore/tree/1649-RepeatMeasuresMusicXMLi…

My import code starts https://github.com/musescore/MuseScore/commit/60523095f64109925e2c44a34…

My export code main part starts https://github.com/musescore/MuseScore/commit/60523095f64109925e2c44a34…

The way I recall doing that export code was to move a lot of the existing export code that only dealt with musical elements inside a measure out of the main export function ExportMusicXml::write and put it in its own function ExportMusicXml::writeMeasureContents, because of that quote of the MusicXML rule that have to duplicate contents of the measure when exporting measure repeats for backwards compatibility. So when any measure repeat was encountered I would be using most of the same code as when normally exporting without measure repeats. Of course things like spanners that can go across measures can't go into that writeMeasureContents function. But again I made too many changes and was rejected.

(Another thing to note is I believe I have some test xml files exercising various cases in my branch...but I don't know how good they are...one problem is I don't know of an official gold standard program that is known to properly export and import multi measure repeats.)

I'm not entirely sure of the timeline, but I am under the impression a lot of refactoring has occurred in the MusicXML export code anyhow, so very likely much of that aspect of the original PR wouldn't be relevant anymore anyhow.

More to the point is getting a good understanding of what the "correct" export should be. To me, there are two good sources for that. One is the MsuicXML spec itself. The other is just doing an export from Finale and seeing what they do.

Here's the relevant section of the MusicXML spec:

http://usermanuals.musicxml.com/MusicXML/MusicXML.htm#EL-MusicXML-measu…

If I understand correctly, we are supposed to repeat the actual content of the measures as well as give the start/stop on the measure repeat symbol. Right now we apparently don't do either of these things for one bar repeats.

As far as I am concerned, an initial implementation that at least put the symbol start/stop in place, and handled that on import (while ignoring the content of the measures), would be a very good start. If there is some architectural issue that makes it hard to repeat the last four bars when outputting the four-bar repeat, I would put that off until the rest is working. Just try to write in as modular a way as you can so the code can move easily if that becomes necessary.

I will assume there is info there on the site that we could find by searching hard enough, but my guess is, a complex type is one that has subcomponents to it.

Status PR created fixed

Fixed in branch master, commit bcadc255a9

_Fix #10220: Replace RepeatMeasure with MeasureRepeat, add subtypes 1/2/4

  • Draw with font symbols instead of QPainterPath
  • Automatically group measures and delete contents when adding MeasureRepeat
  • Bring measure.h and measure.cpp in line with new code guidelines
  • Hide rests by making measures (per MStaff) aware if they are part of measure repeat group
  • Keep measures and element in sync at all times by handling (preventing/warning/special-casing) many user actions
  • Add style options for numbering consecutive one-measure repeats_

I guess I am not the only one with this question. Will there be an easy solution?

So what I look for is just drag in the "repeat two bars" sign and it will play back the last two bars.