Fretboard plugin

• Oct 8, 2019 - 10:03

Hello everyone!

A few days ago I have created a plugin that tries to implement a simple guitar fretboard tool for tablature input and visualization, similarly to the existing Piano keyboard tool or similar fretboard tools in other score editors. The result looks approximately like this (see the full screenshot here):
screen1_shrinked.png

This plugin currently supports both visualizing the currently selected chord on the fretboard and doing note input by adding new chords (in Note Input mode) or editing existing chords in the tablature.

The project has largely been started to explore possibilities the of plugins framework in its current (as per 3.3 RC version) state and to figure out whether this framework is suitable to extend MuseScore user interface in some reasonable way. The answer seems to be mostly "yes", although the plugins framework lacks an access to some aspects of information about a score (like staff/instrument properties) and means to trigger most of GUI events (like viewport positioning and doing chords playback without entering Play mode).

So I hope this project will be useful both for users working on tablature scores and for other plugin developers trying to create something similar. Any feedback, both on this plugin and on similar GUI plugins development in general, would be greatly appreciated!

Here is the link to the plugin:
https://musescore.org/en/project/fretboard
Source code:
https://github.com/dmitrio95/fretboard-plugin


Comments

To forward this comment : https://musescore.org/en/node/68406#comment-949750

IMHO, tooltips (or labels, sorry, I don't know how you define the difference) are missing currently. And I think the example of Guitar Pro (logically, it got the approval of the guitarists!) is the right approach.

That is to say: when the mouse hovers over a fret, the dot/note is drawn in light yellow/transparent - it provides you with the essential information -, before being validated by the click (and a brighter yellow).

FIRST
gp.jpg THEN gp1.jpg
Also note that the name of the note (and its octave) is reported to the left of the fretboard. I don't know if this is also possible with the plugin - useful, but a bit less of a priority (for me).

In reply to by cadiz1

Maybe a small explanation you might benefit from:
A tooltip is a text that pops-up when "hoovering" over an object with your mouse.
Labels will always be visible (sometimes maybe they can be hidden by setting a selection checkbox, or similar method)....

Hi dmitrio

BIG Surprise !! THANK YOU SO MUCH :)
Working so well as far as I used.

One thing I was aware of ;
Translated word “frets” width is not wide enough to show in my language (Japanese).
Make it little wider ?
Thank you!
fret.jpg

Attachment Size
fret.jpg 95.67 KB

Fantastic plugin. Thanks!
Currently, clicking on the fretboard to add a note gives audible feedback only for the first note.
Adding any subsequent notes on the same measure has no audible feedback.
In fact, as soon as there's one note in a measure, there won't be audible feedback when clicking any fret on the fretboard.

Fantastic plugin dmitrio.

I didn't know it was in active development. It is so good it inspired me to add some more features, like chord detection, interval names, notes being played by each finger and support for rootless chords and non played notes. Also, fixed some issues with the tunning detection and have some more ideas like laying out scales, chord extensions and modes.

Let me know if you are interested in the code and I can share it with you.

Thank you all for your feedback!

I have just uploaded a small update to this plugin. It mainly adds an ability to play a chord when adding a note to it so editing a score with a fretboard should no longer be in silence (this feature will work only since 3.3.4 version of MuseScore). Also there are some minor styling changes one of which should resolve the issue with Japanese translation reported by Kazuma Yamamoto. A full list of changes is available in the changelog.

The updated version is available on the project page (or with this direct link to the updated plugin).

I would also like to add labels for notes on the fretboard like @cadiz1 suggested. This has been implemented as a part of a pull request by gsc-dev (I guess, the author of this comment above), so I hope to be able to integrate at least some of the proposed changes soon.

In reply to by cadiz1

