Gérer les silences d'église

Bonjour à tous,
Voyez le fichier joint. Comme je n'arrivais pas à insérer PROPREMENT des
lyrics en utilisant les \partcombine, j'ai choisi, faute de mieux, cette
solution.
Or, les silences d'église ne "s'entendent" pas bien ensemble. Je voudrais
qu'il n'en apparaisse qu'un seul par portée, au milieu de chacune d'elle,
bien comme il faut.
Si ce n'était pas possible, comment parvenir au même résultat avec
\partcombine, paroles comprises?

Je planche depuis plusieurs heures et je n'ai presque plus de cheveux. OK,
ça repousse, mais pas à 240 la noire.

Merci pour votre aide !
Laurent
http://lilypond-french-users.1298960.n2.nabble.com/file/n7358584/silence.ly
silence.ly

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Gerer-les-silences-d-eglise-tp7358584p7358584.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Le 09/03/2012 16:48, legoss disait :

Voyez le fichier joint. Comme je n'arrivais pas à insérer PROPREMENT des
lyrics en utilisant les \partcombine, j'ai choisi, faute de mieux, cette
solution.
Or, les silences d'église ne "s'entendent" pas bien ensemble. Je voudrais
qu'il n'en apparaisse qu'un seul par portée, au milieu de chacune d'elle,
bien comme il faut.
Si ce n'était pas possible, comment parvenir au même résultat avec
\partcombine, paroles comprises?

Je planche depuis plusieurs heures et je n'ai presque plus de cheveux. OK,
ça repousse, mais pas à 240 la noire.

Dans un premier temps, j'envisagerais de détourner l'attention : silences invisibles dans les pupitres (même pas de playback des sopranes avec les altis...) et une voix supplémentaires dans chaque portée (quel silence !) :

global = { \key c \major \time 4/4
}

chut = {
   \compressFullBarRests
   \override MultiMeasureRest #'expand-limit = #1
   R1*4 s1*3 R1 }

voixI = \relative c' {
   s1*4 g'1 a g a
}
voixII = \relative c' {
   s1*4 e1 f e R
}
voixIII = \relative c' {
   s1*4 c1 ~ c ~ c c2 c
}
voixIIII = \relative c' {
   s1*4 c,1 f c f2 c
}
paroles = \lyricmode {
  a b c d
}

\score {
   \new ChoirStaff
   <<
     \new Staff <<
       \new Voice = one {
         \voiceOne
         \global \voixI
       }
       \new Voice = two {
         \voiceTwo
         \global \voixII
       }
\new Voice = silence { \chut }
     >>
     \new Lyrics \lyricsto "one" { \paroles }
     \new Staff << \clef bass
       \new Voice = one {
         \voiceOne
         \global \voixIII
       }
       \new Voice = two {
         \voiceTwo
         \global \voixIIII
       }
\new Voice = silence { \chut }
     >>
   >>
}

@+
Jean-Charles

si on place les silences dans un contexte \oneVoice (ou au début avant le
\voice…) ça devrait marcher, non?!

/ \global
        \oneVoice R1*4
        \voiceOne
        \voixI/

cordialement
Eluze

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Gerer-les-silences-d-eglise-tp7358584p7359043.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

@ Jean-Charles: ta solution fonctionne. Merci !
@Eluze: est-ce que tu pourrais me montrer un exemple? c'est un domaine dans
lequel j'ai du mal...
Merci à vous deux,

Laurent

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Gerer-les-silences-d-eglise-tp7358584p7359472.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

legoss wrote

@Eluze: est-ce que tu pourrais me montrer un exemple? c'est un domaine
dans lequel j'ai du mal...

voici:

\version "2.14.2"
global = {
  \compressFullBarRests
  \override MultiMeasureRest #'expand-limit = #1
}
voixI = \relative c' { g'1 a g }
voixII = \relative c' { e1 f e }
paroles = \lyricmode { a b c d }
<<
  \new Staff <<
    \new Voice = one {
      \global
      \oneVoice % facultatif
      R1*4
      \voixI
      \oneVoice R1*4
      \voiceOne
      \voixI
    }
    \new Voice = two {
      \global
      % \oneVoice % facultatif
      R1*4
      \voiceTwo
      \voixII
      \oneVoice R1*4
      \voiceTwo
      \voixII
    }
  >>
  \new Lyrics \lyricsto "one" { \paroles }

bien sûr on peut directement mettre les silences dans la définition des
voix!

