Rechter Fingersatz in Polyphonie

Begonnen von Hilflos-im-Code, Donnerstag, 7. Januar 2021, 08:08

« vorheriges - nächstes »

Hilflos-im-Code

\version "2.21.6"
\score {
  <<
    { \set strokeFingerOrientations = #'(up) a''\rightHandFinger 3 }
    \\
    {a}
    \\
    {\voiceTwo \set strokeFingerOrientations = #'(up) e''\rightHandFinger 2}
  >>
}

\score {
  <<
    {\set strokeFingerOrientations = #'(up)
     \override StrokeFinger.add-stem-support = ##t a''\rightHandFinger 3 }
    \\
    {a}
    \\
    {\voiceTwo \set strokeFingerOrientations = #'(up) \override StrokeFinger.add-stem-support = ##t e''\rightHandFinger 2}
  >>
}



\score {
  <<
    {
     \set strokeFingerOrientations = #'(up)
      \override StrokeFinger.add-stem-support = ##t <e'' \rightHandFinger 2 a'' \rightHandFinger 3 >   }
    \\
    {a}
   
  >>
}


In den ersten zwei Beispielen verschwindet das i hinter dem Notenkopf des a's.

Letztendlich kollidieren die rechten Fingersätze der Mittelstimmen grundsätzlich mit den Noten der Außenstimmen. Wie bekomme ich es hin, dass die rechten Fingersätze so platziert werden wie z.B. im dritten Beispiel.

harm6

Hallo,

ich habe mich auch schon öfter über dieses Phänomen geärgert, habe aber keine gute Lösung dafür.

In der Regel nehm' ich dann quick'n dirty:


\version "2.21.6"

%% shortcut
rH = \rightHandFinger \etc

\score {
    <<
      {
        \set strokeFingerOrientations = #'(up)
        \override StrokeFinger.add-stem-support = ##t
        a''\rH 2 \rH 3
      }
      \\
      { a }
      \\
      {
        \voiceTwo
        e''
      }
    >>
}


Gruß,
  Harm

Hilflos-im-Code

Danke. Die Lösung geht in Ordnung und war klar, wenn man in Lilypond direkt schreibt. Ich importiere aber aus musicxml. Bei dem Import kann man sehr viel mit regulären Ausdrücken regeln, aber dieses Problem nicht.

Letztlich besteht das Problem auch für Instrumente, die Fingersatzzahlen über oder unterhalb der Noten schreiben.

\score {
  <<
    { \set strokeFingerOrientations = #'(up) a''\rightHandFinger 3 -2 }
    \\
    {a}
    \\
    {\voiceTwo \override Fingering.direction = #UP \set strokeFingerOrientations = #'(up) e''\rightHandFinger 2 -1 }
  >>
}


Anyway \score {
  <<
    {\set strokeFingerOrientations = #'(up)
     \override StrokeFinger.add-stem-support = ##t a''\rightHandFinger 3 }
    \\
    {a}
    \\
    {\voiceTwo \set strokeFingerOrientations = #'(up) \override StrokeFinger.add-stem-support = ##t e'' -\tweak extra-offset #'(0 . 3.5) \rightHandFinger 2}
  >>
}

Wenn man das "m" dazu bringen könnte, dem getweakten "i" automatisch nach oben auszuweichen, wäre auch schon vieles geholfen.

harm6

Du könntest versuchen den Script_column_engraver in den Staff zu verlegen. D.h.:

  \layout {
  \context {
    \Voice
    \remove "Script_column_engraver"
  }
  \context {
    \Staff
    \consists "Script_column_engraver"
  }
  }


Zunächst scheint es im minimal-example zwar keine sichtbare Veränderung zu geben. Aber wenn Du den Y-offset der StrokeFinger veränderst klappt es.
Bitte beachte das alle grob-overrides und entsprechende context-Setzungen für StrokeFinger jetzt im Staff-context erfolgen müssen, z.B.:
    \override Staff.StrokeFinger.Y-offset = 5
    \set Staff.strokeFingerOrientations = #'(up)

Das vollständige Beispiel:

\version "2.21.6"

rH = \rightHandFinger \etc

\score {
  \new Staff {
    \override Staff.StrokeFinger.Y-offset = 5
    \set Staff.strokeFingerOrientations = #'(up)
    <<
      { a'' -\rH 3 }
      \\
      { a }
      \\
      { \voiceTwo e'' -\rH 2 }
    >>
  }
  \layout {
  \context {
    \Voice
    \remove "Script_column_engraver"
  }
  \context {
    \Staff
    \consists "Script_column_engraver"
  }
  }
}


Bitte teste das sorgfältig bevor Du es für Deine files verwendest.
Ich kann die Befürchtung nicht abstellen, daß die Kur zuviel anderes kaputt macht (auch wenn ich das bislang nicht bemerkt habe ...) und damit schlimmer als die Krankheit wäre.

Gruß,
  Harm

Hilflos-im-Code