@Dmitrio
Thanks again and congratulations for this fretboard plugin. These "new" plugins are really fine and bring an undeniable added value to the program.
This makes me think again about this feature request (#153016: Ability to enter Tabs for diatonic fretted instruments) that has remained a dead letter (perhaps due to the difficulty of implementing it in the current code?), despite its interest and the many requests.
So, do you think it could be a good candidate for another specific plugin?

EDIT: for the record, there were for version 2, a few plugins related to this question, but which were really very limited and inconvenient. Ie: https://musescore.org/en/project/dulcimer-tab
and https://musescore.org/en/project/daa-strum-stick
and https://musescore.org/en/project/seagull-merlin-checknotes

In reply to by cadiz1

@cadiz1, that is a good question. Right now MuseScore strictly binds note pitch to tablature markings according to chromatic fretting law, and this is not something that can be overridden in plugins. So without changing MuseScore itself (and implementing a fully working support for diatonic fretting would indeed be not a trivial task) plugins can only emulate some of the desired properties of diatonic tablature. I can think of two options how to achieve something similar:
1) Draw tablature manually based on a pitched staff content. This seems to be something that is done by the plugins you listed above.
2) Use the existing tablature facility and change notes tuning to obtain the desired sound. Some tweaks could also be used to visually emulate unusual tablature markings like "6+" for dulcimer. This method has certain drawbacks (for example, notes would internally have wrong pitches so linkes staves would work incorrectly) but this would allow to make use of most of the existing features for tablature visual layout.

Both these approaches could probably be implemented in a non-interactive mode with plugins in MuseScore 2 as well. The new plugins possibilities allow to implement interactive editing of such a custom tablature, so I believe some version of such plugin that would be more convenient to use could indeed be implemented. The second approach (based on the existing tablature) should probably be not really difficult to implement within the Fretboard plugin so, as an experiment, I could try to add a support for diatonic fretting to this plugin. If you (or whoever would like to work with diatonically fretted instruments in MuseScore) find it a usable solution we could think on how to expand its possibilities further.

In reply to by dmitrio95

Thank you Dmitrio for looking into this question.
I must admit that I do not understand everything about the difference (and their result) between the two approaches.
Two simple thoughts:
The fact that it would not work with linked staves does not seem to me to be a crippling handicap. Would copying and pasting it into another staff work, with the right display of course?
Then, it seems to me that it would be expected, by default, that the tablature would only contain three lines/strings? So rather than a guitar fretboard that should be reduced? (sorry, it's not very clear to me)

In any case, the really important and crucial point is to make sure that the entry of this or that fret (even the special fret 6+) corresponds to the right sound, and to the right display of the notes in standard notation.
And vice versa (if possible?): this or that standard note should correspond to the right fret and sound on this type of instrument.

In reply to by cadiz1

With the second method copying and pasting to a normal staff also wouldn't work as it would be impossible currently to convince MuseScore to assign pitches to notes in a tablature not following a chromatic fretting law. So it looks like it is better currently to develop such a plugin based on the existing MuseScore 2 plugins which draw the needed tablature notation themselves. Anyway, a possibility to edit such a tablature in an interactive way rather than having to manually run a plugin to convert the existing notation to a tablature should make it more convenient to use.

Another small update: I have just uploaded a version with note labels and semi-transparent note markers on fret hovering. I am not sure about their visual appearance, so please let me know if it would be better to change it or make it customizable. Anyway, they should be already useful as they are.

In reply to by dmitrio95

dmitrio
wooow… it’s super ! Thank you so much for labeling notes. very very useful :D

Two things I’m aware of ( well, I don’t mind, though )
>Accidental note’s names are extending out beyond a red circle
>Labeling color is similar to fretboard

But again, Thank you so much for labeling notes!
fret.jpg

Attachment Size
fret.jpg 9.09 KB

In reply to by kazuma yamamoto

Wow, too! Thanks Dmitri. Really helpful, and as expected. Also, I noticed the same color, or lack of contrast between the fingerboard itself and the background of the labeling notes. Since we have to go out and come up with some ideas, maybe a faded/washed pink? (but I haven't tested it, so there's no certainty about what it will actually look like).) So much the better if there are other proposals.

In reply to by cadiz1

