Use "b" and "#" rather than "es" and "Is" by default for German chords

• Nov 27, 2014 - 08:07
S4 - Minor


1) Combination of Fis, Ges, A/B♭♭, B♭, H doesn't make sense
2) Fis# and Des♭ - which makes absolutely no sense
3) a bug with B♭♭. Once B♭♭ is entered (as Hbb) it jumps back to an unrecognized Bb


Right now, in order to get "Bb7", you need to type either "B7" or "Hb7" (the latter I recognize probably doesn't make sense, but it works, so whatever). I'm assuming no one will complain if I let you actually *type* "Bb7" (as well as continuing to allow the other options in order to get the chord that renders as "Bb7"?

Actually, I prefer allowing "Bb" as an input. The user sees B♭, so it's a little strange that entering Bb is not recognised.

No complaints from me, instead lots of cheers ;-)

I wasn't actually expecting complaints :-)

Here is a PR for all of the fixes discussed:

- default for "ordinary" flats & sharps in German mode reverts to normal flat and sharp glyphs
- the note that would otherwise be called "B" in German mode continues to be rendered as "Bb" to lessen ambiguity
- in both cases, a simple change to the XML file changes the behavior to allow a "pure German" mode or any other compromise one desires
- "Bb" now allowed when entering that chord
- double flats and sharps now parsed and rendered correctly across the board

Two remarks:
a simple change to the XML file changes the behavior to allow a "pure German" mode
Is such a file provided? Or documented how it's done?

I did take a look at the code and have the impression that "A♭♭", in German Asas (or Ases) is possibly not catered for. Damn the Germans for their exceptions !! ;-)

There are two basic chord definition files used in 2.0 - chords_std.xml and chords_jazz.xml. The rest of the file that relate to chord symbols are provided for 1.X compatibility only. I updated both of the 2.0 chord definition files with instructions on how to customize them - to get es/is instead of b/# and to get B instead of Bb.

Abb is partially catered for. You can enter Abb, Ases (I did not know about Asas!), or Abb, and it renders as Abb by default. But it is true that there is no way to get Ases to render as such - it will either come out as Abb (the default) or as "Aeses" (if you redefine "bb" to render as "eses").

Somehow, given that a) very few people will be editing these files to get "pure German" mode, and b) double flats in chord symbols are virtually unheard of, and c) Abb and Ebb are the only double flats that will cause issues, I somehow doubnt we're going to hear about this glitch in any real life situations.

Updated PR so ylu can type "Asas" (as well as "Ases", "Abb", or even "Aeses"). Still renders with the double flat symbol by default, still no way to force it to render as "Asas" (without changing all double flats to render that way).

It would theoretically be possible to fix that, but it's a somewhat deeper change I'd really rather not make at this point without really good reason given that I doubt this will ever be encountered.

I'm looking at chords_std.xml in the pull request, and yes, there are instructions on how to get the "is" and "es" back. I don't see instructions on how to get "isis" and "eses", or is that automatic? But you say (quote): if you redefine "bb" to render as "eses" - so how do you do that?

I'd like to see the "Heses" chord ;-) - if only to write some diminished-7 chords:
C, Es, Ges, Heses,
Es, Ges, Heses, Deses,
Ges, Heses, Deses, Feses and finally
Heses, Deses, Feses and A ... OK, now you'll think I'm crazy ;-)

On the issue of pure German mode, I bed to differ. I think many Germans will want that, as I said, I have a customer who wanted it, and he's not the only one. Good that he can get it now.

One other question:
If you add a new pure_german_chords.xml to your installation and use it as "custom", then ship the score to another person, what will they see? Is the XML embedded in the score, so that whatever custom stuff is defined will be visible at the recipients end?

To get "eses" and "isis", edit the definition of "bb" and "##", to say value="eses" and value="isis".

Yes, if you use a custom XML file, those definitions get saved with your score.

