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