Subject: écrire des silences dans une ligne d'accords

From: [email-masked]
Date: Mon, 14 Jun 2021 16:30:26 +0200 (CEST)

Bonjour,

Je cherche à écrire des silences (ici r4) dans une ligne d'accords

par exemple, dans le code ci-dessous, j'aimerais voir apparaître un silence (...un "chut"...) à la place du no-chord

est-ce possible ?

%%%%%%%%%%%%%%%%%%%%%%

\version "2.22.1"
\language "français"

notes = \relative do' { do4 ré mi fa | sol la si sol | mi fa mi ré do1 }

accords = \chordmode { do4 r r r | sol r r r | sol r sol r | do1  }

\score {
  <<
    \new ChordNames \accords 
    \new Staff \notes 
}

%%%%%%%%%%%%%%%%%%%%%

D'avance merci pour vos réponses,

David

---

From: Jean Abou Samra <[email-masked]>
Date: Mon, 14 Jun 2021 16:48:25 +0200

Le 14/06/2021 à 16:30, [email-masked] a écrit :
> par exemple, dans le code ci-dessous, j'aimerais voir apparaître un 
> silence (...un "chut"...) à la place du no-chord
> est-ce possible ?
>
> %%%%%%%%%%%%%%%%%%%%%%
>
> \version "2.22.1"
> \language "français"
>

Bonjour,

Une possibilité élégante consiste à ajouter les graveurs en
charge des silences au contexte ChordNames tout en neutralisant
le noChordSymbol.

\version "2.23.3"
\language "français"

notes = \relative do' { do4 ré mi fa | sol la si sol | mi fa ré2 | do1 | 
R1 }

accords = \chordmode { do4 r r r | sol r r r | sol r r2 | do1 | R1  }

<<
   \new ChordNames \with {
     noChordSymbol = ""
     \consists Rest_engraver
     \consists Multi_measure_rest_engraver
     \override Rest.Y-offset = 0.4
     \override MultiMeasureRest.Y-offset = 0.8
   } \accords
   \new Staff \notes

Dans la documentation :

https://lilypond.org/doc/v2.23/Documentation/notation/modifying-context-plug_002dins

Cordialement,
Jean

---

From: [email-masked]
Date: Mon, 14 Jun 2021 17:58:11 +0200 (CEST)

Merci pour ce code élégant :)

(et la correction de mon exemple trop vite fait, qui n'était pas en mesure ^^' )

Merci aussi pour le lien, je n'aurais pas pu trouver tout seul, mais grâce à mon exemple corrigé je pense avoir compris comment faire

Si j'ai bien compris, avec noChordSymbol = "" on remplace NC par ... rien ;

les \consists permettent de créer les symboles des silences dans la ligne d'accords ;

et les \override permettent d'ajuster en hauteur les silences ?

De : Jean Abou Samra <[email-masked]>
À : [email-masked];
   [email-masked]
Sujet : Re: écrire des silences dans une ligne d'accords
Date : 14/06/2021 16:48:25 Europe/Paris

Bonjour,

\version "2.23.3"
\language "français"

<<
  \new ChordNames \with {
    noChordSymbol = ""
    \consists Rest_engraver

Dans la documentation :

Cordialement,
Jean

---

From: Jean Abou Samra <[email-masked]>
Date: Mon, 14 Jun 2021 21:04:11 +0200

Le 14/06/2021 à 17:58, [email-masked] a écrit :
> Merci aussi pour le lien, je n'aurais pas pu trouver tout seul, mais 
> grâce à mon exemple corrigé je pense avoir compris comment faire
>

C'est cela. On aurait pu également écrire

noChordSymbol = \markup \musicglyph "rests.2"

pour produire systématiquement un glyphe de soupir. L'inconvénient
de cette méthode est qu'il aurait fallu ajuster le glyphe en cours
de partition pour obtenir des silences de durées différentes.

> les \consists permettent de créer les symboles des silences dans la 

En effet. Un contexte n'est (généralement) rien d'autre qu'un conteneur.
S'y trouvent des propriétés, et des graveurs qui agissent sur lui. Toutes
les définitions de contextes sont faites en empilant des graveurs et des
propriétés. Par exemple, voici la définition standard du contexte ChordNames
(dans le fichier ly/engraver-init.ly) :

\layout {
   \context {
     \type "Engraver_group"
     \name "ChordNames"
     \alias Staff            % Catch Staff-level overrides like
                   % \key, \transposition
     \description "Typesets chord names."

     \consists "Output_property_engraver"
     \consists "Separating_line_group_engraver"
     \consists "Chord_name_engraver"
     \consists "Axis_group_engraver"
     %\consists "Note_spacing_engraver"
     \consists "Alteration_glyph_engraver"

     \override VerticalAxisGroup.remove-first = ##t
     \override VerticalAxisGroup.remove-empty = ##t
     \override VerticalAxisGroup.staff-affinity = #DOWN
     \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = 
#0.5
     \override VerticalAxisGroup.nonstaff-nonstaff-spacing.padding = #0.5
     \override ParenthesesItem.font-size = #1.5
   }
}

L'essentiel ici est le Chord_name_engraver, qui se charge des noms
d'accords. En ajoutant en plus le Rest_engraver, qui « vit » habituellement
dans le contexte Voice, on peut imprimer des silences dans le contexte
ChordNames exactement comme sur une portée normale.

> et les \override permettent d'ajuster en hauteur les silences ?

Oui. Des explications se trouvent sur cette page :

http://lilypond.org/doc/v2.23/Documentation/notation/aligning-objects#setting-x_002doffset-and-y_002doffset-directly

J'espère que c'est clair.

Cordialement,
Jean

---

From: [email-masked]
Date: Mon, 14 Jun 2021 23:00:55 +0200 (CEST)

Merci beaucoup d'avoir pris le temps de détailler autant l'explication !

Je comprends l'organisation globale quand on me l'explique, mais le détail est encore un peu compliqué pour moi...

J'apprends beaucoup de tous les échanges sur la liste, et j'en profite pour remercier tous les contributeurs, grâce à vous j'arrive à écrire des partitions incroyables ! :)

De : Jean Abou Samra <[email-masked]>
À : [email-masked];
   [email-masked]
Sujet : Re: écrire des silences dans une ligne d'accords
Date : 14/06/2021 21:04:11 Europe/Paris

\layout {
  \context {
    \type "Engraver_group"
    \name "ChordNames"

Cordialement,
Jean