Combining fretboard diagrams and chord symbols as single entity

• Mar 7, 2016 - 12:08

I would like to work on improving the existing fretboard diagrams in MuseScore.
There have been issues and feature request regarding this many times in the past, link to some of which are given below.

I have ideas touching the following aspects :
1. As of now, the chord symbols and the fretboard diagrams are two seperate entities. So they should be integrated
as one element , with one as a feature of other ( probably fretboard diagram as a feature of
chord symbol)
2. Currently, only a C chord fretboard is accessible in the advanced workspace , which has be edited note by note
manually after placing it in the score.
Idea is to have a predefined set of chords already available to the user to choose from. The user can choose from
the existing chords ( this includes a nested option to choose the style in which the chord is
played on fretboard) , or the user can define a custom chord and add it to the set.
3. Currently, palette does not work properly for storing chord symbols , with the root of the chord lost when dragging
it to the palette. It would be useful to be able to drag this new element ( chord symbol +
fretboard) to the palette for quick usage in future. The palette can also be pre-populated with some of commonly
used chords by default.
4. Since fretboard diagrams are only meant for guitar , it would be less preferred to compulsorily display them along
with each chord symbol. The user will have an option to hide this property ( fretboard diagram )
from the chord symbol according to his/her will.

User Interaction :
1. User can add an element for chord symbols having a fretboard diagram property.
2. Double-Click on the diagram opens an edit dialogue which shows the chord name with a fretboard diagram along
with other edit options. User can edit the chord name , which when matches a chord in the
predefined set of chords , automatically updates the corresponding fretboard diagram.
3. There are three ways to select a chord,fretboard diagram pair :
a) Directly edit the name of the chord and the corresponding fretboard diagram is generated if match found .
If a match is not found , the user will be prompted to add a new chord to the database.
b) Select the chord from the list of available chords. Select the variant of the fretboard diagram for the chord and
hit OK.
c) Click ADD and a new dialog opens which allows adding a new chord,fretboard combination to the list .
4. Single Click on this element allows positioning it with the arrow keys , as with the chord symbols now.

I would like to have the opinion of other developers on this topic on the design as well as implementation specifics.


I'm not thrilled with having chord symbols and fretboards as a single element. They need to be independently positionable, which to me implies they remain two separate elements. A single *container* element could be created perhaps, or - probably better - a way of associating them.

As someone who hardly ever uses fretboard diagrams but uses chord symbols all the time, I would not find it to be an improvement if there were extra steps added to my workflow. So whatever changes are made, they shouldn't penalize users for not using fretboard diagrams.

In reply to by Marc Sabatella

I believe fretboard diagrams already do have a property which would allow for a chord symbol.
Ah, theree it is, libmscore/fret.h, line 70, FretDiagram::_harmony (private), a pointer to a Harmony, AKA chord symbol...
There's also a getter, FretDiagram::harmony(), but no setter (yet).

Wouldn't that be the missing link?

In reply to by Jojo-Schmitz

There are lots of hooks in the code for places where these at one point seemed to be linked in some way, but I'm not sure if it was ever fully implemented. Various places in the Harmony implementation, though, check to see if the parent is a segment or a fret diagram and do different things accordingly. I think that's how it was meant to work at some point. But I don't know that parenting a chord symbol to a fret diagram was fully implemented.

In reply to by Marc Sabatella

For a guitarist , it would be definitely desired to be able to position chords and fretboards as a single element.

And for non-fretboard users too, this does not penalize them by adding extra steps to the workflow.
I propose using chord symbols as the default with fretbaord diagrams as a property of the chord , which the user can select to be visible.
So , instead showing the fretboard diagrams along with chord symbols requires some extra step needed to be done , not the other way round.

In reply to by abhinav_

Often you will want them positioned togehter, but don't you think there would be times when you would need to be able to tweak the position independently? I don't think it would be good to take this possibiltiy away. Make it easier to place them together, yes, but don't make it harder/impossible to position them independently. That was my point, why I think turning these into a single element is not necessarily a good idea.

In reply to by Marc Sabatella

True,keeping fretboard diagrams as a separate element allows more flexibility in positioning them.
But is it feasible to be able to auto generate the corresponding fretboard diagrams for all the chord symbols , considering fretboard diagrams to be separate elements?

In reply to by abhinav_

I don't see why not. Although the current half-implemented framework is kind of backwards for this type of approach. it sees the chord symbol as a child of the fretboard diagram, when really, what you are proposing is more the other way around. Associating fretboard diagram to an existing chord symbol using that mechanism would involve re-parenting the chord symbol to the fretboard diagram rather than the segment, not a deal breaker, but something to consider.

In reply to by Marc Sabatella

For the sake of the discussion, I made the implementation of fretboard containing harmony (chord name) work in this branch:

The harmony can be moved freely around and the fretboard doesn't move. The fretboard can be move *vertically* without affecting the harmony. But moving the fretboard horizontally currently move both.

Attachment Size
fretharmony.gif 359.53 KB

In reply to by [DELETED] 5

