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: Clement Caillol
Subject: Re: modifier les crochets systèmes au milieu d'un morceau
Date: Tue, 16 Mar 2021 16:48:30 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.0

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

Le code :

\version "2.22.0"

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 "|."
     }
  >>
}

\score {
  \new StaffGroup \with {
    \alterBroken transparent #'(#f #f #t #f) SystemStartBrace
    \override SystemStartBrace.style = #'line-bracket
    \alterBroken X-offset #'(0) SystemStartSquare
    \alterBroken X-offset #'(0) SystemStartBrace
  } <<
    \set StaffGroup.systemStartDelimiter = #'SystemStartBrace
    <<
      \new StaffGroup \with {
        \consists "Instrument_name_engraver"
        instrumentName = "Violons 1"
        shortInstrumentName = "vl.1"
      } <<
        \set StaffGroup.systemStartDelimiter = #'SystemStartSquare
        \new Staff = "1"
        \violI
        \new Staff = "2"\with {
          \RemoveAllEmptyStaves
        }
        {s1*6}  %%%%%%%%%%%%%%%%%%%%%% ou \global si défini
        \new Staff = "3" \with {
          \RemoveAllEmptyStaves
        }
        {s1*6}  %%%%%%%%%%%%%%%%%%%%%% ou \global si défini
      >>

      \new StaffGroup \with {
        \consists "Instrument_name_engraver"
        instrumentName = "Violons 2"
        shortInstrumentName = "vl.2"
      } <<
        \set StaffGroup.systemStartDelimiter = #'SystemStartSquare
        \new Staff = "1" %\with {
        \violI
        \new Staff = "2" \with {
          \RemoveAllEmptyStaves
        }
        {s1*6} %%%%%%%%%%%%%%%%%%%%%% ou \global si défini
        \new Staff = "3" \with {
          \RemoveAllEmptyStaves
        }
        {s1*6}  %%%%%%%%%%%%%%%%%%%%%% ou \global si défini
      >>
    >>
  >>
  \layout {
    \context {
      \Score
      \RemoveEmptyStaves
     
    }
  }
}

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

Je me rends compte qu'il y a un problème, si j'utilise la fonction \RemoveEmptyStaves de façon globale dans mon score, ça détruit tout... Si vous avez une idée pour que je puisse également masquer les portées de violons quand ils n'ont effectivement rien à jouer, je suis preneur.

merci !

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

Bonjour,

Après plusieurs essais, je suis arrivé à quelque chose qui me convinent vraiment pour les divisis de violon. Je vous le partage, dites-moi ce que vous en pensez.

(attention, les varibles violI et violII correspondent aux divisis du haut et du bas. Dans cet exemple, les v1 et les v2 jouent la même musique.)


J'ai juste une question concernant \alterBroken, est-il possible d'utiliser une fonction scheme pour réduire la liste des valeurs booléennes ?

Par exemple #'(#f #f #f #t #f #f #t) devienne un truc du genre 3*#f #t 2*#f #t (je sais que ça ne ressemblera pas à ça, mais c'est pour illustrer)

Merci beaucoup !

Voilà le code :

\version "2.22.0"

violI = {

  \repeat unfold 4 { d'4 }
  \break
  \repeat unfold 4 { d'4 }
  \break
  \once \unset Staff.keepAliveInterfaces
  <d' g''>2 d'4 d'4
  \break
  \repeat unfold 4 { d'4 }

 
  \bar "|."
}

violII = {
  \repeat unfold 4 { g4 }
  \repeat unfold 4 { g4 }

  <g d'>2 g4 g
  \repeat unfold 4 { g4 }

  \bar "|."
}
\score {
  \new StaffGroup \with {
  \alterBroken transparent #'(#f #f #t #f) SystemStartBrace
  \override SystemStartBrace.style = #'line-bracket
 
 
  \alterBroken X-offset #'(0) SystemStartSquare
  \alterBroken X-offset #'(0) SystemStartBrace
  }
 
  <<
    \set StaffGroup.systemStartDelimiter = #'SystemStartBrace
    
    
  <<
    \new StaffGroup \with { \consists "Keep_alive_together_engraver"
                            \consists "Instrument_name_engraver"
                            instrumentName = "Violons 1"
                            shortInstrumentName = "vl.1"
                            
    
    } <<
      \set StaffGroup.systemStartDelimiter = #'SystemStartSquare
      \new Staff \with {

        keepAliveInterfaces = #'()
        \override VerticalAxisGroup.remove-layer = 2
      } <<  \violI \\ \violII  >>
      \new Staff \with {

        \RemoveAllEmptyStaves
        keepAliveInterfaces = #'()
        \override VerticalAxisGroup.remove-layer = 1
      } \violI
      \new Staff \with {

        \RemoveAllEmptyStaves
        keepAliveInterfaces = #'()
        \override VerticalAxisGroup.remove-layer = 1
      } \violII
    >>

    \new StaffGroup \with { \consists "Keep_alive_together_engraver"
                            \consists "Instrument_name_engraver"
                            instrumentName = "Violons 2"
                            shortInstrumentName = "vl.2"
    
    } <<
      \set StaffGroup.systemStartDelimiter = #'SystemStartSquare
      \new Staff \with {

        keepAliveInterfaces = #'()
        \override VerticalAxisGroup.remove-layer = 2
      } <<  \violI \\ \violII  >>
      \new Staff \with {

        \RemoveAllEmptyStaves
        keepAliveInterfaces = #'()
        \override VerticalAxisGroup.remove-layer = 1
      } \violI
      \new Staff \with {

        \RemoveAllEmptyStaves
        keepAliveInterfaces = #'()
        \override VerticalAxisGroup.remove-layer = 1
      } \violII
    >>
  >>
  >>
}


Clément Caillol

Le 05/03/2021 à 19:17, Jean Abou Samra a écrit :


Le 05/03/2021 à 07:43, Clément CAILLOL a écrit :
Merci, je ne connaissais pas cette solution !
Est-ce que avec cette méthode, il est aussi possible de garder un seul nom d'instrument pour plusieurs portées quand il y a divisi ?

Merci !

Clément Caillol


Absolument, il suffit de faire la même chose avec InstrumentName :

\version "2.23.1"

\new StaffGroup \with {
  \consists Instrument_name_engraver
  instrumentName = "Violon"
  shortInstrumentName = "V."
  \alterBroken transparent #'(#f #f #t) InstrumentName
  systemStartDelimiterHierarchy
    = #'(SystemStartBracket (SystemStartSquare a b) c)
  \alterBroken transparent #'(#t #t #f) SystemStartSquare
} <<
  \new Staff {
    a1\< \break
    b \break
    c'\!
  }
  \new Staff {
    d1 e f'
  }
  \new Staff {
    g1 a b
  }
>>

Cordialement,
Jean


reply via email to

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