Stacking chord extensions

• Apr 21, 2020 - 00:28

Is there a way to stack multiple jazz chord extensions (e.g. b13,#9) so they appear vertically rather than horizontally?


Comments

That thread was about polychords, an actual but much less common situation than I am writing about. I am writing about something like A7(b9#5). When I type this into Muse, the (b9#5) gets put in horizontally in the parentheses, as opposed to the standard b9 placed OVER the #5.
The Boy Next Door.jpg

There is no direct support for this, but you can get this by hand-editing your own chord description file. Here's one very old thread I found, probably the specific file attached won't work anymore but the ideas might still be valuable:

https://musescore.org/en/node/30216

Also search the site for other threads about stacking chord symbols, I know a few others have posted about their adventures.

In reply to by garybrosen

Every thread like this is such a nudge. As it is, we get this request once every few months or so, which is not especially frequently, so it hasn't been a super high priority. But it never falls completely off the radar.

Meanwhile, though, while you personally might not be comfortable editing an XML file, maybe you know someone else who is and would like to volunteer their time to help make it happen? It's not actually very difficult to create such a custom file that provides specific layout for specific chords. That is, it might not handle every possible combination of alterations, but if it were decided that, for instance, we wanted each combination of dominant seven plus any two of b5, #5, b9, #9, b13, and #11, that's a finite list that could be made to happen without any actual code changes to MuseScore.

In reply to by garybrosen

Hmm, note to self: it's conceivable there might be a clever way to make this more general by special-casing certain characters (like, say, "^" and "") to produce this effect. Like, typing A7(^b9#5) to produce that stacked appearance. This might be doable without code changes, just by defining appropriate rules for "^" and "_". within the XML file This is a distinct possibility I hadn't really considered before. I will try to find some time to see if I can figure that out.

In reply to by Marc Sabatella

Hmm, yeah, what you said. I encourage you to try to figure that out, since I unfortunately don't know anyone who might help out.

Since you indicate that this feature has not been significantly requested, you must not have many jazz musicians who use the app, since it is hard to find a lead sheet that does NOT have this occur.

In any event, if you can make this happen, I would greatly appreciate it.

In reply to by garybrosen

I'm a jazz musician and I use MuseScore a ton :-). And we have literally millions of others. So in a sense it is a bit surprising we don't get this request more often. No doubt there are plenty who might appreciate this, but most of us are happy enough with them written horizontally, which is also quite common/standard.

FWIW, though, personally, I don't like to read overly-specified chord symbols in lead sheets - I am accustomed to choosing my own alterations based on context. So it's extremely rare that I would ever specify more than one alteration per chord in a lead sheet. And as it happens, I worked as an editor on the Real Book series (Hal Leonard versions), and I know the rule used there was similar - never specify more than one alteration unless absolutely necessary. The Chuck Sher books, on the other hand (which is where your example seems to come from?) do tend to specify more alterations in general.

The only time I commonly use multiple alterations is in the context of a big band chart where I am trying to indicate something about the specific voicing used in the horn parts. And in those case, indeed, I'd have a slight preference for vertical stacking. It just hasn't raised to the top of the priority stack yet.

In reply to by garybrosen

OK, this is a hack, but it does kind of work, will be interesting to see how quickly you can break it :-)

Download the attached file to MuseScore3/Styles under your main home/documents folder (right next your Scores and other folders, etc). Now, in your score, go to Format / Style / Chord Symbols, and check the Custom option at top instead of Jazz (I'm assuming you are using one of the jazz templates, in any case, this process will force some jazz settings for chord symbols). Then click the browse button and select the file you just downloaded. Then hit OK to get out of all that.

Now, you will find that typing [ and ] will give you the large parentheses, and typing a "/" between the alterations will make them stack (it only works with the parentheses). So, your example is A7[b9/#5]. It produces this:

stacked-chords.png

To make this work, I had to sacrifice any other use of square brackets or the "/" within a chord symbol. But it still works for specifying bass notes - you can add "/C#" to that and it works OK. Also things like C6/9 still work.

Probably this can be tweaked to work a little better based on your feedback - and now that you have this file to start from, we can direct you more on how to do the necessary surgery to make other modifications.

Attachment Size
chords_jazz.xml 13.86 KB

In reply to by garybrosen

Which chord were you expecting to see stacked vertically? I don't see anywhere that you used the square brackets or "/" the way I explained. But if I go to the A7(b9#5) and edit it the way I said - "A7[b9/#5]", then it works produces exactly the result I showed:

The_Boy_Next_Door.png

At least, it does after I check the style option to load my copy of the XML file.

Granted, it's not so fun to type that, but it's the only easy-to-implement way I can think of, aside from just an exhaustive list of combinations of alterations you want to support with specific coding for each. That's doable too, it's just messier in the implementation. But it's not especially hard either, so I'll post one a bit later.

In reply to by Marc Sabatella

Here's another version of the file that will handle combinations of 9 & 5 automatically - A7(b9#5), A7(#9#5), etc. You need to use the parens, and the 9 part has to come before the 5 part, or for both ninths or both fifths, the sharp has to come first (rationale as per Brandt/Roemer, higher pitch on top). Someone could go in and hand-tweak all the other possible combinations.

Due to the way custom chord description files work, if you've already save a file that uses one, it's kind of hard to change to a new one later. It's easiest to test new chord description files with new scores.

Attachment Size
chords_stacked.xml 14.75 KB

In reply to by Marc Sabatella

I did exactly that with the xml file that my browser saved when it opened up your file, but it didn't work for me. Would you be willing to send me your original style file (that uses the brackets) via email? I wonder if, when Chrome saves the xml file, it does something funny to it. I'd appreciate your mailing the original file to garybrosen@gmail.com.

Thanks.

In reply to by garybrosen

Actually, the score you attached did not have the setting at all - it was still set to Jazz in Format / Style / Chord Symbols. You need to change it to Custom and specify the file you downloaded. BTW, Chrome doesn’t change files when it downloads them, so that cannot have been the problem is any case.

Please try again using the updated version of the file (which also allows brackets to handle the cases I didn’t explicitly add special code for.

We prefer to keep communication public. It’s open source software, we’re all volunteering our time to help each other out, and that works best when we keep everything here on the forum so everyone can benefit.

In reply to by Marc Sabatella

Well, now the bracket way is working, although just putting parentheses around b9 and #5 does not lead to the desired result, e.g. typing A7(b9#5) does not lead to the stacked result. However, I am thrilled that the brackets DO work. Not sure why they didn't the first time I did them.

In reply to by garybrosen

Great! If it’s still the same score And you first loaded the old version of the XML, then replacing the XML won’t pick up the new changes for a variety of reasons. But assuming you do have the new version of the XML, then applying it to a new score will work. Has to be regular parens, btw, it brackets, for that to work.

If we come to place where multiplied people rest this and give feedback, we can certainly consider incorporating it into a future version.

In reply to by garybrosen

Yes, sorry, autocorrect didn't.

So, you should be able to type either of the following and get the same result:

A7(b9#5)

or

A7[b9/#5]

if your score uses the second version (chords_stacked) of the XML. The first approach only works if you follow the rules (9 before 5, # before b); the second handles other combinations (but will almost certainly not look good if you try b13 or #11 on top, those really need to be special-cased as well).

Ultimately it should be possible to "reset" a score if it still has an older version of the XML file by changing to one of the standard styles, saving, reloading, then changing to the new custom size, but the process isn't 100% reliable due to the way custom styles are handled. That's because the custom chord description info gets "baked in" your score. The positive side to the way it works is, your score will look the same on someone else's system even if they don't have the custom chord description file (which is how I knew the score you uploaded did not have that set).

So for now while we are still experimenting, I recommend making copies of a score to experiment with, so you never need to load a new custom XML file into a score that previously had a different one.

In reply to by Marc Sabatella

Hey Marc,

Quick question about your XML file. My score has lots of #9#5 that would benefit from the stacking, but also one #9#5b9 that would probably look strange unless it stacked in 3. But in that spot, there's space to write it out lengthwise.

With the way your code is written, would applying the XML file do anything to the 3-alterations chord, or would it leave it alone so long as I kept it in parentheses rather than your bracket notation?

(Yes, I know the b9 should technically come before the #5, but it's a guitar voicing and that's literally the order of extensions, so I'm bending the rules there.)

In reply to by abnyc

Hi! Best way tyo find out what would happen is to try it :-). And if it doesn't do what you want, then continue the discussion and collectively maybe people can find a way to get it to work.

BTW, note that listing alterations in a particular order based on how you expect the chord to be voice is not standard, and no musician reading this would understand that is what you mean. The standard is to be consistent, always listing extensions in the same order regardless of the voicing you have in mind. When you want a specific voicing, better to just write it out. However, the actual order that should be applied consistently - no real standard there. Some list 9 before 5, others the other way around.

Thanks for the interim solution Marc S. I see that the feature is on the Musescore 4 list but I just wanted to add my +1. I play in a big band and will sometimes put tricky sections into Musescore to help me learn them. This feature is really helpful when the score is very specific about extensions.

Simplifying, to use the solution explained by Marc Sabatella, you can copy the code of XML above in the notepad app, choose "save as" and name it as "chords_jazz2.xml" (you can name as you want, but there is another chords_jazz.xml in musescore 4, different of this one - it's essential to save with the .xml in the end of the name). So, as Sabatella said, copy the filç to the folder "styles", in documents/musescore. On musescore app chosse format, styles, chords an choose the xml format you have created on the custom option. It works well on musescore 4 also!
Here is the code to copy:

1

0.85

1.3

0.75

t
^
triangle

t
^
m:0:-4.5 striangle m:0:4.5

M
m:0:-4.5 M m:0:4.5

Ma
m:0:-4.5 Ma m:0:4.5

ma
m:0:-4.5 ma m:0:4.5

Maj
m:0:-4.5 Maj m:0:4.5

maj
m:0:-4.5 maj m:0:4.5

o
degree

0
m:0:-4 oslash m:0:4

dim
sdim

69
m:1:-2 s6 m:-4:7 s9 m:0:-5

6,9
s6 m:0:-4.5 s, m:0:4.5 s9

6/9
m:1:-2 s6 m:-2.5:0 s/ m:-2:7 s9 m:0:-5

add
m:0:1.5 sadd m:0:-1.5

add
m:0:-0.5 sadd m:0:0.5

alt
m:-1:0 alt

no
m:0:-4.5 no m:0:4.5

omit
m:0:-4.5 omit m:0:4.5

(
m:1:-2.5 m:0:-2 ( m:0:2 m:-0:2.5

)
m:0:-2.5 m:0:-2 ) m:0:2 m:0:2.5

,
m:0:-2.5 m:0:-1 , m:0:1 m:0:2.5

/
m:0:-2.5 m:0:-1 / m:0:1 m:0:2.5

(
m:1:-4.5 s( m:0:4.5

)
m:0:-4.5 s) m:0:4.5

,
m:0:-4.5 s, m:0:4.5

/
m:0:-&mod; s/ m:0:&mod;

-->

b
m:0.5:0 sb

#
s#

0
m:0:2.5 e0 m:0:-2.5

1
m:0:2.5 e1 m:0:-2.5

2
m:0:2.5 e2 m:0:-2.5

3
m:0:2.5 e3 m:0:-2.5

4
m:0:2.5 e4 m:0:-2.5

5
m:0:2.5 e5 m:0:-2.5

6
m:0:2.5 e6 m:0:-2.5

7
m:0:2.5 e7 m:0:-2.5

8
m:0:2.5 e8 m:0:-2.5

9
m:0:2.5 e9 m:0:-2.5

10
m:0:2.5 e1 e0 m:0:-2.5

11
m:0:2.5 e1 e1 m:0:-2.5

12
m:0:2.5 e1 e2 m:0:-2.5

13
m:0:2.5 e1 e3 m:0:-2.5

0
m:0:-1 s0 m:0:1

1
m:0:-1 s1 m:0:1

2
m:0:-1 s2 m:0:1

3
m:0:-1 s3 m:0:1

4

m:0:0 s4 m:0:0

5
m:0:-1 s5 m:0:1

6
m:0:-1 s6 m:0:1

7
m:0:-1 s7 m:0:1

8
m:0:-1 s8 m:0:1

9
m:0:-1 s9 m:0:1

10
m:0:-1 s1 s0 m:0:1

11
m:0:-1 s1 s1 m:0:1

12
m:0:-1 s1 s2 m:0:1

13
m:0:-1 s1 s3 m:0:1

[
m:0:-1 ( :push

]
m:0:-4.5 m:0:-1 ) m:0:1

/
:pop m:0:4.5 m:0:1

:n :a
/ m:0:1 :n :a m:0:-1

6/9
m:1:-2 s6 m:-2.5:0 s/ m:-2:7 s9 m:0:-5



6,9
s6 m:0:-&mod; s, m:0:&mod; s9

-->

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