Tablature should be finger-accurate for Guitar MIDI Controllers

• Jun 2, 2015 - 19:54
S4 - Minor

When using MIDI guitar controllers, MuseScore guesses which string you've played the note on. These guesses are usually wrong and MIDI guitar users have to spend extra time to correct the finger positions on the tablature (defeating the purpose of using a MIDI controller in the first place).

MuseScore should use existing information such as MIDI note channel, the number of strings and tuning to assign the correct string & fret positions when writing guitar tablature. It can always fall back to guessing if the MIDI controller is monophonic (perhaps a checkbox for multi-channel MIDI guitars).

In Guitar Pro, this mapping between MIDI channels and strings is assumed (standard tuning):
E - channel 6
A - channel 5
D - channel 4
G - channel 3
B - channel 2
e - channel 1 (highest pitched string)

In Sibelius, there is an option to specify "Number of Strings" and "MIDI channel of highest pitched string." They assume MIDI channels are numbered sequentially (+1) from the highest pitched string. Please see attached screenshot.

How to Test:
You can use VMPK (Virtual MIDI Piano Keyboard) to emulate a MIDI guitar and send MIDI messages on any channel you wish to test: For example, sending messages on channel 1 should result in tablature being written on the highest pitched string only.


Attachment Size
sibelius_midi_preferences_musescore.png 90.94 KB


Guitar Pro accepts input all the way up to the 36th fret and ignores any notes that are higher (or out of range). This is probably the easiest implementation. Perhaps you can also consider using the "Number of Frets" property in Staff Properties > String Data?

I like to enforce the above wish for 'finger-accurate' (string-accurate is enough ;) notation in a guitar tab!
With my Jammy guitar, I can give every string a different midi channel and send this to musescore midi input, which works fine, but does not respect the strings and sometimes results in (very) unplayable chords, with correct notes though. I don't know where (or even if) that is processed in musecore code (Hint anyone?). But the information for correct string in the tablature is available (via channel number).
Could that be done in a plugin?
Is the channel info passed into musescore code? If yes where?

Thank you


Here is a MIDI Chart I did some years ago,
It can help to figure out the problem involved in this Tab-String-Filter by channell.

For example, MIDI note #76 appears in all strings (in a 24-fret guitar, for example).
There is a color code:
1) BLUE NOTES: Appear just in one location in the TAB.
2) BLACK NOTES: Appear in two locations in the TAB.
3) GREEN NOTES: Appear in 3 locations in the TAB.
4) 2) BLACK NOTES (BIG FONT): Appear in 4 locations in the TAB.
5) 2) PINK NOTES: Appear in 5 locations in the TAB.
6) RED NOTE: Appear in 6 locations (in the case of 24-fret guitars) or 5 times (in the case of 20, 21 or 22-fret guitars).

Hope it helps to find a solution.

Best !
Julio Herrlein

I just created today this PURE DATA Patch to make fingerboard mapping. I was tired of softwares that map the guitar in the wrong frets, so now I did my own stuff to show the fingerboard in REALTIME.
As seen in the end of video you have color customization of fretboard colours.