Subject: Lilypond en mode présentation (slideshow)

From: survoje <[email-masked]>
Date: Wed, 17 Jun 2020 11:37:23 +0200

Bonjour tout le monde,

Comme je n'ai rien trouvé sur ce sujet, je fais part ici d'une 
utilisation possible de Lilypond en mode "présentation", c'est-à-dire 
comme powerpoint, impress, beamer...Le principe : utilisation de 
bookpart pour chaque diapo, compilation en PDF, visualisation en mode 
"présentation".

Les deux ECM joints montrent ce qui pourrait être des exemples 
d'utilisation en cours collectif avec projection sur écran et 
explication du maître. N'étant pas prof, ce sont juste des exemples, je 
ne sais pas si ça aurait un intérêt.

Le 3ème source (Air de Sanz) montre par contre une utilisation 
personnelle en mode présentation sur écran pc. L'idée est de travailler 
progressivement un morceau, "phrase par phrase", en boucle, avec 
utilisation de la barre d'espace ou des flèches pour changer de diapo.

Je ne développe pas plus pour ne pas surcharger ce message. Il y a 
beaucoup à dire sur mes méthodes employées (différentes pour l'ECM et 
l'air de Sanz), sur le code, j'aimerai éviter que ça "saute" d'une diapo 
à l'autre, etc. Il y a beaucoup de choses dans le LSR qui pourraient 
agrémenter une présentation (couleur, flèche, carré, cercle, surlignage, 
positionnement des textes, etc.)

Bref, si ça intéresse, on peut développer la discussion... et développer 
cette idée de Lilypond en mode présentation.

Cordialement !

Gérard

(ps : j'avais fait un précédent envoi de ce message avec des pdf en 
pièces jointes... Ne le voyant pas repasser, j'ai supprimé ces pdf en 
supposant que le problème venait de là : pièces jointes trop importantes)

---

From: Valentin Villenave <[email-masked]>
Date: Wed, 17 Jun 2020 17:33:24 +0200

> supposant que le problème venait de là : pièces jointes trop importantes)

Hello,
oui effectivement, ça faisait presque un méga-octet en tout ; j’ai
poussé depuis quelques années la limite de 32 à 128Ko mais là ça
devient un peu beaucoup (il faut penser aux bonnes gens qui, dans les
décennies à venir, téléchargeront le mbox de la liste entière en un
unique fichier texte et se taperont des blocs de milliers de lignes de
code binaire en base64 au milieu des messages authentiquement
lisibles).

D’autant qu’en l’occurrence, le code ly permet tout à fait de
comprendre comment ça fonctionne.

> bookpart pour chaque diapo, compilation en PDF, visualisation en mode

C’est une bonne idée ; si c’était moi il y a deux choses que je ferais
différemment.

- La première, on en a déjà parlé, c’est de factoriser autant que
possible la mise en forme, pour qu’elle soit définie à un seul endroit
une fois pour toutes. Au degré extrême, ça donne des trucs du genre
https://lists.gnu.org/archive/html/lilypond-user-fr/2020-05/msg00304.html
mais même sans aller jusque là, je remarque que tu as mis ton
\applyContext pour changer les couleurs dans une variable, mais que tu
ne l’as pas utilisée…

- La deuxième, c’est que (particulièrement dans le cas de ton
troisième exemple) j’essaierais de séparer au maximum le contenu
musical de la façon dont il est présenté (ce qui permet au passage de
ne changer _que_ ce dernier paramètre plutôt que de saisir à nouveau
la partition à chaque fois. J’appliquerais une variable, dans une voix
invisible (qui n’est même pas une véritable voix car elle s’insère
directement dans le contexte Voice), comme un «calque» qui s’ajoute
aux notes et permet de contrôler ce qu’on affiche ou non.

Un exemple :

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

#(set! paper-alist (cons '("format" . (cons (* 20 cm) (* 15 cm))) paper-alist))

%--- gestion couleur
#(define (override-color-for-all-grobs color)
   (lambda (context)
     (let loop ((x all-grob-descriptions))
       (if (not (null? x))
           (let ((grob-name (caar x)))
             (ly:context-pushpop-property context grob-name 'color color)
             (loop (cdr x)))))))

couleur = {\applyContext #(override-color-for-all-grobs (x11-color 'blue))
}
pascouleur = {\applyContext #(override-color-for-all-grobs (x11-color 'black))
}
%---------------

global= {
  \time 4/4
  \clef "treble_8"
  \key d \major}

%----- Air de danse (Sanz)

pouce = \relative c {
  \voiceTwo
  d1 d1 d2 fis4 e4 d1 \break
  d1 d1 d4. e8 fis4 gis4 a2 a,2
}

doigts = \relative c' {
  \voiceOne
  d4.-2 cis8-1 d4-2 e4\2-4
  fis8 g fis e d4 e4
  fis4 d a' g
  fis8 g fis e d2
  d4. cis8 d4 e4
  fis8 g fis e d4 e4
  fis1 <cis e>2 s2 }

gabarit =  {
  \omit Fingering
  \omit StringNumber
  s1*2 \hideNotes
  s \set Score.skipTypesetting = ##t
}

