Dynamics Line-up

Begonnen von Swetom2011, Montag, 27. Juni 2022, 18:07

« vorheriges - nächstes »

Swetom2011

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~ 
 
}

Malte

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
}

Swetom2011

Thanks a lot, I will test it when I'm at the computer again.

Swetom2011