Actually if needed I could make the color customizable so users could define the color of their own preference. Still I also like this scheme with pink color so if it (or maybe some other similar color?) suits everyone else I could just make the change to the "main" version of plugin.

In reply to by dmitrio95

I had tested this plugin, but not yet in a multi-voice context (which is almost the majority of my use cases)
Unfortunately, there is a problem with the voice change.
For example, pictures below: I'm trying, in voice 4 (but it's the same thing with voice 2, etc.), to enter a C half note on the first beat. When I click this C on fretboard (fifth string, third fret), I get a failure and the warning "String-above command not valid in current state".

Moreover, it is very difficult, and unexpected, to get rid of this dialog. From what I observe, I have to click ten times (why ten, or eleven?) on the closing cross so that the window finally disappears. And surprise, at that moment, the C is entered?!

EDIT: And for the pink labeling, I observe that we are very close to the color default of voice 4 in the program. So, somehow, it's coherent.

essai basse Do.jpg
commande string above.jpg

In reply to by cadiz1

I tested it primarily on tablature staves, this is a side effect of changes which were needed for them to work properly with multiple voices. However in 3.5 version it should work correctly also with normal staves: the recently merged PR 5657, among other changes, allows to avoid repeatedly using string-above/string-below commands to adjust the cursor's string number on a tablature staff.

In reply to by dmitrio95

Thanks Dmitri, that's better. But there's still a little more to do. Watch this animation. In Voice 2 (and 3/4), when you change to next measure, the last note is replayed (heard again) and the first note of the next measure is added to the previous note :(
For example: C.D.E.F. (F played again when you press right arrow - on the animation I used the arrows of the virtual fretboard, just to show better the process), then the G, against all odds, is entered above the F. And then the navigation is kind of stuck.

Video_2020-04-30_133329.gif

In reply to by Jack A. Zucker

"Adjusting fret positions in tablature is horrible in musescore. "
Before saying that it's just horrible in MuseScore, maybe we should first understand that it's different from Finale, and that it takes a little time to learn how it works with MuseScore. In short, don't try to find in MuseScore what you were doing with Finale, it's a waste of time! And luckily. Nevertheless, if the difficulties continue, open a new thread (not here, in the Plugins section, but in the general discussion section), and describe those difficulties - with a short but essential sample score, please.

In reply to by cadiz1

No, it's a matter of convenience because having to hit a modifier key to move the note to a different string without modifying the pitch is not just different. It's a destructive edit as the default. The Ux should be defined in such a way that the default behavior without using a modifier is non-destructive to the note's value. It's all too easy with musescore to accidentally change the note value. It's a backwards Ux. Hitting the up and down arrow's default action should be to keep the note value and change the string. The modifier key should be required only when changing the pitch. That's pretty common-sense Ux.

In reply to by Jack A. Zucker

"it does not auto advance to the next rhythmic position automatically. I have to keep hitting the right arrow key after each note."
Well, yes, it's the principle. As far as I can see it's the same thing with the "Fretboard" tool of Guitar pro.
It allows you to stay on the spot to enter chords, simply. And to continue, you use the direction arrows, nothing special, and as expected.
"It also randomly changes the rhythmic values back to a whole note"
You make something wrong, I don't know what for the moment. The program can't itself change a note value without any user intervention whatsoever.

In reply to by cadiz1

regarding the first part, it shouldn't be the default to stay on the same beat position or there should be a simple checkbox. And the 2nd, I can repeat it infinitely and easily. It's 100% repeatable with 3.5.

1) Create a new guitar+tablature diagram
2) Open fretboard
3) Set note value to 8th
4) NOTE - At this point, the notation will show (2) 8th rests a 1/4 rest and whole rests the rest of the document

So if you start entering notes followed by right arrow with fretboard diagram you will get 2 8ths a 1/4 a half and then the rest of the document whole notes.

I notice that it works better in that regard with 3.4.2.

