grille d'accords 100% Lilypond

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

Grilles.pdf (79.6 KB)

Grilles.ly (3.36 KB)

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 {
  system-system-spacing.basic-distance = #20
}

gridPath =
\markup
\with-dimensions #'(0 . 0) #'(-4.3 . 2)
\path #0.1
#'((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/

Malheureusement, ce code ne fonctionne pas chez moi :frowning:

Analyse...

Interprétation en cours de la musique...[8]

Pré-traitement des éléments graphiques.../usr/share/lilypond/2.18.2/scm/define-markup-commands.scm:950:59: In procedure car in expression (car x):

/usr/share/lilypond/2.18.2/scm/define-markup-commands.scm:950:59: Wrong type (expecting pair): largeurs

Arrêté avec le code de retour 1

···

Le 11/03/2018 18:31, NOreply <****@****> a écrit :

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

gridPath =
\markup
\with-dimensions #'(0 . 0) #'(-4.3 . 2)
\path #0.1
#'((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)
  }
}

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

···

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

Finalement, ça fonctionne, l'erreur était due à une ligne de commentaire qui était coupée en deux:

J'ai complété le code avec les cas de 3 accords ( que j'ai nommé w faute de mieux) et de 4 accords (x):

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

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

gridPath =
\markup
\with-dimensions #'(0 . 0) #'(-4.3 . 2)
\path #0.1
#'((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)
(rlineto 14.4 4.8)
)
gridCoinPath =
\markup
\with-dimensions #'(0 . 0) #'(-4.3 . 2)
\path #0.1
#'((moveto 0 -15.1)
(lineto 26.5 -5.3)
(moveto 13.50 -10.0)
(lineto 26.5 -15.00)
)
croixPath =
\markup
\with-dimensions #'(0 . 0) #'(-4.3 . 2)
\path #0.1
#'((moveto 0 -15.1)
(lineto 26.5 -5.3)
(moveto 0 -5.3)
(lineto 26.5 -15.00)
)

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

"\/" = #(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

#})

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

#})

x = #(define-music-function
(parser location mus1 mus2 mus3 mus4 )
( ly:music? ly:music? ly:music? ly:music? )
#{
\mark \markup { \croixPath }
\once \override ChordName.extra-offset = #'(0 . -0.5 )
$mus1
\once \override ChordName.extra-offset = #'(4 . 2 )
$mus2
\once \override ChordName.extra-offset = #'(-3 . -4 )
$mus3
\once \override ChordName.extra-offset = #'(1 . -1 )
$mus4

#})

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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}
\w c2 d4 c \noBreak
c1
f1:maj7
f:7
\x c4 e g c e1
\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)
}
}

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

···

Le 13/03/2018 à 13:02, Didier Griffaut a écrit :

Malheureusement, ce code ne fonctionne pas chez moi :frowning:

Analyse...

Interprétation en cours de la musique...[8]

Pré-traitement des éléments graphiques.../usr/share/lilypond/2.18.2/scm/define-markup-commands.scm:950:59: In procedure car in expression (car x):

/usr/share/lilypond/2.18.2/scm/define-markup-commands.scm:950:59: Wrong type (expecting pair): largeurs

Arrêté avec le code de retour 1

Le 11/03/2018 18:31, NOreply <****@****> a écrit :

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

gridPath =
\markup
\with-dimensions #'(0 . 0) #'(-4.3 . 2)
\path #0.1
#'((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)
  }
}

Bonjour à tous,

je déterre ce vieux sujet pour une question annexe : est-il possible de
faire une reprise avec alternative ?

Merci d'avance

···

Le 11/03/2018 à 18:31, NOreply a écrit :

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 fil complet :
http://lilypond-french-users.1298960.n2.nabble.com/grille-d-accords-100-Lilypond-td7586093.html

--
Vincent Gay
Envoyé depuis mon saxo-phone :slight_smile:
http://blog.vintherine.org/ - http://photos.vintherine.org/

J'ai bien avancé en retirant "Volta_engraver" de \Score et en le
rajoutant à ChordNames

J'ai collé le code ici : http://lilybin.com/8jck1d/1

mais comme vous pouvez le voir les barres obliques de division de la
mesure (crées avec \/ \w et \x) s'en trouvent décalées vers le haut.

Une idée ? Merci d'avance

···

Le 12/11/2018 à 13:16, Vincent Gay a écrit :

Bonjour à tous,

je déterre ce vieux sujet pour une question annexe : est-il possible de
faire une reprise avec alternative ?

Merci d'avance

--
Vincent Gay
Envoyé depuis mon saxo-phone :slight_smile:
http://blog.vintherine.org/ - http://photos.vintherine.org/