Subject: Re: ras de 4

From: Jean Abou Samra <[email-masked]>
Date: Sun, 01 Oct 2023 10:15:02 +0200

> Pas certain d'avoir compris l'explication pour le positionnement des
> caisses claires (c'est toute la différence entre un mécanicien et un
> conducteur) mais merci tout de même pour cette solution

Je vais essayer de l'expliquer de manière plus claire.

La source du problème, c'est que vous utilisez la construction << >>,
ce qui est bizarre ici (il n'y a aucune raison). Cette construction est
faite pour mettre des choses en parallèle. Par exemple, si vous
compilez

\version "2.24.2"

\new Voice <<
  { c'4 4 8 8 4 }
  { c4 4 8 8 4 }

vous obtenez une suite de do en octaves. Maintenant, modifions un peu
la situation :

\version "2.24.2"

\new Voice <<
  { \once \override Staff.NoteHead.color = red c'4 4 8 8 4 }
  { \grace b,8 c4 4 8 8 4 }

J'ai rajouté un \grace b,8 dans la partie du bas et un \once \override
dans la partie du haut. Là, LilyPond est confrontée à un problème fondamental,
à savoir qu'il est impossible de savoir si vous voulez que le \override
du haut s'applique avant ou après l'appoggiature du bas. Dans ce cas,
avec NoteHead, on a plutôt envie de dire « après », mais avec un

\once \override Staff.Clef.color = red

on a plutôt envie de dire « avant ».

Donc, LilyPond est obligée de faire un choix, et ce choix (qui n'est ni meilleur
ni pire que l'autre) est de mettre le \override après. C'est pour ça que les
notes coloriées en rouge dans mon exemple sont les deux premiers do, et pas le
si juste avant.

Modifions encore un peu l'exemple :

\version "2.24.2"

\new Voice <<
  { \once \override Staff.NoteHead.color = red c'4 }
  { \grace b,8 c4 4 8 8 4 }

J'ai juste enlevé des notes dans la partie du haut. Rien de très spécial,
LilyPond gère parfaitement les << >> où toutes les parties n'ont pas la
même durée. Et si on pousse la chose plus loin ?

\version "2.24.2"

\new Voice <<
  \once \override Staff.NoteHead.color = red
  { \grace b,8 c4 4 8 8 4 }

Là, ça devient plus contre-intuitif que ce soit le do et pas le si qui est
colorié en rouge, mais c'est juste la prolongation logique des exemples
ci-dessus.

Moralité : quand vous faites

  \new DrumStaff
  <<
    \set DrumStaff.drumStyleTable= #(alist->hash-table mydrums)
    \new DrumVoice { \voiceOne \up }

le \set ne s'applique qu'après les notes d'ornement, pour la même raison
que mon \once \override NoteHead.color = red  affecte la première note
après l'ornement. Donc les notes d'ornement utilisent la drumStyleTable
par défaut, pas celle que vous avez définie.

La manière standard de forcer LilyPond à choisir l'autre possibilité en
gardant la construction << >> est de rajouter un silence invisible en note
d'ornement, comme ceci :

  \new DrumStaff
  <<
    {
      \set DrumStaff.drumStyleTable= #(alist->hash-table mydrums)
      \grace { s16 s16 s16 }
    }
    \new DrumVoice { \voiceOne \up }

mais c'est franchement inutile ici, vu que si c'est juste pour un \set,
il est plus simple et naturel de faire

  \new DrumStaff \with {
    drumStyleTable= #(alist->hash-table mydrums)
  } {
    \new DrumVoice { \voiceOne \up }
  }

---

From: Sebastien Richard <[email-masked]>
Date: Sun, 1 Oct 2023 13:47:04 +0000

Re Bonjour Jean,

Un grand merci à toi pour ces exemples, je comprends mieux ce qui se passait.

Juste pour la petite histoire j'utilise toujours les << >> car j'ai souvent 2 voix à gérer.

Voici un nouvel exemple réduit (toujours avec le mydrums) de ce que j'ai fait dans ma transcription pour avoir les 2 voix et le ras de 4 correctement écrit

up= \drummode {
  \time 4/4
  \slurDown
  \grace { sn16 sn sn( } sn4) sn sn sn

}
down = \drummode {
  bd4 bd bd bd
}

\score {
  \new DrumStaff \with
    { drumStyleTable= #(alist->hash-table mydrums) }
    { <<
          \new DrumVoice { \voiceOne \up }
          \new DrumVoice { \voiceTwo \down }
    }
  \layout {
    indent = 0
  }
}

Bon dimanche ensoleillé

-------------------
 Sébastien RICHARD