Playback in French Horn Ignores Tied Notes when the Note is Marked Hand-Stopped (+)

• Nov 14, 2020 - 19:42

Hi, I'd like to submit the following issue. If I'm understanding right, it looks like you prefer folks to post here before entering an issue in the tracker. Let me know if you'd like me to submit it formally instead!

Issue Description

In French horn parts, when a note is marked hand stopped with a plus (+) sign, and the note is tied, MuseScore's MIDI playback holds the note for the incorrect duration. In the playback, the note is held for only the value of the first tied note, when it should be held for the full duration.

Version and OS:

I reproduced the issue in the following versions (current release and nightly):

  • OS: macOS 10.15, Arch.: x86_64, MuseScore version (64-bit): 3.5.2.312126096, revision: 465e7b6
  • OS: macOS 10.15, Arch.: x86_64, MuseScore version (64-bit): 3.6.0.362741815, revision: 8a492c4

Expected behavior:

In the attached example:

  • During playback, the tied whole notes should be held for the full duration, eight beats.
  • During playback, the tied quarter note and half note should be held for the full duration, three beats.

Actual behavior:

In the attached example:

  • During playback, the tied whole notes are held for only the duration of the first note. The sound of the note ends after four beats.
  • During playback, the tied quarter note and half note are held for only the duration of the first quarter note. The sound of the note ends after one beat.

Steps to reproduce:

  1. Create a new score with a French horn (Horn in F) in the instruments.
  2. Begin Note entry (by pressing N) and add any note.
  3. Press the plus (+) key to add a tied note of the same pitch.
  4. Select the first note by clicking the note head.
  5. From the Palettes, under Articulations, click + to add the stopped notation to the note.
  6. Play back the note. The sounds stops after the first note of the tie.
  7. Delete the plus (+). Now, the tie is played correctly.

Other Comments

Background on Hand Stopping:

In French horn parts, hand stopping is commonly notated with a plus (+) sign over the note. Hand stopping (in German, gestopft; in French, bouché) is a standard technique used only on the French horn, where the right hand completely covers the opening of the bell flare, producing an edgy or cuivré tone.

Note that hand stopping can also refer to a technique on the natural horn (the historical valveless instrument) where the player partly or fully covers the bell on certain notes to produce pitches outside the natural harmonic series. The plus (+) sign notation refers specifically to the expressive technique. That historical technique is generally not notated.

Notes:

  • For an example of this notation in literature, see Mahler 5, Mvt. I, Horn 1, rehearsal #18. It's also common to write the word "gestopft" to carry through a long note or passage, famously as in Tchaikovsky 6, Finale, Horn 4, rehearsal K.

  • It would not be correct to mark both the first and second notes of the tie with a plus (+). If the first note of the tie is stopped, it's expected to play the full duration stopped unless the second one is explicitly marked open.

  • I observed the same behavior with other instruments, but I'm not familiar with how the plus (+) sign is used outside of writing for the horn, so the short note value might be the correct behavior on other instruments.

  • I'm aware MuseScore doesn't include a sound for stopped horn in MIDI playback, so this issue is concerned only with playing back the correct note value when notating stopped horn.

Attachment Size
Tie Example.mscz 4.03 KB

Comments

For some strange reason MuseScore treats brassMuteClosed as an ornament, with a playback styles of baroque and default, the former as some kind of trill, the latter not having a playback style defined at all.
Adding that seems an easy 1-line fix:

$ git diff
diff --git a/libmscore/rendermidi.cpp b/libmscore/rendermidi.cpp
index 7889daf23..fe0ec30fe 100644
--- a/libmscore/rendermidi.cpp
+++ b/libmscore/rendermidi.cpp
@@ -1767,6 +1767,7 @@ std::vector<OrnamentExcursion> excursions = {
       ,{SymId::ornamentTrill,           baroque, _32nd, {1,0}, {1,0},        true,  true, {}}
       ,{SymId::ornamentTrill,          defstyle, _32nd, {0,1}, {0,1},        true,  true, {}}
       ,{SymId::brassMuteClosed,         baroque, _32nd, {0,-1},{0, -1},      true,  true, {}}
+      ,{SymId::brassMuteClosed,        defstyle, _32nd, {},    {0},          false, true, {}}
       ,{SymId::ornamentMordent,             any, _32nd, {},    {0,-1,0},     false, true, {}}
       ,{SymId::ornamentShortTrill,     defstyle, _32nd, {},    {0,1,0},      false, true, {}} // inverted mordent
       ,{SymId::ornamentShortTrill,      baroque, _32nd, {1,0,1},{0},         false, true, {}} // short trill

See https://github.com/musescore/MuseScore/pull/8978

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