Modified Heuchi's "Check Violin Multiple Stops" to include violas and cellos

• Aug 17, 2024 - 01:51

As stated above. Cleaned up the tabs. The original plugin for violin checked all the violins in the score, not just the staff that you select. So if you have a string quartet and you want Violin 1 to be checked, it will also check Violin 2. I don't know why. This should be fixed. The plugins should be merged into one plugin that changes the program values depending on the string instrument.
Program values to change:

In evaluate(strings), max-min is 6 for violin, 5 for viola, and 4 for cello.

In findPositions(curS, notes, strings), var violinStrings has the following values:
for violin, "violinStrings" is [55, 62, 69, 76]
for viola, "violaStrings" is [48, 55, 62, 65]
for cello, "celloStrings" is [36, 43, 50, 57]
and for bass, "bassStrings" is [27, 33, 38, 43] if you're so inclined to check double bass stops (I didn't include that in the upload, but you get the idea)

I haven't tried too many multiple stops but it seems to work with the values provided.
Thanks be to heuchi for all his work.


Comments

Check this merged one.
Checks selection, or when nothing selected, the complete score.
I know nothing about string instruments, so i cannot check the validity.

Edit: i just realized i did not this 'max-min is 6 for violin, 5 for viola, and 4 for cello." into account. new version added.

Attachment Size
checkMultipleStops_MS4.qml 19.64 KB

In reply to by graffesmusic

Actually, no. Not quite ready. Check it out below.
This is an impossible double stop after checking with your unified plugin: 1.png
This is the same stop after checking with the viola multiple stops plugin: 2.png

I tried to clean up the tabs in yours but it didn't help. Something else is going on.
Also, maybe you can try making the check stops routines generic, and use smaller routines to check which instrument and plug in the values accordingly. For example, If instrument is violin (or viola, or cello), values are [xx, xx, xx, xx] and interval is xx. Then jump to the main routine that checks the stops.

In reply to by FBXOPWKDOIR2

The double stop in the violaS does not show any problem, because that staff is not checked.
On my system, using viola (solo), this is correctly identified as impossible.
if (instrument === "strings.viola" || instrument === "viola") in the code.
We might have a problem here with the plugin Api instrumentId.
In Musescore 3, this returned the musicXMLid. In MS4.0 this was changed to return it's own MS id.
(hence the check on both "strings.viola" and "viola" )
However, this was reverted to the MS3 style (so musicXMLid) https://github.com/musescore/MuseScore/pull/15687
Now the problem:
instruments.png
The musicXMLid "strings.group' is the same for violins, violas, violoncellos and contrabasses, and is not usable in this situation.
I don't know a solution for the problem. Anyone??
Workaround is of course to use viola instead of violas.
(There was some discussion here https://github.com/musescore/MuseScore/issues/22548 about the use of plural forms or not).

EDIT: There are further complications for the cello according to Sevsay's book on pages 27-29. The cello routine needs more programming to meet these requirements. Basically it involves the use of the thumb to exceed the cello limit of a major third. It says that thumb stops are of importance in solo writing and not too common for the orchestra. Also, that if you need help notating for that technique anyway, to carefully approach a cellist and ask for their assistance. DO NOT APPROACH FROM BEHIND! A cello can weigh up to almost 5 kilos and can render you unconscious. Be safe, and good luck.

In reply to by FBXOPWKDOIR2

It works for me. But it does not matter, i have deleted it. I don't want to waste anyone's time.
The plugin showed only IMP and DIFF stops,

  default:
        //     markText(cursor, "OK"); // debugging
              break;

=> OK commented out. I don't want the score filled with OK's.
Anyway. Sorry to have wasted your time.

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