Lilypond en mode présentation (slideshow)

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)

Lilypond_mode-presentation_ECM.ly (5.93 KB)

Lilypond_mode-presentation_ECM2.ly (4.49 KB)

Sanz_Book_Air-de-danse.ly (10.9 KB)

(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)

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.

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".

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.

···

On 6/17/20, survoje <****@****> wrote:

Merci Valentin,

- 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…

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

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

- 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.

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.

marque.png

Lilypond_mode-presentation_exemple_VV.ly (6.87 KB)

···

Le 17/06/2020 à 17:33, Valentin Villenave a écrit :

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) :-\.

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.)

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.

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.

···

On 6/17/20, survoje <****@****> wrote:

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.

Lilypond_presentation_intervalles.ly (5.92 KB)

ECM_mode-presentation.ly (2.01 KB)

Sanz_Air-de-danse_VV_gabarit.ly (7.65 KB)

···

Le 18/06/2020 à 01:08, Valentin Villenave a écrit :

On 6/17/20, survoje <****@****> wrote:

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) :-\.

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.)

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.

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.

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