Eluze

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Gerer-les-silences-d-eglise-tp7358584p7359581.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Merci pour l'éclaircissement. En fait je m'étais pris les pieds dans le bord
du tapis en confondant "voiceOne" et "oneVoice".
Cordialement,
Laurent

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Gerer-les-silences-d-eglise-tp7358584p7360661.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Merci pour l'éclaircissement. En fait je m'étais pris les pieds dans le bord
du tapis en confondant "voiceOne" et "oneVoice".

Bonsoir,

On peut aussi conserver le fichier initial, sans silences invisibles
ou voix supplémentaires, sans devoir jongler avec les \voiceOne et
autres \oneVoice .

Pour cela j'utiliserais les "Merge Rests Engravers" développés par
Jay Anderson en réponse au bug #1228 .
http://lists.gnu.org/archive/html/lilypond-user/2012-02/msg00793.html
http://code.google.com/p/lilypond/issues/detail?id=1228

%%%% Snippet

\version "2.15.30"

%% merge-rests-engraver and merge-mmrests-engraver provided by
%% Jay Anderson
%% Re: Merge Rests Engraver
%% See also issue #1228
%% http://code.google.com/p/lilypond/issues/detail?id=1228

#(define has-one-or-less (lambda (lst) (or (null? lst) (null? (cdr lst)))))
#(define has-at-least-two (lambda (lst) (not (has-one-or-less lst))))
#(define (all-equal lst pred)
  (or (has-one-or-less lst)
      (and (pred (car lst) (cadr lst)) (all-equal (cdr lst) pred))))

#(define merge-rests-engraver
   (lambda (context)
     (let ((rest-same-length
             (lambda (rest-a rest-b)
               (eq? (ly:grob-property rest-a 'duration-log)
(ly:grob-property rest-b 'duration-log))))
           (rests '()))
     `((start-translation-timestep . ,(lambda (trans)
                                        (set! rests '())))
       (stop-translation-timestep . ,(lambda (trans)
                                       (if (and (has-at-least-two
rests) (all-equal rests rest-same-length))
                                         (for-each
                                           (lambda (rest)
(ly:grob-set-property! rest 'Y-offset 0))
                                           rests))))
       (acknowledgers
         (rest-interface . ,(lambda (engraver grob source-engraver)
                              (if (eq? 'Rest (assoc-ref
(ly:grob-property grob 'meta) 'name))
                                (set! rests (cons grob rests))))))))))

#(define merge-mmrests-engraver
   (lambda (context)
     (let* ((mmrest-same-length
              (lambda (rest-a rest-b)
                (eq? (ly:grob-property rest-a 'measure-count)
(ly:grob-property rest-b 'measure-count))))
            (merge-mmrests
              (lambda (rests)
                (if (all-equal rests mmrest-same-length)
                  (let ((offset (if (eq? (ly:grob-property (car rests)
'measure-count) 1) 1 0)))
                    (for-each
                      (lambda (rest) (ly:grob-set-property! rest
'Y-offset offset))
                      rests)))))
            (curr-rests '())
            (rests '()))
     `((start-translation-timestep . ,(lambda (trans)
                                        (set! curr-rests '())))
       (stop-translation-timestep . ,(lambda (trans)
                                       (if (has-at-least-two curr-rests)
                                         (set! rests (cons curr-rests rests)))))
       (finalize . ,(lambda (translator)
                      (for-each merge-mmrests rests)))
       (acknowledgers
         (rest-interface . ,(lambda (engraver grob source-engraver)
                              (if (eq? 'MultiMeasureRest (assoc-ref
(ly:grob-property grob 'meta) 'name))
                                (set! curr-rests (cons grob curr-rests))))))))))

global = {\compressFullBarRests
  \override MultiMeasureRest #'expand-limit = #1 }

voixI = \relative c' {
  R1*4 g'1 a g
}
voixII = \relative c' {
  R1*4 e1 f e
}
voixIII = \relative c' {
  R1*4 c1 ~ c ~ c
}
voixIIII = \relative c' {
  R1*4 c,1 f c
}
paroles = \lyricmode {
a b c d
}

\score {
  \new ChoirStaff
  <<
    \new Staff <<
      \new Voice = one {
        \voiceOne
        \global \voixI
      }
      \new Voice = two {
        \voiceTwo
        \global \voixII
      }
    >>
    \new Lyrics \lyricsto "one" { \paroles }
    \new Staff << \clef bass
      \new Voice = one {
        \voiceOne
        \global \voixIII
      }
      \new Voice = two {
        \voiceTwo
        \global \voixIIII
      }
    >>
  >>
  \layout {
    \context {
      \Staff
      \consists #merge-rests-engraver
      \consists #merge-mmrests-engraver
    }
  }
}

%%%% End of snippet

Cordialement,
Xavier

···

2012/3/10 legoss <****@****>:

--
Xavier Scheuer <****@****>