Horizontale Verschiebung von Dynamic Events

Begonnen von Swetom2011, Dienstag, 31. Oktober 2023, 15:37

« vorheriges - nächstes »

Swetom2011

Beim Finetuning von ein Werk habe ich festgestellt, dass einige Dynamic Events manchmal nicht optimal horizontal platziert sind obwohl im Partitur alles gut aussehen.  Daher möchte ich einige davon horizontal verschieben aber bin unsicher was die beste Methode ist. 

Im beigefügten Code habe ich drei Beispiele, wie gehabt (Baseline), mit Leertasten (Option 1 - space added before dynamics, i.e. meno and molto) und mit ein extra Offset (Option 2 - Offset added). 

Der Output (siehe Violine1Baseline.png) sieht "schlechter aus als im "Baseline" Beispiel, siehe angehängten Snapshot.

\version "2.24.2"


%************************************************************************
% Baseline
%************************************************************************

%% additional definitions required by the score:
mol = \markup {
  \center-align \line {
    \hspace #-0.5 \normal-text \italic molto
  }
}
molDynamic = #(make-dynamic-script mol)

men = \markup {
  \center-align \line {
    \hspace #-0.5 \normal-text \italic meno
  }
}
menDynamic = #(make-dynamic-script men)

fzp = #
(make-dynamic-script
 (markup #:line (#:dynamic "fz"
                  #:hspace -0.5
                  #:dynamic "p")))

\layout {
  \Staff
  \override Hairpin.minimum-length = #11.5
}


\relative c'' {
  \clef "treble"
  \time 4/4
  \key f \major
  g2  ^\markup { \bold "Baseline"} (\f \> fis4) \p  \tuplet 3/2 { cis8( \<dis e)  }
  e2 ( - \menDynamic  \> d!4) \tuplet 3/2 { b8( \pp \< cis d)  }
 
  <>
  \fzp\<
  \after 2 \molDynamic
  \after 2 \>
  \after 1 \!

  d1(
  cis4) \> r \pp r2 \bar "|."
}

%*****************************************************************
% Option 1
%************************************************************************

mol = \markup {
  \center-align \line {
    \hspace #-0.5 \normal-text \italic "   molto" % Space added
  }
}
molDynamic = #(make-dynamic-script mol)

men = \markup {
  \center-align \line {
    \hspace #-0.5 \normal-text \italic "   meno" % Space added
  }
}
menDynamic = #(make-dynamic-script men)

\relative c'' {
  \clef "treble"
  \time 4/4
  \key f \major
  g2  ^\markup { \bold "Option 1 - space added before dynamics, i.e. meno and molto"} (\f \> fis4) \p  \tuplet 3/2 { cis8( \<dis e)  }
  e2 ( - \menDynamic  \> d!4) \tuplet 3/2 { b8( \pp \< cis d)  }
 
  <>
  \fzp\<
  \after 2 \molDynamic
  \after 2 \>
  \after 1 \!

  d1(
  cis4) \> r \pp r2 \bar "|."
}

%************************************************************************
% Option 2
%************************************************************************
 
mol = \markup {
  \center-align \line {
    \hspace #-0.5 \normal-text \italic molto
  }
}
molDynamic = #(make-dynamic-script mol)

men = \markup {
  \center-align \line {
    \hspace #-0.5 \normal-text \italic meno
  }
}
menDynamic = #(make-dynamic-script men)

fzp = #
(make-dynamic-script
 (markup #:line (#:dynamic "fz"
                  #:hspace -0.5
                  #:dynamic "p")))

\layout {
  \Staff
  \override Hairpin.minimum-length = #11.5
}


\relative c'' {
  \clef "treble"
  \time 4/4
  \key f \major
  g2  ^\markup { \bold "Option 2 - Offset added"} (\f \> fis4) \p  \tuplet 3/2 { cis8( \<dis e)  }
  e2 ( - \tweak extra-offset #'(1 , 0) \menDynamic  \> d!4) \tuplet 3/2 { b8( \pp \< cis d)  }
 
  <>
  \fzp\<
  \after 2 \tweak extra-offset #'(1 , 0) \molDynamic
  \after 2 \>
  \after 1 \!

  d1(
  cis4) \> r \pp r2 \bar "|."
}

harm6

Im engeren Sinne liegt das Problem darin, daß "meno" in der Partitur am Zeilenbeginn, in der Stimme aber in der Mitte der Zeile liegt. Das dahinführende crescendo hat als to-barline #t eingestellt, das ist der default. Schon to-barline auf #f zu setzen sollte das Problem lösen, imho. Allerdings stört Hairpin.minimum-length dann, siehe nächsten Absatz.
Du hast allerdings so viele Formatierungen im Code, das es schwer ist den Überblick zu behalten, schlimmer noch man kann gar nicht recht sagen was LilyPond wann daraus macht. Ich würde sie fast alle rausschmeißen und nur dort wo es nötig ist anpassen.

Hier meine Fassung:

\version "2.24.2"

%************************************************************************
% harm
%************************************************************************

mol = \markup {
  \normal-text \italic
  %% probably:
  \pad-x #0.5
  molto
}
molDynamic = #(make-dynamic-script mol)

men = \markup {
  \normal-text \italic
  %% probably
  \pad-x #0.5
  meno
}
menDynamic = #(make-dynamic-script men)

fzp = #
(make-dynamic-script
 (markup #:line (#:dynamic "fz"
                  #:hspace -0.5
                  #:dynamic "p")))

\relative c'' {
  \clef "treble"
  \time 4/4
  \key f \major
  g2(\f\> fis4)\p  \tuplet 3/2 { cis8(-\tweak to-barline ##f \< dis e)  }
  e2 (-\menDynamic\> d!4) \tuplet 3/2 { b8(\pp\< cis d)  }
 
  \break
 
  <>\fzp\<
  \after 2 \molDynamic
  \after 2 \>
  \after 1 \!

  d1(
  cis4)\> r\pp r2
  \bar "|."
}

Darüberhinaus ist in Deinem layout ein Syntax-Problem. In
\layout {
  \Staff
  \override Hairpin.minimum-length = #10.5
}
stimmt was nicht:
Entweder so:
\layout {
  \override Hairpin.minimum-length = #10.5
}
oder so:
\layout {
  \context {
    \Voice
    \override Hairpin.minimum-length = #10.5
  }
}
Der Unterschied ist hier nicht von Bedeutung. Das der originale override trotzdem funktioniert liegt daran, daß \Staff überflüssig ist.

Der extra-offset Befehl funktioniert überhaupt nicht, da du ein Komma verwendest hast, es muß ein Punkt sein.

Swetom2011

Vielen Dank, probiere ich aus.

Hairpin minimum length (ob ich das richtig definiert habe oder nicht lassen wir zuerst dahin) müsste ich einfügen weil sonst die hairpins zu kurz geraten sind. Nicht unbedingt in den einzelne Stimmen aber in Partitur.

Es ist natürlich auch so, dass das ganze über Zeit gewachsen ist und nach und nach "tweaks" eingearbeitet wurde die dann vielleicht nicht optimal zusammenpassen.

Es ist keine Entschuldigung aber man lernt immer dazu. Ich hoffe ich behalte alles im Kopf für's nächsten Werk. Nochmals vielen Dank.

Manuela

Zitat von: Swetom2011 am Montag,  6. November 2023, 22:07Ich hoffe ich behalte alles im Kopf für's nächsten Werk. Nochmals vielen Dank.

Guter Vorsatz  :) , ich empfehle dir, lieber Notizen zu machen. Du wirst staunen, wie schnell du alles wieder vergessen hast, vor allem, wenn du nach längerer Pause wieder einmal mit Lilypond anfängst.
Danke für eure Hilfe
viele Grüße
-- Manuela