Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Swetom2011 am Montag, 27. Juni 2022, 18:07

Titel: Dynamics Line-up
Beitrag von: Swetom2011 am Montag, 27. Juni 2022, 18:07
Ich habe mehrere Versuche gemacht um "dynamics" auf eine Höhe zu bekommen.  Der Lilypond code ist beigefügt aber nichts gibt mr das was ich brauche.  Was mache ich da falsch und gibt es was Besseres?
Unten sind zwei Bilder, einmal aus das Partitur und dann das was ich bekomme mit meinen Code.

\version "2.22.1"

\paper {
  ragged-last = ##f
}

% Option 1:
%fzp = -\tweak self-alignment-X #0
%#(make-dynamic-script (markup #:concat ( "fz" #:hspace 0.2 "p" )))

% Option 2:
%fzp = #(make-dynamic-script "fzp")

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

% Option 4:
%fzp = #(make-dynamic-script (markup #:concat ( "fz" #:hspace 0.2 "p" )))

% Other definitions
mol = \markup { \medium \italic "molto" }

% Option 1
fzp = -\tweak self-alignment-X #0
#(make-dynamic-script (markup #:concat ( "fz" #:hspace 0.2 "p" )))

\relative {
\override Hairpin.minimum-length = #8


    a2 ^\markup { \bold "Option 1"} ( \rfz \> b4)  r \p
    r2 r4  bes \pp \<
    << bes1(  \fzp { s4 s\< s\> _\mol s\! } >>
    a1) \> \pp
    r4 f2 \pp bes4~ 
 
}

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

\relative {
\override Hairpin.minimum-length = #8

    a2 ^\markup { \bold "Option 2"} ( \rfz \> b4)  r \p
    r2 r4  bes \pp \<
    << bes1(  \fzp { s4 s\< s\> _\mol s\! } >>
    a1) \> \pp
    r4 f2 \pp bes4~ 
 
}

% Option 3
fzp = #(make-dynamic-script "fzp")

\relative {
\override Hairpin.minimum-length = #8

    a2 ^\markup { \bold "Option 3"} ( \rfz \> b4)  r \p
    r2 r4  bes \pp \<
    << bes1(  \fzp { s4 s\< s\> _\mol s\! } >>
    a1) \> \pp
    r4 f2 \pp bes4~ 
 
}

% Option 4
fzp = #(make-dynamic-script (markup #:concat ( "fz" #:hspace 0.2 "p" )))

\relative {
\override Hairpin.minimum-length = #8

    a2 ^\markup { \bold "Option 4"} ( \rfz \> b4)  r \p
    r2 r4  bes \pp \<
    << bes1(  \fzp { s4 s\< s\> _\mol s\! } >>
    a1) \> \pp
    r4 f2 \pp bes4~ 
 
}
Titel: Antw:Dynamics Line-up
Beitrag von: Malte am Dienstag, 28. Juni 2022, 09:17
Das fzp steht nicht mit der Crescendogabel auf einer Höhe, weil sie zeitlich nicht direkt nacheinander kommen. Besser wäre also, nicht das Crescendo erst nach einem Viertel beginnen zu lassen, sondern sofort. Außerdem würde ich das Decrescendo bis zur nächsten Eins ziehen. In Takt 4 ist die Reihenfolge von pp und > falsch bzw. anders als in der Vorlage.

Davon abgesehen gibt es ab LilyPond-Version 2.23 die Funktion \after, die dir das Konstrukt mit << { } { } >> vereinfacht. Du kannst sie aber auch in Version 2.22 schon verwenden, wenn du die Definition übernimmst:
\version "2.22.1"


after =
#(define-music-function (delta ev mus) (ly:duration? ly:music? ly:music?)
   (_i "Add music @var{ev} (usually a post-event) with a delay of @var{delta}
after the onset of @var{mus}.")
   (define (empty-chord? m)
     "Checks whether m is an empty chord <>."
     (and (music-is-of-type? m 'event-chord)
          (null? (ly:music-property m 'elements))
          (null? (ly:music-property m 'duration))))
   (if (and (not (empty-chord? mus))
            (ly:moment<?
             (ly:music-length mus)
             (ly:moment-add (ly:music-length ev) (ly:duration-length delta))))
       (ly:warning (G_ "\\after expression longer than main music argument.")))
   #{ \context Bottom << { \skip $delta <> $ev } #mus >> #})


\paper {
  ragged-last = ##f
}

mol = \markup { \medium \italic "molto" }
fzp = #(make-dynamic-script "fzp")

\relative {
  \override Hairpin.minimum-length = #8
  a2(\rfz\> b4)  r\p
  r2 r4  bes\pp\<
  \after 2 \> \after 2 _\mol bes1(\fzp\<
  \after 2. \pp a1)\>
  r4 f2\pp bes4
}
Titel: Antw:Dynamics Line-up
Beitrag von: Swetom2011 am Mittwoch, 29. Juni 2022, 17:54
Thanks a lot, I will test it when I'm at the computer again.
Titel: Antw:Dynamics Line-up
Beitrag von: Swetom2011 am Samstag, 2. Juli 2022, 19:06
Works fine, thanks  ;D