%============= Sanz Phrase 1
\bookpart{
  \score{
    \new StaffGroup = "classique et Tab"  <<
      \new Staff = "guitare traditionnelle" <<
        \global
        \context Voice = mel << \doigts \gabarit >>
        \context Voice = "le pouce" << \pouce \gabarit >>
      \new TabStaff = "guitare TAB" <<
        \tabFullNotation
        \context TabVoice = "le pouce" << \pouce \gabarit >>
        \context TabVoice = "les doigts" << \doigts \gabarit >>
    \layout {
      #(set-default-paper-size "format")
      indent = 0
    }
  }
}

gabarit =  {
  s1*2 s1 \couleur
  \context Voice = "mel" { s2( s)} \hideNotes
}
%============= Sanz Phrase 2
\bookpart{
  \score{
    \new StaffGroup = "classique et Tab"  <<
      \new Staff = "guitare traditionnelle" <<
        \global
        \context Voice = mel << \doigts \gabarit >>
        \context Voice = "le pouce" << \pouce \gabarit >>
      \new TabStaff = "guitare TAB" <<
        \tabFullNotation
        \context TabVoice = "le pouce" << \pouce \gabarit >>
        \context TabVoice = "les doigts" << \doigts \gabarit >>
    \layout {
      #(set-default-paper-size "format")
      indent = 0
    }
  }
}

%%%%%%%%%

V.

---

From: survoje <[email-masked]>
Date: Wed, 17 Jun 2020 21:48:41 +0200

Merci Valentin,

> \applyContext pour changer les couleurs dans une variable, mais que tu

À propos de l'exemple que tu m'avais fourni, pour tout dire, je n'ai pas 
tout compris, voire moins :)

Pour \applycContext c'est une étourderie de ma part !

> aux notes et permet de contrôler ce qu’on affiche ou non.

J'ai retapé mon exemple avec la variable "gabarit". C'est super !

J'ai rajouté une variable "marque" à la ligne 110 en vue de faire un 
calque ligne 126 pour mettre le chiffre de la tablature en couleur. Si 
je le mets aussi en ligne 121, ça me colle 2 notes cote à cote (cf 
image) :-\.

Je vais cogiter tout ça, méditer une bonne méthode, cette idée de 
"calque" et fouiller la doc, la liste, le LSR... et voir dans quels 
contextes le mode présentation peut être intéressant.

Bien cordialement

G.

---

From: Valentin Villenave <[email-masked]>
Date: Thu, 18 Jun 2020 01:08:18 +0200

> je le mets aussi en ligne 121, ça me colle 2 notes cote à cote (cf

Il n’est même pas nécessaire de créer un calque supplémentaire ; tout
cela peut passer dans la variable gabarit :

%%%%

tabMarque = { \once \override TabNoteHead.color = #red }

gabarit =  {
  \couleur
  s2. \tabMarque s8*5 \tabMarque s
  \pasdoigte
  \hideNotes
}

%%%%

Et comme l’objet TabNoteHead ne se trouve que dans les tablatures, tu
ne seras pas embêté dans les autres portées.  (Pour plus de sûreté tu
pourrais même mettre \override TabVoice.TabNoteHead.color.)

> contextes le mode présentation peut être intéressant.

Tu peux regarder par exemple les concertos de William Herschel que j’ai édités :
https://imslp.org/wiki/Oboe_Concerto_No.1_in_E-flat_major_(Herschel%2C_William)
https://imslp.org/wiki/Oboe_Concerto_No.2_in_C_major_(Herschel%2C_William)
La partition est d’abord saisie en «Urtext», entièrement fidèle au
manuscrit d’origine ; puis je crée une variable «Overlay» (calque),
qui non seulement ajoute des nuances, des signes de ponctuation et des
liaisons, mais _enlève_ également certaines notes et liaisons pour les
remplacer par d’autres. (Dans les cas les plus limites, je crois que
j’ai quand même utilisé des tags.)

V.

---

From: Gerard <[email-masked]>
Date: Sat, 27 Jun 2020 08:59:40 +0200

Avec un peu de retard...

Merci Valentin pour le coup de main !

J'ai nettoyé mes 2 exemples comme tu me l'indiques.

J'en ai fait un ECM de 3 diapos. Sur celui-ci, j'ai un petit problème : 
\gabarit me décale mon "r4" vers le haut (?).

Sinon, pour moi, la présentation,  c'est ok !

Merci pour les liens, je vais étudier ça tranquillement.

Cordialement

G.

---

From: Jean Abou Samra <[email-masked]>
Date: Sat, 27 Jun 2020 23:17:34 +0200

Bonjour,

Une idée en l'air : peut-être lyLuaTeX pourrait-il servir pour insérer 
des partitions LilyPond dans un document LuaLaTeX utilisant la classe 
beamer ?

J'imagine quelque chose dans le genre de

\newcommand{\betweenLilyPondSystem}[1]{\pause}

pour que chaque système apparaisse dans nouvelle diapositive. − 
Toutefois, je suis personnellement peu compétent et trop affairé sur 
d'autres domaines de LilyPond en ce moment pour pouvoir creuser. En 
revanche, il vaudrait peut-être la peine d'en toucher un mot à Jacques 
Peron, l'auteur principal de lyLuaTeX (quelqu'un saurait-il trouver son 
adresse ?), ou bien écrire à la liste internationale (il y a notamment 
Urs Liska qui devrait s'y connaître).

Cordialement,
Jean Abou Samra