Subject: grille d'accords 100% Lilypond

From: Didier Griffaut <[email-masked]>
Date: Sat, 10 Mar 2018 00:40:09 +0100

Bonjour,

J'ai repris ce sujet car j'aime bien la syntaxe des accords avec 
Lilypond et j'obtiens le code suivant:

\version "2.18.2"

gridPath =
     \markup
     \with-dimensions #'(0 . 0) #'(-4.3 . 2)
     \path #0.1
           #'((moveto    -14.50   0.00)
             (lineto    13.50   10.00)
             (moveto    13.50   0.00) ; on peut remplacer par lineto 
pour ajuster les largeurs de cellules
  )
coinPath =
     \markup
     \with-dimensions #'(0 . 0) #'(-4.3 . 2)
     \path #0.1
           #'((moveto    -5.00   5.00)
             (lineto    10.00   10.00)
             (moveto    10.0   0.00) ; on peut remplacer par lineto pour 
ajuster les largeurs de cellules
             (lineto    -5.00   5.00)
  )
nogrid = \hide NoteHead

grid = \once { \override NoteHead.transparent = ##f
                \override NoteHead.stencil =
     #(lambda (grob) (grob-interpret-markup grob gridPath))
}
coin = \once { \override NoteHead.transparent = ##f
                \override NoteHead.stencil =
     #(lambda (grob) (grob-interpret-markup grob coinPath))
}
squashTo = #(define-music-function
   (parser location position music)
   (number? ly:music?)
   #{
     \set squashedPosition = $position
     $music
     \unset squashedPosition
   #})

middleLine = #(define-music-function
   (parser location music)
   (ly:music?)
   #{
     \squashTo #0 $music
   #})

