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

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

Re: modifier les crochets systèmes au milieu d'un morceau


From: Jean Abou Samra
Subject: Re: modifier les crochets systèmes au milieu d'un morceau
Date: Tue, 16 Mar 2021 23:41:39 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1


Le 16/03/2021 à 16:48, Clement Caillol a écrit :

Finalement, j'ai opté pour une solution sans keepAliveInterfaces, compatible avec un \RemoveEmptyStaves global et plus utilisable avec arranger.ly, que j'utilise beaucoup. Je vous remet le code à la fin du mail pour ceux que ça intéresse.

Il ne me reste plus qu'à trouver une manière agréable de gérer la liste de booléens de " \alterBroken transparent #'(#f #f #t #f...etc...) SystemStartBrace". Pour une grande partitions, ça peut vite devenir laborieux à saisir.

Une solution pour simplifier les choses serait qu'il existe un réglage qui fasse l'inverse de "\override SystemStartBrace #'collapse-height",

ce qui me permettrait de définir que mon crochet système des violons s'efface quand il est trop grand (donc en cas de divisi). Es-ce qu'à votre avis il est possible de fabriquer un tel réglage ?

Bien à vous,

Clément Caillol


Bonjour,

Pour définir la liste de booléens comme vous le décrivez, une méthode simple est :

#(append (make-list 3 #f)
         (make-list 1 #t)
         (make-list 2 #f)
         (make-list 1 #t))

Avec un peu d'enrobage syntaxique, cela peut donner :

#(use-modules (srfi srfi-26))
#(define-macro (expand-repetitions . args)
   `',(apply append
             (map (cute apply make-list <>)
                  args)))

#(expand-repetitions (3 #f)
                     (1 #t)
                     (2 #f)
                     (1 #t))

Enfin, pour inverser le sens de collapse-height, je propose :


\version "2.22.0"

#(define (kill-above-threshold grob)
   (let ((collapse-height (ly:grob-property grob 'collapse-height)))
     (ly:grob-set-property! grob 'collapse-height 0)
     (ly:grob-set-property! grob 'X-offset 0)
     (let ((stencil (ly:system-start-delimiter::print grob)))
       (if (> (interval-length (ly:stencil-extent stencil Y))
              collapse-height)
           (ly:grob-suicide! grob)
           stencil))))

\layout {
  \context {
    \StaffGroup
    systemStartDelimiter = #'SystemStartSquare
  }
}

violI = {
  << {
    \repeat unfold 4 { d'4 }
    \break
    \repeat unfold 4 { d'4 }
    \break <d' g''>2 d'4 d'4
    \break
    \repeat unfold 4 { d'4 }
    \break
    R1
    \break
    d'1
    \bar "|."
     }
     \\
     {
       \repeat unfold 4 { g4 }
       \repeat unfold 4 { g4 }
       \change Staff = "2"
       \oneVoice
       <g d'>2 g4 g
       \change Staff = "1"
       \voiceTwo
       \repeat unfold 4 { g4 }
       \break
       R1
       \break
       g1
       \bar "|."
     }
  >>
}


\new StaffGroup \with {
  \override SystemStartSquare.stencil = #kill-above-threshold
  \override SystemStartSquare.collapse-height = 20
} <<
  <<
    \new StaffGroup \with {
      instrumentName = "Violons 1"
      shortInstrumentName = "vl.1"
      \override SystemStartSquare.stencil = #ly:system-start-delimiter::print
      \override SystemStartSquare.collapse-height = 10
    } <<
      \new Staff = "1" \violI
      \new Staff = "2" \with {
        \RemoveAllEmptyStaves
      }
      { s1*6 }
      \new Staff = "3" \with {
        \RemoveAllEmptyStaves
      }
      { s1*6 }
    >>
    \new StaffGroup \with {
      instrumentName = "Violons 2"
      shortInstrumentName = "vl.2"
      \override SystemStartSquare.stencil = #ly:system-start-delimiter::print
      \override SystemStartSquare.collapse-height = 10
    } <<
      \new Staff = "1" \violI
      \new Staff = "2" \with {
        \RemoveAllEmptyStaves
      }
      { s1*6 }
      \new Staff = "3" \with {
        \RemoveAllEmptyStaves
      }
      { s1*6 }
    >>
  >>
>>


Cordialement,
Jean




reply via email to

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