Add Mountain Dulcimer instrument and 3-string tab presets
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:
-
Define a set of tab presets in stafftype.cpp, in the function "void StaffType::initStaffTypes()" Following the approach of tab4StrCommon, tab4StrFull, tab5StrSimple.
-
Add the new tab presets to the enum class StaffTypes in stafftype.h.
-
Add Mtn Dulcimer instruments to instruments.xml, in the plucked-strings instrument group.
The steps with specific details =========:
-
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),
- 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, };
-
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 An issue, as "S5 -… by Jojo-Schmitz
See feature request: #153016: add mountain dulcimer incl. a tab preset
In reply to An issue, as "S5 -… 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 JoJo - you've definitely… 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 itTAB_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 The string data is in the… 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 Rests should show, yes. all… by rocchio
I'm not sure you reached this conclusion, but define the strings in their proper order like in a guitar, then set the Upside Down option in the advances style properties (though I'm not sure how to do this in instruments.xml).
In reply to I'm not sure you reached… by mike320
That's what I just did, in the "Tab. dulcimer" definition.
In reply to That's what I did by Jojo-Schmitz
Jojo, I didn't see your PR when I responded.
In reply to Rests should show, yes. all… by rocchio
Ok, will change that rests setting too then
In reply to Ok, will change rest setting… by Jojo-Schmitz
Thanks Jojo.
See See https://github.com/musescore/MuseScore/pull/6470
In reply to See See https://github.com… by Jojo-Schmitz
There's a Linux AppImage to test this new feature with, see https://github.com/musescore/MuseScore/actions/runs/215361560
(Windows test version to follow shortly, macOS version fails to build for some strange reason)
In reply to There's a Linux AppImage to… by Jojo-Schmitz
Cool. I am on Linux (fedora), so will give it a try later today after practice with my dulcimer group.
In reply to There's a Linux AppImage 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.)
In reply to There's a Linux AppImage to… by Jojo-Schmitz
macOS test version now available too at https://github.com/musescore/MuseScore/actions/runs/216830448
In reply to See See https://github.com… by Jojo-Schmitz
Windows test version at https://ci.appveyor.com/project/MuseScore/musescore/builds/34743296/art…