"hairpinMolto" bei Zeilenumbruch

Begonnen von chf, Sonntag, 11. Oktober 2020, 19:08

« vorheriges - nächstes »

chf

Liebe Freunde,

nach dem Zeilenumbruch steht "molto" erneut unter der Gabel.
Wie kann ich das verhindern? Mit "left-broken.text" habe ich probiert, aber wie muss ich das Element ansprechen?

Schöne Sonntagsgrüße
Christa

Manuela

Danke für eure Hilfe
viele Grüße
-- Manuela

chf

#2

\version "2.20.0"

hairpinWithCenteredText =
#(define-music-function (parser location text) (markup?)
   #{
     \override Voice.Hairpin #'stencil = #(lambda (grob)
                                            (ly:stencil-aligned-to
                                             (ly:stencil-combine-at-edge
                                              (ly:stencil-aligned-to (ly:hairpin::print grob) X CENTER)
                                              Y DOWN
                                              (ly:stencil-aligned-to (grob-interpret-markup grob text) X CENTER))
                                             X LEFT))
   #})

hairpinMolto = \hairpinWithCenteredText \markup  {\override #'(font-name . "vollkorn medium italic")
             { \fontsize #1.5 \italic "molto"}}


\relative c' {
%\override ?? [color=red]Hairpin.TextSpanner[/color] ?? .bound-details.left-broken.text = ##f
\once \hairpinMolto
b'4\< a4 g fis
\break
e d\! g->~g
}



Pardon...

harm6


\version "2.20.0"

hairpinWithCenteredText =
#(define-music-function (parser location visibility text)
  ((vector? #(#t #t #t)) markup?)
  "The visibility-vector is a vector of 3 booleans,
#(end-of-line unbroken begin-of-line)"
  #{
    \once \override Voice.Hairpin.stencil =
      #(lambda (grob)
         (let* ((orig (ly:grob-original grob))
                (siblings (if (ly:spanner? grob)
                              (ly:spanner-broken-into orig) '()))
                (text-stencil
                  (if (or (and (pair? siblings)
                               (equal? grob (car siblings))
                               (vector-ref visibility 2))
                          (and (pair? siblings)
                               (equal? grob (last siblings))
                               (vector-ref visibility 0))
                          (and (pair? siblings)
                               (not (equal? grob (last siblings)))
                               (not (equal? grob (car siblings)))
                               (vector-ref visibility 1))
                          (not (pair? siblings)))
                      (ly:stencil-aligned-to
                        (grob-interpret-markup grob text)
                        X CENTER)
                      empty-stencil))
                (stencil (ly:hairpin::print grob))
                (par-y (ly:grob-parent grob Y))
                (dir (ly:grob-property par-y 'direction)))
         
           (ly:stencil-combine-at-edge
             stencil
             Y dir
             (ly:stencil-translate-axis
               text-stencil
               (interval-center (ly:stencil-extent stencil X))
               X))))
  #})

txt =
  \markup
    \override #'(font-name . "vollkorn medium italic")
    \fontsize #1.5
    \italic
    "molto"
   
alwaysHairpinMolto = \hairpinWithCenteredText \txt
endHairpinMolto = \hairpinWithCenteredText ##(#t #f #f) \txt
beginHairpinMolto = \hairpinWithCenteredText ##(#f #f #t) \txt
middleHairpinMolto = \hairpinWithCenteredText ##(#f #t #f) \txt

\relative c' { \alwaysHairpinMolto b1\ffff\< 1 2 2\! }             
\relative c' { \alwaysHairpinMolto b1\ffff\< \break 1 \break 2 2\! }
\relative c' { \endHairpinMolto b1\ff\< \break 1 \break 2 2\! }
\relative c' { \beginHairpinMolto b1\p\< \break 1 \break 2 2\! }
\relative c' { \middleHairpinMolto b1\ppp\< \break 1 \break 2 2\! }


HTH,
  Harm

chf