lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Couper une portée de piano


From: Jean Abou Samra
Subject: Re: Couper une portée de piano
Date: Mon, 22 Mar 2021 18:43:57 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1

Le 22/03/2021 à 18:19, Bernard Meylan a écrit :

Bonjour Jacques!

et merci de te pencher sur mon problème. Mais si j'ai bien compris ton code,
il faut, après avoir effectué la «cassure», à chaque fin de ligne "\breaker"
celle-ci et au début de la suivante, refaire toute la construction de ce
début de ligne (accolade, barre initiale, clef et tutti quanti…)? C'est bien
ça?


Bonjour,

C'est ce que j'en comprends. Voici une version de mon cru, davantage
taillée sur mesure que le code généraliste de Harm, qui ne le
nécessite pas.

Cordialement,
Jean


\version "2.23.1"

#(define (get-having-interface grobs interface)
   (filter
     (lambda (g)
       (grob::has-interface g interface))
     grobs))

#(define (relative-translation grob other axis)
   (let ((refpoint (ly:grob-common-refpoint grob other axis)))
     (- (ly:grob-relative-coordinate grob refpoint axis)
        (ly:grob-relative-coordinate other refpoint axis))))

#(define (relative-stencil grob other)
   (ly:stencil-translate
     (ly:grob-property grob 'stencil)
     (cons
       (relative-translation grob other X)
       (relative-translation grob other Y))))

#(define (fake-system-start grob)
   (let* ((original-stencil (ly:span-bar::print grob))
          (sys (ly:grob-system grob))
          (elements-array (ly:grob-object sys 'elements))
          (elements (ly:grob-array->list elements-array))
          (system-starts (filter (lambda (g)
                                   (grob::has-interface g 'system-start-delimiter-interface))
                                 elements)))
     (if (null? system-starts)
         original-stencil
         (let* ((one-system-star-bar
                  (or (find (lambda (g)
                              (eq? 'bar-line (ly:grob-property g 'style)))
                            system-starts)
                      (begin
                        (ly:warning "Cannot find system start bar to align to")
                        (first system-starts))))
                (system-start-stencil
                  (apply ly:stencil-add
                         (map
                           (lambda (g)
                             (relative-stencil g one-system-star-bar))
                           system-starts))))
           (ly:stencil-add system-start-stencil original-stencil)))))


text =
\tweak word-space 1.5
\tweak font-name "Garamond Premr Pro Smbd"
\mark
\markup {
  \center-column {
      \fontsize #2 \line { Da Capo }
      \vspace #0.5
      \line { e poi Minore }
  }
}

filler = {
  \stopStaff
  \once \textLengthOn
  <>^\markup {
    " " % ?
    \with-dimensions #'(-10 . 10) #'(-1 . 1)
    " "
  }
  s1
  \text
  s1
  \once \omit Staff.TimeSignature
  \once \override Score.BreakAlignment.break-align-orders =
    #(make-vector 3 '(staff-bar
                      clef
                      key-signature))
  \once \override PianoStaff.SpanBar.stencil = #fake-system-start
  \once \override Staff.KeySignature.break-visibility = #end-of-line-invisible
  \once \override Staff.Clef.break-visibility = #end-of-line-invisible
  \startStaff
}

\new PianoStaff <<
  \relative c' {
    \new Staff {
      \repeat unfold 4 <e g c>1
      \filler
      \time 2/4
      \key c \minor
      \repeat unfold 4 <es g c>1
    }
  }
  \relative c {
    \new Staff  {
      \clef bass
      \repeat unfold 4 <e g c>1
      \filler
      \time 2/4
      \key c \minor
      \repeat unfold 4 <es g c>1
    }
  }
>>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]