Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: DMat am Freitag, 24. Juli 2015, 10:39

Titel: \tweak Fingersatz
Beitrag von: DMat am Freitag, 24. Juli 2015, 10:39
Hallo zusammen,

ich habe ein Problem beim tweak von Fingersätzen. Mein Ziel ist es, die 4 vor dem g nach links zu verschieben (siehe Bild im Anhang).

Bei meinem Konstrukt wird die nichts sagende Fehlermeldung

Fehler: GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck
   d8\rest a <fis'-3> <g-\tweak #'X-offset #
                                                 -.5-4>|


ausgegeben wenn ich wie im folgenden (funktionierenden) Minimalbeispiel tweaken möchte:

\version "2.18.2"
global= {
\time 6/8
\key d \major
\clef "treble"
}
fl = \set fingeringOrientations = #'(left)

melodie = \relative c' {
\global
\fl
        <a'-1\3>4. a8 b a |
}

zwischenstimmea=\relative c'{
\global
\fl
d8\rest a <fis'-3> <g-\tweak #'X-offset #-.5-4>|
}

\score{
<<
\new Staff
                        <<
      \new Voice { \voiceOne \melodie}
      \new Voice { \voiceTwo  \zwischenstimmea}
        >>
>>
}


Wie kann ich meinen Fingersatz verschieben?
Titel: Re: \tweak Fingersatz
Beitrag von: fugenkomponist am Freitag, 24. Juli 2015, 11:52
nichts sagende Fehlermeldung

Fehler: GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck
   d8\rest a <fis'-3> <g-\tweak #'X-offset #
                                                 -.5-4>|

Das sagt, dass GUILE (der Scheme-Interpreter) mit dem Scheme-Ausdruck -.5-4>| nichts anfangen kann, weil es eben kein gültiger Ausdruck ist. Das Problem ist, dass du zu wenig Leerraum lässt. Wenn zwischen -.5 und -4 ein Leerzeichen steht, dann weiß GUILE, dass der Scheme-Ausdruck (der mit dem # angekündigt wurde) da schon zuende ist. So ein Ausdruck geht immer bis zum ersten Leerzeichen, oder bis zur schließenden Klammer zur ersten öffnenden wie z. B. bei '(5 . 0) o. ä.

Ich weiß ehrlich gesagt nicht, warum es dann immer noch nicht geht mit X-offset. Was aber geht, ist \tweak #'padding #2 oder so. \tweak #'extra-offset ginge zwar auch, padding hat aber den Vorteil, dass die neue Position der Fingersatzzahl beim Spacing berücksichtigt wird und sie nicht mit der vorhergehenden Note kollidiert. (Du kannst den Unterschied feststellen, wenn du mal \tweak #'extra-offset #'(-5 . 0) und \tweak #'padding #5 vergleichst.)

Hier also die Lösung für dein Problem. Ich habe dabei noch zwei Kleinigkeiten verbessert. Erstens ist der Barcheck da falsch, weil für die untere Stimme noch zwei Achtel bis zum Taktende fehlen und zweitens überlasse ich LilyPond die Positionierung der Achtelpause. Wenn du sie trotzdem von Hand versetzen willst, dann bitte auf eine Position auf einer Linie, also c oder e, aber nicht d (dann kollidiert sie nämlich zu sehr mit dem Notensystem).\version "2.18.2"
global= {
  \time 6/8
  \key d \major
  \clef "treble"
}
fl = \set fingeringOrientations = #'(left)

melodie = \relative c' {
  \global
  \fl
  <a'-1\3>4. a8 b a |
}

zwischenstimmea=\relative c'{
  \global
  \fl
  r8 a <fis'-3> <g-\tweak #'padding #1.5 -4>
}

\score{
  <<
    \new Staff
    <<
      \new Voice { \voiceOne \melodie}
      \new Voice { \voiceTwo  \zwischenstimmea}
    >>
  >>
}

Edit: Ich seh gerade, dass du neu bist hier. Herzlich willkommen! Und schön, dass du gleich mit Versionsangaben und Minimalbeispiel startest, da hilft man gleich viel lieber :)

2. Edit: Das Bild im Anhang hab ich mit 2.19.22 erstellt, ich glaub kaum, dass der Unterschied groß ist, bin mir aber ehrlich gesagt nicht mehr ganz sicher, wann es das letzte Mal Änderungen z. B. an der Positionierung von Pausen gab.
Titel: Re: \tweak Fingersatz
Beitrag von: DMat am Freitag, 24. Juli 2015, 13:32
Vielen Dank für die Hilfe und die ausführlichen Erklärungen, fugenkomponist.
Das hat mir wirklich geholfen.

Die Pausen setze ich im Text manuell, da es bei vier Stimmen immer wieder zu falschen Anordnungen kommt (Pause für 3. Stimme steht unter dem Bass oder so).
Vielen Dank auch für die beiden Verbesserungen. Die wurden gleich eingebaut.
Titel: Re: \tweak Fingersatz
Beitrag von: fugenkomponist am Freitag, 24. Juli 2015, 15:57
Was du vielleicht beachten solltest (war mir lange auch nicht klar), LilyPond sieht die Stimmen aus einem mir unbekannten Grund gerne in anderer Reihenfolge als man erstmal denkt: höchste, tiefste, zweithöchste, zweittiefste, dritthöchste, … Vielleicht liegt die falsche Anordnung der Pausen daran. Hast du mal ein Beispiel? Dann könnte man mal schauen, ob man LilyPond nicht dazu bringen kann, halbwegs automatisch die Pausen richtig zu setzen ;)\version "2.19.22"
\language "deutsch"

\relative {
  % falsch:
  <<
    e''2
    \\
    c
    \\
    a
    \\
    e
  >>
  % richtig:
  <<
    e'2 % höchste
    \\
    e, % tiefste
    \\
    c' % zweithöchste
    \\
    a % zweittiefste
  >>
}
Titel: Re: \tweak Fingersatz
Beitrag von: trulli am Sonntag, 26. Juli 2015, 10:10
Hallo,

ich würde in deinem Beispiel doch zu einer Verschiebung mit extra-offset raten. Einfach, weil es besser aussieht und der Fingersatz nicht aus Versehen dem a der Oberstimme zugeordnet werden kann.
Kleiner Tipp zu den Pausen: mit \rest hast du volle Kontrolle, was die Höhe anbetrifft.

LG

\version "2.18.2"
global= {
  \time 6/8
  \key d \major
  \clef "treble"
}
fl = \set fingeringOrientations = #'(left)

melodie = \relative c' {
  \global
  \fl
  <a'-1\3>4. a8 b a |
}

zwischenstimmea=\relative c'{
  \global
  \fl
  a8\rest a <fis'-3> <g-\tweak #'extra-offset #'(-.2 . -1)-4>
}

\score{
  <<
    \new Staff
    <<
      \new Voice { \voiceOne \melodie}
      \new Voice { \voiceTwo  \zwischenstimmea}
    >>
  >>
}
Titel: Re: \tweak Fingersatz
Beitrag von: fugenkomponist am Sonntag, 26. Juli 2015, 12:17
Kleiner Tipp zu den Pausen: mit \rest hast du volle Kontrolle, was die Höhe anbetrifft.
Das hatten wir schon ;) Allerdings saß die Pause damit erstmal blöd auf der Linie (d8\rest). Aber weiter runter geht natürlich.