Subject: Gérer les silences d'église

From: legoss <[email-masked]>
Date: Fri, 9 Mar 2012 07:48:56 -0800 (PST)

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.

---

From: Jean-Charles Malahieude <[email-masked]>
Date: Fri, 09 Mar 2012 18:12:47 +0100

> ç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

---

From: Eluze <[email-masked]>
Date: Fri, 9 Mar 2012 10:09:13 -0800 (PST)

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.

---

From: legoss <[email-masked]>
Date: Fri, 9 Mar 2012 12:11:29 -0800 (PST)

@ 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.

---

From: Eluze <[email-masked]>
Date: Fri, 9 Mar 2012 12:57:48 -0800 (PST)

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
    }

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.

---

From: legoss <[email-masked]>
Date: Sat, 10 Mar 2012 01:13:37 -0800 (PST)

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.

---

From: Xavier Scheuer <[email-masked]>
Date: Wed, 14 Mar 2012 23:24:16 +0100

> 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
%% http://lists.gnu.org/archive/html/lilypond-user/2012-02/msg00793.html
%% 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
}
  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
      }
  \layout {
    \context {
      \Staff
      \consists #merge-rests-engraver
      \consists #merge-mmrests-engraver
    }
  }
}

%%%% End of snippet

Cordialement,
Xavier

-- 
Xavier Scheuer <[email-masked]>