As for double flats in diminished chords - they appear *within* diminished chords often enough, sure, but not normally as the root, and hence they would virtually never be called for in the chord symbol itself. Plus most musician would look very unkindly on you if you handed them a chart with double flat or double sharps in the root. We tolerate some amount of awkward spelling when it is theoretically correct, but there is no situation I can think of where it would be theoretically correct.

The only possible example I can think of is a descending passing chord between iii and ii in Gb major, which some would spell as biiio (Bbbo, or in German Heseso). But even then I would argue it's not *really* correct. Even though it is descending, it is more correct to spell that chord (regardless of key) as #iio, as that spellng is much more obviously related to the key and allows for better spelling of the common tones with ii.

To get "eses" and "isis", edit the definition of "bb" and "##", to say
value="eses" and value="isis".

Is this documented in the file? I can only see:
<font family="MScoreText">
<sym code="0xe263" name="##"/>
<sym code="0xe264" name="bb"/>
Where does the definition go?

Thanks for you comment on double flat chord symbols. I was thinking hard to come up with an example, but couldn't really find a good justifiable one.

Replace the code="0xe263" with "value="isis". We haven't yet fully documented this file and the tags, but it's meant to be reasonably obvious. code attributes are for Unicode codepoints, value attribributes are for string literals. Feel free to edit that to add a comment and submit your own PR!

Sorry, I'm currently not set up for MuseScore development. The effort required is much higher than for you to add one line of comment.

One observation (using the nightly build with the changes checked in):
This now implements "German international": F♯, G♭, A/H♭♭, B♭, H.
(Note: We settled for H♭♭ instead of B♭♭).

However, when I double click a chord symbol to edit it, the following is displayed during the editing:
Rendered as - edited as
F♯ - Fis
G♭ - Ges
A♭ - As
H♭♭ - Hbb
A♭♭ - Abb
B♭ - B
H - H

So when returning to a chord to edit it, the system offers the German spelling of the chord (unless it has double accidentals), although we have "international" display.
This is intentional, right?

"Intentional" is maybe a strong word. "A known side effect of how we implemented it" is more to the point. That's going to be true for some other things as well - MuseScore reconstructs the chord symbol on the fly (it has to be able to handle transposition) and while it might accept several options for entry, and the chord definition file can give control over the rendering, it has to pick one thing to display in the edit box when you double click. So you can always enter "es" or "b" while in German mode, and the chord definition file will control how it actually renders, but when it comes to editing an existing chord, MuseScore has to pick a one way of presenting the text to you, and "es" is that way if you are in German mode.

Trying "pure" German works nicely for single accidentals, see the custom file attached:

However, what about minor chords: A II-V7-I in German is spelled:
d, G7, C. The minor chord is lowercase and **does not** have the "m".

I can see that lower case is possible, but how do we lose the "m"? Surely no German would want to see "fism".

Attachment Size
pure-german-fixed.png 7.08 KB
pure_german_std.xml 4.92 KB

Not sure what you mean. If you don't want the "m", then don't type it.

Hmm. There was a bug a few months ago where the "m" would appear after save/reload even if you didn't type it. That was fixed some time ago - see #32331: Lower case minor chords bug. Maybe somehow you are still using some files left over from a months-old build, and that is somehow causing whatever problem you are seeing here as well as explaining your missing double flat /sharp glyphs too?

Sorry, Marc, I didn't know it was an option not to type the "m". So that's solved.
I'm using the very latest Nightly, so no left overs.

I made a few chords minor, no "m", I pasted the first line into the second and transposed diatonically. Then I saved. On opening I get funny "=" in the transposed stuff:

I guess that's a new bug. What happens when you open that score?

Attachment Size
funny-equal-signs.png 13.78 KB
pure german-minor.mscz 6.98 KB

The "=" is a placeholder I use for "minor" so that MuseScore can remember this is supposed to be a minor chord even though nothing appears in the extension to indicate it. It's supposed to be internal only, but there do indeed appear to be cerain cases where the "=" can appear after certain combinations of operations involving changing styles. If you can find a precise series of steps to reproduce the problem, please open a new issue and be as specific as possible.

Meanwhile, see if you haven't already.