If that meets people's expectations, great! But I suspect there would be more work to be done to get things to work correctly with respect to transposition, linked parts, copy/paste, change of style settings, etc - places where I suspect we currently looking for chord symbols to handle just by checking Harmony elements as annotations on segments, and we would need to start also looking for fret diagrams to see if they have Harmony elements attached.

In reply to by Marc Sabatella

I've been working with MS over two years now and am not the wizard as most of you but I have one issue and would like to provide my solution for the placement of chord names and chord diagrams.

My issue is: if you have a measure with, as an example, a hole note, three quarter note or half note rests with chords every quarter note, the values have to be changed to quarter note rest in order to enter chord diagrams. Then, changed back again. My suggestion would be to select the chord name then double click the chord diagram icon in the palette to place the diagram. Seams simple but I'm not a software engineer.

Here's what I have done to make my score ready for chord diagrams. I created another style with the name: Jazz Lead Sheet w/Chord diagrams. This style has all the settings from Style>General>Chord Symbol/Fretboard Diagrams and added vertical frames to place the chord name and the Fretboard diagram in the proper position. I create the score with my default Jazz Lead Sheet style, entering all notes, lyrics, chord names and other embellishments. I then apply my Jazz Lead Sheet w/Chord Diagrams style then enter the diagrams. I've made hundreds of scores for my 5 piece jazz combo with great success using this method.

Attached is a song with three scores. First one is the song complete with the Jazz Lead Sheet Style. Second one with the Jazz Lead Sheet w/Chord diagrams applied and the third with the diagrams applied.
These scores are provided for software development only.

In reply to by Marc Sabatella

As to how other softwares like TuxGuitar and Sibelius work are , you select a note , then choose from a library of chords to select a particular chord. This both updates the staff notes for the chord , and places the chord name and the fretboard diagram above .
As for tux guitar , the fretboard diagram and the chord symbol are attached and can neither be positioned independently nor together.

In reply to by abhinav_

And what if you want to enter *only* the chord symbol? In Sibelius, I know that is easy; I've never been forced to deal with chord libraries or fretboard diagrams, but maybe that wouldn't be easy in TuxGuitar? Also, what if you have already entered the chord symbol, and now you want to add only a fretbord diagram?

In reply to by abhinav_

I used Finale 2014 for quite a while to figure out how it presents chords and diagrams.

As for entry of chord symbols ,
1. You single-click above the staff lines , and a cursor starts blinking
for you to enter the chord correpsonding to that note.
After entry of the symbol , double clicking it will open chord-definition dialog . chord-definition.PNG
2. You can also double-click in the beginning instead of single click, which opens the chord-definition dialog directly.

The chord-definition dialog has two buttons for fretboards :
1. Select: It opens a Fretboard Selection menu, where you can select a different style of playing the same chord . fretboard select.PNG
2. Edit : It opens a Fretboard editor menu , where you create your own chords with the gui toolbox , hear out the chord , select instrument , choose whether to show starting fret number and also how many frets to show at once,etc. fretboard editor.PNG

Visibility :
( for visibility and positioning : Choose the Chord tool > The Chord menu appears. Then carry out the desired adjustments )
1. Globally :
Choose Chord > Show Fretboards. If you have already added chord symbols to your piece, the guitar diagrams now appear.
Individual chords with Show Fretboards unchecked in the Chord Definition dialog box will not have fretboards.
If you haven’t yet added chord symbols, add them as described in Chord symbols; as you add each chord, its fretboard diagram will also appear.
2. Hiding/Showing fretboard diagram for individual chords :
a)Choose Chord > Manual Input.
b)Click on the note containing the chord you want to edit.
c)Double-click the handle of the chord. The Chord Definition dialog box appears.
d)Under Show, uncheck Fretboard. Click OK. You return to the document, where the fretboard no longer appears for that chord.

On choosing the Chord tool , the chord menu appears and also four traingles appear on the left side.

For fretboards :Choose Chord > Position Fretboards.
For Chords : Choose Chord > Position Chords.

Vertical Positioning : Drag the triangle handles up or down.
◦Drag the leftmost triangle to set the baseline for the entire piece. As you drag it, the other three triangles move with it.
◦Drag the second triangle up or down to set the baseline for this staff, all the way through the piece. As you drag it, the two triangles to its right move with it.
◦Drag the third triangle up or down to set the baseline for this staff, this system only.
As you drag it, the rightmost triangle moves with it. Use this third triangle only in Page View (so you can see the system you’re affecting).
◦Dragging the rightmost triangle doesn’t move any existing fretboards; instead, it sets the position for the next one you enter.

Individual positioning :

1.Choose the Chord tool . Handles appear on all chord symbols and fretboards.
2.Click the fretboard handle and drag (or press arrow keys to nudge) the fretboard diagram. The fretboard moves relative to the chord symbol.

Click the chord symbol's handle and drag to move both the chord symbol and fretboard uniformly.

I think this behaviour is quite neat.
Everyone's opinion on what should we abstract out from this is welcome .

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