up = \once { \override ChordName.Y-offset = #6 \override 
ChordName.X-offset = #6 }
down = \once { \override ChordName.Y-offset = #2 \override 
ChordName.X-offset = #6 }
left = \once { \override ChordName.X-offset = #4 }
right = \once { \override ChordName.X-offset = #6 }
center = \once { \override ChordName.X-offset = #10 \override 
ChordName.Y-offset = #4 }
% aliases
gdown = { \grid \down }
gright = { \coin \right }

% -------------------------------- Grille ---------------------------

grille = \chordmode {  \set chordChanges = ##t
   \middleLine {
   \nogrid
   \center c1
   \up a2:m \gdown f
   \left b2.:7 11  \gright b4
    e1:m
   \repeat volta 2 {
     \repeat percent 2 { e2 q }
      \up b2:dim \gdown g:7
      c1:7+ }
      \break
       \center c }}   % accord seul sur sa ligne pour l'exemple

% Texte de formatage de la largeur des cellules de la grille (en blanc 
au dessus de chaque cellule
format = \lyricmode {
  blablablablablablab % cellule n°1 (ligne 1)
  blablablablablablab % cellule n°2
  blablablablablablab % cellule n°3
  blablablablablabla  % cellule n°4

  blablablablabla     % cellule n°5 (ligne 2)
  blablablablablablabla % etc.
  blablablablablablab
  blablablablablabla

  blablablablablablablabl }

\paper {
   system-system-spacing.basic-distance = #20
}

\score {{
     << { \context Lyrics \format }
     { \context ChordNames \grille } >>

}
\layout {
   indent = 0
   ragged-right = ##f
   ragged-last = ##t
   \override Lyrics.LyricText.color = #white
   \context {
     \ChordNames
     \consists "Bar_engraver"
     \consists "Staff_symbol_engraver"
     \consists "Percent_repeat_engraver"
     \consists "Note_heads_engraver"
     \consists "Staff_collecting_engraver"
     \consists "Pitch_squash_engraver"
     \override StaffSymbol.line-count = #2 % optionnel
     \override StaffSymbol.line-positions = #'(0 20)
     \override ChordName.X-offset = #8
     \override ChordName.Y-offset = #4
     \override PercentRepeat.Y-offset = #5

   }
   \context {
     \Score
     \omit BarNumber
     \override SpacingSpanner.strict-note-spacing = ##t

   }
}
}

Je suis preneur d'idées d'amélioration en lilypond pour simplifier la 
syntaxe et éviter au maximum les ajustements manuels

Amicalement,

Didier

Le 30/04/2016 17:24, Pierre Perol-Schneidera écrit :

Ça peut être amélioré, par ex :

\version "2.18.2"

\new ChordNames \chordmode {  c1 a:m  b:7 e:m \repeat volta 2 { e a g c } }

\paper {
   system-system-spacing.basic-distance = #0
}

\layout {
   indent = 0
   \context {
     \ChordNames
     \consists "Bar_engraver"
     \consists "Staff_symbol_engraver"
     \override StaffSymbol.line-positions = #'(-7 10)
     \override ChordName.X-offset = #12
   }
   \context {
     \Score
     \omit BarNumber
     proportionalNotationDuration = #(ly:make-moment 1/8)
   }
}

Pierre

---

From: NOreply <[email-masked]>
Date: Sun, 11 Mar 2018 10:31:36 -0700 (MST)

Bonjour,
J'ai fait un code plus compact et plus simple. Je procède d'une manière
assez différente pour obtenir un résultat similaire. Pour l'utilisateur, je
pense que cela sera beaucoup plus facile. 
Mode d'emploi: Il faut écrire \/ avant 2 accords en blanches et \v avant 2
accords avec le rythme blanche pointée noire. Mon code n'est satisfaisant
qu' avec une mise en page de 4 mesures par ligne. Je ne me rends pas compte
de la place qu'il faut pour écrire les accords, je n'ai pas l'habitude
d'écrire ce genre de chose, donc il faudra peut-être adapter les 2 variables
"coinPath" et "gridPath".
Lien lilybin (complètement bidon sur le plan musicale):
http://lilybin.com/hdaqgz/1

%%%%%%%%%% le code:
\version "2.18.2"
\paper {

gridPath =
\markup
#'((moveto    0   -15.1)
   (rlineto    26.5   9.9)
   
   )
coinPath =
\markup
\with-dimensions #'(0 . 0) #'(-4.3 . 2)
\path #0.1
#'((moveto    12.5   -10)
   (rlineto    14.5   -5.1)
   (moveto    12.5   -10) ; on peut remplacer par lineto pour ajuster les
largeurs de cellules
   (rlineto    14.4   4.8)
   )

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

"\\/" = #(define-music-function
          (parser location  mus1 mus2)
          ( ly:music? ly:music?  )
          #{
            \mark \markup { \gridPath }
            \once \override ChordName.extra-offset = #'(1 . .5 )
            $mus1 
            \once \override ChordName.extra-offset = #'(3 . -3 ) 
            $mus2
    
          #})

v = #(define-music-function
      (parser location  mus1 mus2 )
      ( ly:music? ly:music?  )
      #{
        \mark \markup { \coinPath }
        \once \override ChordName.extra-offset = #'(2 . -1 )
        $mus1 
        \once \override ChordName.extra-offset = #'(-2 . -1 )
        $mus2 

      #})

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\new ChordNames \with {
  \override BarLine.bar-extent = #'(-5 . 5)
  \consists "Bar_engraver"
  \consists "Staff_symbol_engraver"
  \consists "Percent_repeat_engraver"
}

\chordmode { 
  \omit BarNumber
  \override ChordNames.ChordName.extra-offset = #'(10 . -1 )         
  \override ChordNames.StaffSymbol.line-positions = #'( -10 10 )
 
  \bar ".|:"  bes1:7 
  \/  c2 d 
  e1 
  \v f2.   c4    \break
  \repeat percent 2  {e1} 
  \v c2. d4  \noBreak  
  c1 
  f1:maj7  
  f:7 c e
  \bar ":|."
} 

\layout {
  indent = 0
  ragged-right = ##f
  ragged-last = ##f

  \context {
    \Score
    \omit BarNumber             
    \override SpacingSpanner.strict-note-spacing = ##t
    proportionalNotationDuration = #(ly:make-moment 1/16)
  }
}

% ; = )

--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

---

From: NOreply <[email-masked]>
Date: Tue, 13 Mar 2018 06:05:03 -0700 (MST)

Il faut supprimer 
"; on peut remplacer par lineto pour ajuster les
largeurs de cellules"