Add Mountain Dulcimer instrument and 3-string tab presets

• Aug 18, 2020 - 21:56

Am seeking to add support for the Mountain Dulcimer instrument by adding instruments and 3-line TAB preSets. Am unsure if I should post here or open an issue for this? What is the best way to proceed?

Here is what I believe needs to occur:

  1. Define a set of tab presets in stafftype.cpp, in the function "void StaffType::initStaffTypes()" Following the approach of tab4StrCommon, tab4StrFull, tab5StrSimple.

  2. Add the new tab presets to the enum class StaffTypes in stafftype.h.

  3. Add Mtn Dulcimer instruments to instruments.xml, in the plucked-strings instrument group.

The steps with specific details =========:

  1. Define a set of tab presets in stafftype.cpp, in the function void StaffType::initStaffTypes(). I.e.:

    StaffType(StaffGroup::TAB, "tab3trSimple", QObject::tr(
                  "Tab. 3-str. simple"), 3, 0, 1.5, true, true, true, false, "MuseScore Tab Modern", 15, 0, false, "MuseScore Tab Sans", 9, 0, TablatureSymbolRepeat::NEVER, false, TablatureMinimStyle::NONE, true, false, true, false, false, true, true, false),
    
    StaffType(StaffGroup::TAB, "tab3StrCommon", QObject::tr(
                  "Tab. 3-str. common"), 3, 0,     1.5, true,  true, false, false, "MuseScore Tab Modern", 15, 0, false, "MuseScore Tab Serif",   9, 0, TablatureSymbolRepeat::NEVER, false, TablatureMinimStyle::SHORTER,true,  false, true,  false, false, true, true, true),
    
    StaffType(StaffGroup::TAB, "tab3StrFull",   QObject::tr(
                  "Tab. 3-str. full"),   3, 0,     1.5, true,  true, false, false, "MuseScore Tab Modern", 15, 0, false, "MuseScore Tab Serif",   9, 0, TablatureSymbolRepeat::NEVER, false, TablatureMinimStyle::SLASHED,true,  true,  true,  true,  false, true, true, true), 
    

  1. Add the new tab presets to the enum class StaffTypes in stafftype.h. I.e.:
 
            enum class StaffTypes : signed char {
                STANDARD,
                PERC_1LINE, PERC_3LINE, PERC_5LINE,
                TAB_6SIMPLE, TAB_6COMMON, TAB_6FULL,
                TAB_4SIMPLE, TAB_4COMMON, TAB_4FULL,
                TAB_5SIMPLE, TAB_5COMMON, TAB_5FULL,
          ----> TAB_3SIMPLE, TAB_3COMMON, TAB_3FULL, <----
                TAB_UKULELE, TAB_BALALAJKA, TAB_ITALIAN, TAB_FRENCH,
                TAB_7COMMON, TAB_8COMMON,
                STAFF_TYPES,
                // some useful shorthands:
                PERC_DEFAULT = StaffTypes::PERC_5LINE,
                TAB_DEFAULT = StaffTypes::TAB_6COMMON,
            };
  1. Add Mtn Dulcimer instruments to instruments.xml, in the plucked-strings instrument group.

        I.e., see attached file "instruments_MtnDulcimerAdds.txt."
    
        Note: I can't find instruments.xml in the git source anywhere, and I did see a statement somewhere about it being a copy of the data that is actually embedded in the code. So I don't know how this part is meant to be realized.
    
Attachment Size
instruments_MtnDulcimerAdds.txt 4.67 KB

Comments

An issue, as "S5 - Suggestion", would be better.

Do you really need all 3 new tab staff types? Isn't TAB_3COMMON sufficient?
You'd find instruments.xml is in share/instruments
Genre for these certainly is not "common" but "world"
Your string data shows 4 strings though, why? If those doubled strings ara always playd together at the same pitch, drop one, else use a 4 string tab.
And for standard mnt. dulcimer the ranges go 2 semitones lower than the lowest string
Also it seems you have the strings in the wrong order, highest first, needs to be lowest first
Sound should be steel strings as fat as I can tell, not nylon strings

In reply to by Jojo-Schmitz

JoJo - you've definitely raised some good questions and caught some errors on my part:

  • The one tab preset would be fine; I was just trying to follow the pattern I seemed to be seeing with the other tabs.

  • I debated about the Genre - it really is an American folk instrument, tho literally all types of music is performed with it these days. As long as folks can find it I have no real passion around the genre.

  • I did error in leaving 4 strings in the .xml; I was using the 4-string tab presets as I was working and testing my changes and forgot to delete the 4th sting when I submitted my post.

  • The standard dulcimer string range: an error on my part. Key of C is a common alt tuning and I was playing around with that. So, again, I failed to correct the .xml file prior to submission.

  • The sting data is in the correct order. Mtn Dulcimer is played on the lap with the bass string furtherest away from the body. So the universal tab convention is the bass string on the top tab line.

  • Did I get the sound wrong? I took 'Acoustic Guitar' to be the normal, common, steel string acoustic guitar, not the nylon classical guitar. The sound should be steel strings, yes. UPDATE: Yeah, I'm off by one. Should be general MIDI #25. I can't even explain why I didn't notice the parenthetical 'nylon' in the comment that's in the .xml.

So I didn't do a great job getting all the details correct on this even tho I double-checked myself. Apologies for my errors and thank you for the inspection and catching them!

In reply to by rocchio

The string data is in the correct order, well, no, string data doesn't work that way, your way all notes entered in a linked 'normal' staff, ended up in the tab's top string, no way to get them to show in the lower strings.
But for Tablature there is a way, like done for "Tab. 6-str. Italian", by setting the upsideDown parameter to true. Will amend the PR accordingly, and call it TAB_DULCIMER/"Tab. dulcimer"
Do you want rests to show? Like Balalaika does it, and also has 3 strings, (but not upside down)

In reply to by Jojo-Schmitz

Rests should show, yes.

all notes entered in a linked 'normal' staff, ended up in the tab's top string,: Hmm.. ok. Tho I did play around with that by changing the string data in advanced styles on a 4-string tab linked to a standard staff and it all worked fine. But if the 'upside down' is the proper way to deal with this then very well.

In reply to by Jojo-Schmitz

Just tried the Linux appimage - all looks good. Thanks so much Jojo.

(For any mountain dulcimer folks coming across this - Jojo's update gets the instrument and chromatic tab into Musescore. While there is a small community of chromatic dulcimer folks out there, including myself, I do realize that this update does not address the unique diatonic plus-symbol dulcimer tab notation system. My personal goal is to attempt to make a plugin that will read the standard notation staff and create a printable/PDF-able diatonic dulcimer tab from that - tho it of course will not be playable; it would be only for the 'finished' sheet music. Longer term I do intend to make a good faith attempt to work out what it would take to support the Mtn Dulcimer's unique tab notation system. But I've a long learning hill to climb on that, so this may, or may not, come to pass.)

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