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

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

Re: bar de système en pointillé


From: Pierre Perol-Schneider
Subject: Re: bar de système en pointillé
Date: Fri, 24 Apr 2020 13:47:38 +0200

PS. Le code original : http://lilypond.1069038.n5.nabble.com/dashed-initial-barline-with-SystemStartBar-td51231.html#a51232

Le ven. 24 avr. 2020 à 13:37, Pierre Perol-Schneider <address@hidden> a écrit :
Bonjour Martial,
Je ne pense pas qu'il existe de solution simple...
J'ai ça dans ma boîte-à-utiles :

\version "2.20.0"

%% Dashed spanBar defs:
#(define (make-round-filled-box x1 x2 y1 y2 blot-diameter)
  (ly:make-stencil (list 'round-filled-box (- x1) x2 (- y1) y2 blot-diameter)
                   (cons x1 x2)
                   (cons y1 y2)))

#(define-public (make-dashed-system-start-bar grob extent thickness)
  (let* ((blot (ly:output-def-lookup (ly:grob-layout grob) 'blot-diameter))
         (line-thickness (ly:staff-symbol-line-thickness grob))
         (staff-space (ly:staff-symbol-staff-space grob))
         (height (interval-length extent))
         (gap (ly:grob-property grob 'gap 0.5))
         (dash-size (- 1.0 gap))
         ;(num (ceiling (/ (* 1.5 height) (+ dash-size staff-space))))
         (num (ceiling height))
         (factors
           (map
             (lambda (x) (* x dash-size))
             (iota (* 2 (- num 2)))))
         (scaling (/ (- (+ height line-thickness) (* 3.0 dash-size))
                     (car (reverse factors))))
         (stencil
           (ly:stencil-add
             (ly:stencil-translate-axis
               (make-round-filled-box 0 thickness
                                      (/ dash-size -2) 0 blot)
               (+ (interval-end extent)(* 0.5 line-thickness))
               Y)
             (ly:stencil-translate-axis
               (make-round-filled-box 0 thickness 0
                                      (/ dash-size 2) blot)
               (- (interval-start extent) (* 0.5 line-thickness))
               Y))))

    (define (helper args)
      (set! stencil
            (ly:stencil-add
              stencil
              (ly:stencil-translate-axis
                (make-round-filled-box 0 thickness
                                       (car args) (cadr args) blot)
                (+ (* 1.5 dash-size) (- (interval-start extent) (* 0.5 line-thickness)))
                Y)))

      (if (null? (cddr args))
          stencil
          (helper (cddr args))))

    (set! factors (map (lambda (x) (* scaling x)) factors))

    (if (zero? num)
        empty-stencil
        (helper factors))))

dashedStart =
  \override Score.SystemStartBar.stencil =
   #(lambda (grob)
   (let*((stencil (ly:system-start-delimiter::print grob))
         (stencil-y-extent (ly:stencil-extent stencil Y))
         (line-thickness (ly:staff-symbol-line-thickness grob))
         (new-stencil-extent (interval-widen stencil-y-extent (* -0.5
  line-thickness)))
         (thickness (ly:grob-property grob 'thickness))
         (grob-thickness (* line-thickness thickness)))
   (make-dashed-system-start-bar grob new-stencil-extent grob-thickness)))
   
%%%%%%%%% Test :

\score {
  <<
    <<
      \relative c' { c1 e g c }
      \addlyrics {  a a a a  }
    >>
    <<
      \relative c' {  \omit Staff.TimeSignature c1 e g c }
      \addlyrics {  b b b b }
    >>
    <<
      \relative c' {  \omit Staff.TimeSignature c1 e g c \bar ":|."}
      \addlyrics {  c c c c  }
    >>
  >>
  \layout { \dashedStart }
}

Cordialement,
Pierre

Le ven. 24 avr. 2020 à 12:19, martial <address@hidden> a écrit :
Bonjour

je souhaites avoir une bar de système en pointillé pour des écrire canons,
comme sur l'image jointe;
<http://lilypond-french-users.1298960.n2.nabble.com/file/t300440/Capture_du_2020-04-24_11-41-38.png>

J'ai retourné la doc, le LSR, et la liste, les scm bar-line etc....
je cale ; 

voici mon code
%--------------------------------------------
\version "2.21.0"
\pointAndClickOn

\layout {
  \context {
    \Score
    \remove "Timing_translator"
    \remove "Default_bar_line_engraver"
  }
  \context {
    \Staff
    \consists "Timing_translator"
    \consists "Default_bar_line_engraver"
  }
  \context {
    \ChoirStaff
    systemStartDelimiter = #'SystemStartBar
    \override SystemStartBar.style = #'dashed-bar-line %ne prend pas dashed
    \override SystemStartBar.thickness = #20 %large pour tester
  }
}

\score {
  \new ChoirStaff
  <<
    <<
      \relative c' { c1 e g c }
      \addlyrics {  a a a a  }
    >>
    <<
      \relative c' {  \omit Staff.TimeSignature c1 e g c }
      \addlyrics {  b b b b }
    >>
    <<
      \relative c' {  \omit Staff.TimeSignature c1 e g c \bar ":|."}
      \addlyrics {  c c c c  }
    >>
  >>
  \layout {  }
}
%--------------------------------------------




-----
♫artial♪
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/


reply via email to

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