But also, if you are right handed, it's extremely awkward to click notes with the mouse and hit the right arrow to advance. They definitely need an auto-advance checkbox

In reply to by Jack A. Zucker

"4) NOTE - At this point, the notation will show (2) 8th rests a 1/4 rest and whole rests the rest of the document"
Yeah, what about it? Image below. This is how MuseScore works (unless I misunderstood something in your reasoning). But in any case, don't expect to receive the same result and display as Finale, it's definitely a dead end. Forget Finale (if possible!), and get to know MuseScore - it's another program, that's all -, step by step.

la.jpg

In reply to by Jack A. Zucker

> So if you start entering notes followed by right arrow with fretboard diagram you will get 2 8ths a 1/4 a half and then the rest of the document whole notes.

To clarify a possible confusion, if you enter a note input mode before starting entering notes (with N key or the corresponding toolbar button at its left side) all durations of the entered notes will be 1/8, as expected. In MuseScore a note input mode is supposed to be used to enter notes (although it is triggered automatically on some actions), and it indeed acts differently from normal mode which is more supposed to do other kinds of actions including editing already existing notes and adding or editing other musical or text elements. That is why normal mode keeps duration of the note or rest being currently selected when you move selection across the score.

Fretboard plugin doesn't interfere with this logic at all and simply uses the duration which MuseScore considers being more relevant in this context, according to the latest user actions, score state, note input state presence etc.

In reply to by Marc Descoteaux

A similar issue came up with regard to ordinary keyboard entry of tablature also, FWIW, and it was the general consensus it was best not to advance. This is in contrast to standard notation, but I think the rationale was that on standard staves, building a chord is easy through simple click or using Shift+letter, but on tab staves its more of a process of selecting string and fret independently, and having to cursor back every time would really be a hardship.

In reply to by Marc Sabatella

this is another issue of usability that makes something like notion vastly superior to musescore. In notion you can quickly enter tablature using the fretboard and one hand without having to use a cross hand technique to advance to the next note with your right hand on the mouse and your left hand crossing over to the right arrow key. Finale works the same way. Again, if you want people to make the switch you should be looking not at consistency with yourself but what the other software does.

In reply to by Jack A. Zucker

Please read what I wrote again. We did make the conscious choice to break consistency here. The issue is simply that one workflow favors people who mostly write single note music, the other favors people who write more complex chordal / multi-voice music. Our workflow favors the chordal. This was, again, the consensus among many people over the course of many months of development and trials. So while Notion might be "vastly superior" for single-line music by this measure, MuseScore would by the same measure be preferable by the exact same margin for chordal music.

Realistically I could imagine a preference or toolbar button controlling this. Many people would find this useful in standard staves as well, actually. Even though building a chord is easy enough in most cases even with the advance, if the advance takes you to the next system or page, the advance make mouse entry more difficult (so it's mouse users who typically request this).

In reply to by Marc Sabatella

"Realistically I could imagine a preference or toolbar button controlling this."
Yep. It would be really nice. The best of the worlds... :)
(rather toolbar button here, or key as for Shift in standard input)
For now nevertheless, this plugin, quite new, remains a bit buggy. Navigation is actually stucked when changing voices. That is more that problematic. Dmitri is aware of that, so all hopes are possible. :)

In reply to by Marc Sabatella

"Realistically I could imagine a preference or toolbar button controlling this."
Yep. It would be really nice. The best of the worlds... :)
(rather toolbar button here, or a key as for Shift in standard input)
For now nevertheless, this plugin, quite new, remains a bit buggy. Navigation is actually stucked when changing voices. That is more that problematic. Dmitri is aware of that, so all hopes are allowed. :)

In reply to by cadiz1

"Yes, but for what purpose?
The plugin is precisely intended, first, to enter frets number/notes via the virtual fretboard, right ?"

I just need to use the fretboard to enter notes not fret/string information.

I see in an earlier thread that you modified the code to change the hover note color. I would like higher contrast. Would you be able to share instructions so that I could change the color to yellow?

Thank you,
yetoone

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