Represent slash chords as super/subscript

• Dec 29, 2018 - 21:35

It is difficult to read slash chords when they are aligned horizontally - if often looks like two chords that need to be played.

For example, see attached before/after

Attachment Size
musescore-slash1.png 9.78 KB
musescore-slash2.png 23.33 KB


In reply to by mschaerli

You can get this effect by creating a custom copy of chords_jazz.xml and specifying it in Format / Style / Chord Symbols. The definition of "renderBase" (sic) needs different values for the "m:" commands. Changing the "1" and "-1" to "4" and "-4" works OK - the slash is in the same position, but the bass note is lower. Or an additional "m:" command could be added before the slash to lower it as well, maybe with some negative X offset.

I recently added style settings to control superscripting, this could be added in a similar manner but it turns out to be a bit more complicated, so I put it off.

In reply to by Marc Sabatella

Thank you for your quick and helpful reply, Marc. Using your suggested values for "m:", I got the result attached below.

This is better, as the bass note is horizontally below the chord, but it is still arranged on a horizontal axis (from left to right). I am looking for a solution where the bass note is below the chord symbol on the vertical axis, thus saving space (see Example 1). Is this possible with MuseScore 3?

Please also have a loot at post
«ericfontainejazz • Feb 24, 2016 - 08:52»
on the same matter.

In reply to by mschaerli

Well, if you read through that thread and also search for other threads on the topic, you will find a variety of approaches suggested. i don't recommend doing this as many people use that vertical arrangement to mean a polychord - C/E arranged vertically means a C triad on top of an E triad. Anyhow, there is no direct way to do a good job of that currently using a single chord symbol, it would be impossible to get things to align properly I think. But it's easy enough to enter it as separate chord symbols if you really want. Enter the bottom chord first, then a chord consisting of underscores, then the top chord.

In reply to by Marc Sabatella

Please let my clarify by pasting my post in

«mschaerli • Dec 2, 2019 - 16:23
For me, there would have to be two-part solution to this:
1. Chord inversions: e.g. Db/F or C#7/G# with setting for slash angle / bass positioning (side-by-side or below)
2. Polychords or Upper Structure chords: e.g. E/C# (as in Ema triad over C#ma triad) or Dmi/Cmi7 (as in Dmi triad over Cmi7) for a Cmi7(9/11/13) chord.»

What I am looking for is something like this: for [1.] see example #1, for [2.] see example #2 attached below.

The terminus for behaviour [1.] seems to be "angled slash chords (ASC)"

Thank you!

In reply to by mschaerli

So, to be clear: given these two pictures, you can get the first result today using a custom XML file as discussed. To get the result in the second example of the second image, follow the suggestion I gave for using separate chords. Works like a charm, takes only a few extra seconds.

It would be best to try to keep this discussion within a single thread, it's hard to follow otherwise.

In reply to by Marc Sabatella

I agree, I am sorry for the posts in both threads. They seemed to be connected content-wise to me.

As for your suggestions:
1. I have tried the custom XML file, this works. However, the chord still needs the same width horizontally, as the bass note is still printed to the right of the chord, subscript. I would prefer an angled chord symbol to save space horizontally. The image from the other thread is a perfect example in my opinion.

  1. I understand. However, I like the competitor's solution with entering «/» for slash chords and «|» for polychords. So I consider it a feature request.

In reply to by mschaerli

Did you try the customization to the XML I suggested, where Is specifically recommended adding an additional "m:" command before the slash to save some horizontal space? That should work just fine (I tried, for example, m:-2:2).

The feature request is good, I recommend you go to the issue tracker (see Support menu above) and submit a formal "Suggestion" there. I could see this working by actually just automating the same process I am describing: pressing the special key would complete entry of the chord, underline it, and set you up to enter another chord below. Although I might suggest using "_: rather than "|", seems to be closer to how it would be represented visually. Or maybe either, because I can also see that "|" makes some sense "semantically".

In reply to by Marc Sabatella

Thank you, Marc! I will try the additional "m:" command you suggested. As I am not fluent in XML, where would I put it? My current .xml file contains

renderBase: m:0:4 :n :a m:0:-4

Marc: «Or an additional "m:" command could be added before the slash to lower it as well, maybe with some negative X offset.»
I don't have a slash in renderBase, do you mean this code line?
render: m:0:-4 oslash m:0:4

As for polychords, I will submit a formal "Suggestion" there as you recommended.

First let me say what a marvelous program this is, and express my gratitude!! Thank you so much!

In terms of programming this kind of a related question. I believe it was sven's XML file I used (thank you) to adjust the spacing of the chord and root of these slash chords. That worked perfectly! Yesterday i just downloaded version 4 of Musescore. I'm including the XML file, and a pdf.

To create the pdf I created the Musescore file of this chord chart, exported as a .png, opened the resulting file and drew in the slashes with a mouse. The spacing of the roots and chords are perfect, and I'd like to know if there's any way to make the slashes look more like I have drawn them.

Thank you for taking a look at this!

Attachment Size
Away2.pdf 1.34 MB
chords_jazz_2.xml 11.92 KB

In reply to by Marc Sabatella

Dang you're good!

It's starting to look closer to what i'd like.
Here's where the slash is defined.

Here's where I added it to the bas(e) hehe.

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

I'm attaching a file with the output this has given me, and I have two questions.

First, I'm not 100% sure of what controls what. I figured out the X and Y axis, but not sure exactly which order in which to enter the "render" statement for that line. I could use some help on how to move the slash and what is on the right side of the slash separately.

Secondly, couldn't figure out how to assign the slash to a font with a specific size. '

Thank you very kindly for all the help!

Attachment Size
Slasher.jpg 50.52 KB

In reply to by Dan Waldis

I guess I must have missed on defining the slash, because when I removed the definition for the slash name shown in Slash1.jpg, it didn't change anything. If I'm understanding correctly, the slash is already added in the "renderBase" command, correct?

I'm going to try making it a comment so the html page doesn't nuke it.

In reply to by Dan Waldis

The render statement is read left to right. So you put an "m" statement before the slash to tweak the position of the slash itself, then another "m: statement after to tweak the position of the bass note. The final "m" statement is just there to return the "cursor" to the correct position just in case anything else was going to be added later, but that's not really possible, so it probably has no real effect.

To understand how to use a sym statement to set the slash to render using a specific character in a specific font at a specific size, see the examples at the top of the file. For instance, see the list of symbols like "(" and ")" defined to be MuseJazz Text at 0.85 magnification.

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