Subject: \book et définition de variable

From: Jean-Baptiste Halard <[email-masked]>
Date: Wed, 6 May 2020 12:22:56 +0000

C’est la première fois que j’utilise \book pour réunir plusieurs pièces.

Le problème est que, si j’ai bien compris, on ne peut pas définir de variables dans \book, au moins après le premier \score.

Or j’ai à réunir 9 fichiers, appelant chacun 12 fichiers, contenant chacun 1 bloc \score. Sur les 12, 6 sont polyphoniques, et des variables contenant la musique de chaque voix, se trouvent dans ces fichiers ; les 6 autres ne contiendront qu’une variable à renommer (240 variables grosso modo).

Le résultat dans les fichiers serait moyen car il sont organisés de manière indépendante, bien qu’identiques dans leur organisation : je serais obligé de réunir toute les variables de musique, à moins de jouer avec les chemins d’accès, ce qui me parait pénible.

Existe-t-il une autre solution avec lilypond ?
Sinon je réunis les fichiers avec LaTeX.

JB

---

From: Valentin Villenave <[email-masked]>
Date: Wed, 6 May 2020 15:05:42 +0200

On 5/6/20, Jean-Baptiste Halard <[email-masked]> wrote:
> j’ai à réunir 9 fichiers, appelant chacun 12 fichiers, contenant chacun 1
> bloc \score. Sur les 12, 6 sont polyphoniques, et des variables contenant la
> musique de chaque voix, se trouvent dans ces fichiers ; les 6 autres ne
> contiendront qu’une variable à renommer (240 variables grosso modo).

Le principal problème que vous risquez de rencontrer est que si
plusieurs variables portent le même nom, la dernière traitée par
LilyPond va écraser les précédentes. Si toutes vos variables portent
des noms différents, alors pas de problème.

Notez que l’utilisation de \book ne commence à être utile que lorsque
vous voulez générer plusieurs fichiers PDF. Sans cela vous pouvez très
bien avoir plein de fichiers avec des blocs score, puis les réunir
dans un seul fichier :

%%%%

%% premierfichier.ly

Iflute = { b'1 }

Icello = { \clef bass b,1 }

\score {
  \new StaffGroup <<
    \new Staff \Iflute
    \new Staff \Icello
  \layout { }
}

%% deuxiemefichier.ly

IIflute = { a'1 }

IIcello = { \clef bass a,1 }

\score {
  \new StaffGroup <<
    \new Staff \IIflute
    \new Staff \IIcello
  \layout { }
}

%% autrefichier.ly

\header { title = "Plein de partitions" }

\include "premierfichier.ly"
\pageBreak
\include "deuxiemefichier.ly"
\pageBreak

%%%%

etc.

Ce qui vous épargne donc d’avoir à utiliser un bloc \book, et du coup
les définitions ne posent plus de problème.

Si vous avez absolument besoin d’utiliser \book ou \bookpart, alors
une autre solution assez simple serait de modifier vos fichiers pour
que le bloc \score soit _lui aussi_ dans une variable :

%%%%

%% premierfichier.ly

Iflute = { b'1 }

Icello = { \clef bass b,1 }

Iscore = \score {
  \new StaffGroup <<
    \new Staff \Iflute
    \new Staff \Icello
  \layout { }
}

%% deuxiemefichier.ly

IIflute = { a'1 }

IIcello = { \clef bass a,1 }

IIscore = \score {
  \new StaffGroup <<
    \new Staff \IIflute
    \new Staff \IIcello
  \layout { }
}

%% autrefichier.ly

\book {
  \header { title = "Plein de partitions" }
  \Iscore
  \IIscore
}

\book {
  \header { title = "Une partition" }
  \Iscore
}

\book {
  \header { title = "Une autre partition" }
  \IIscore
}

%%%%

Cette dernière hypothèse vous permettant, comme je l’indiquais plus
haut, de créer de multiples fichiers PDF.

Cela a été discuté il y a quelques jours sur la liste anglophone, avec
un utilisateur qui se trouvait dans la même situation que vous (en
pire semble-t-il) :
https://lists.gnu.org/archive/html/lilypond-user/2020-05/msg00050.html

Cordialement,
V. V.

---

From: Jean-Luc Queva <[email-masked]>
Date: Thu, 7 May 2020 15:37:22 +0200

Lilypond génère des fichiers midi qui aident à l'apprentissage des chants
de notre chorale. Ces pièces, quand elles sont importantes, sont divisées
en parties et \book me permet de nommer facilement les divers fichiers de
sortie, .pdf et .mid.

Un exemple, A Concert Celebration de Andrew Lloyd Webber, divisé en sept
parties, I, II… VII, dont voici l'architecture des dossiers et des fichiers
:
Webber/
|-- books/
|   |-- book_all.ly, book_piano.ly, book_soprano.ly, book_alto.ly,
book_tenor.ly, book_bass.ly % les différents regroupements de \book qui
génèrent la sortie des parties de la pièce pour chacune des voix.
|-- ilys/
|   |-- altoI.ily, ... , altoVII.ily ; ... ; tenorI.ily, ... ,
tenorVII.ily, pianoI.ily, ... , pianoVII.ily % les voix de chaque partie
|   |-- altoWebber.ily, ..., tenorWebber.ily, pianoWebber.ily % les voix de
la pièce fabriquées à l'aide des voix partielles.
|-- init
|   |-- common.ily % #(ly:set-option 'midi-extension "mid"),
#(ly:set-option 'point-and-click #f) ...
|   |-- global.ily % contient les \global de chaque partie : globalI = {
\key sib \major \time 4/4 \tempo "" 4=96 } ...
|--parts
|   |-- altoPart.ily, ... , tenorPart.ily, pianoPart.ily % mise en place
des diverses partitions.
|   |-- all.ly, alto.ly, ... , tenor.ly, piano.ly % sortie .pdf et .mid de
la pièce complète pour chacune des voix.
|-- util.ily %

Exemples de fichiers :

   - les voix du dossier /ilys/ :
   - *altoI.ily* contient la musique, la dynamique et le texte de la voix
      d'alto de la partie I :
      - % -*- master: ../parts/alto.ly; % pour Frescobaldi
         \include "../init/common.ily"
         altoMusicI = \relative { \globalI } % la musique
         altoDynI = { } % la dynamique
         altoWordsI = \lyricmode { } % le texte
      - *pianoI.ily* contient la musique des mains droite et gauche, la
      dynamique et la pédale du piano de la partie I :
         - % -*- master: ../parts/piano.ly;
         rhMusicI = \relative { \globalI } % la musique de la main droite.
         lhMusicI = \relative { \globalI } % la musique de la main gauche.
         pianoDynNuancesI = { } % les nuances.
         pianoDynPedaleI = { } % la pédale.
      - *altoWebber.ily* regroupe la musique, la dynamique et les paroles
      de toutes les parties de la voix d'alto
         - % -*- master: ../parts/alto.ly;
         \include "../ilys/altoI.ily" ... \include "../ilys/altoVII.ily"
         altoMusicWebber =  { \altoMusicI ...  \altoMusicVII }
         altoDynWebber = { \altoDynI ... \altoDynVII }
         altoWordsWebber = { \altoWordsI ... \altoWordsVII }
      - les partitions du dossier /parts/ sont de deux types :
   <voice>Part.ily fabrique des partitions, <voice>.ly les utilise :
   - *altoPart.ily *fabrique les partitions de chacune des parties de la
      voix d'alto
      - \include "../ilys/altoI.ily" ... \include "../ilys/altoVII.ily"
         \include "../ilys/altoWebber.ily"

         altoPartWebber = { \new Staff \with { \altoSet }
         \new Voice = "alto" { << \altoMusicWebber \altoDynWebber >> }
         \addlyrics { \altoWordsWebber } }

         altoPartI = { \new Staff \with { \altoSet }
         \new Voice = "alto" { << \altoMusicI \altoDynI >> } \addlyrics {
         \altoWordsI } }
         etc ...
         - *pianoPart.ily *fabrique les partitions de chacune des parties
      de la voix de piano
         - \include "../ilys/pianoI.ily" ... \include
         "../ilys/pianoVII.ily" \include "../ilys/pianoWebber.ily
         pianoPartWebber = {
           \new PianoStaff \with { \pianoSet }
           <<
             \new Staff = "right"
             <<
               \new Voice { \rhMusicWebber }
               \new Dynamics = "nuances" \with { alignBelowContext =
         "right" } { \pianoDynNuancesWebber } >>
             \new Staff = "left"
             <<
               \new Voice { \lhMusicWebber }
               \new Dynamics = "pedales" \with { alignBelowContext = "left"
         pedalSustainStyle = #'mixed }
               { \pianoDynPedaleWebber }
         }
         pianoPartI = {
           \new PianoStaff \with { \pianoSet }
           <<
             \new Staff = "right"
             <<
               \new Voice { \rhMusicI }
               \new Dynamics = "nuances" \with { alignBelowContext =
         "right" } { \pianoDynNuancesI }
             \new Staff = "left"
             <<
               \new Voice { \lhMusicI }
               \new Dynamics = "pedales" \with { alignBelowContext = "left"
         pedalSustainStyle = #'mixed }
               { \pianoDynPedaleI }
         }
         etc ...
         - alto.ly génère les sorties .pdf et .mid de la voix d'alto de la
      pièce entière accompagnée par le piano :
         - \include "../util.ily" \include "../ilys/altoPart.ily" \include
         "../ilys/pianoPart.ily"
         \include "articulate.ly"
         \header { instrument = "Alto et piano" }
         \score {
           << \new ChoirStaff << \altoPartWebber >>
             \pianoPartWebber
           \layout { \context { \Score currentBarNumber = #1 } }
         }
         \score {
           \articulate
           \unfoldRepeats {
             << \new ChoirStaff << \altoPartWebber >>
               \pianoPartWeber
           }
           \midi { }
         }
         - les \book du dossier /books/ :
      - book_alto.ly génère les .pdf partitions de toutes les parties de la
      voix d'alto  et les .mid de ces parties accompagnées du piano :
         - \include "../utilMorricone.ily"
         \include "../parts/altoPart.ily" \include "../parts/pianoPart.ily"
         \include "articulate.ly"
         \book {
           \bookOutputName "Webber" % sorties Webber-alto_I.pdf et
         Webber-alto_I.mid
           \bookOutputSuffix "alto_I"
           \header {
             title = "A Concert Celebration"
             composer = "Andrew Lloyd Webber"
             instrument = "Alto"
             poet = "Partie I, mesure 1 => mesure 42"
           }
           \score {
             << \new ChoirStaff << \altoPartI >> >>
             \layout { \context { \Score currentBarNumber = #1 } }
           }
           \score {
             \articulate
             \unfoldRepeats {
               << \new ChoirStaff << \altoPartI >>
                 << \pianoPartI >>
             \midi { }
           }
         }
         \book {
           \bookOutputName "Webber" % sorties Webber-alto_II.pdf et
         Webber-alto_II.mid
           \bookOutputSuffix "alto_II"
           \header {
             title = "A Concert Celebration"
             composer = "Andrew Lloyd Webber"
             instrument = "Alto"
             poet = "Partie II, mesure 43 => mesure 68"
           }
           \score {
             << \new ChoirStaff << \altoPartII >> >>
             \layout { \context { \Score currentBarNumber = #43 } }
           }
           \score {
             \articulate
             \unfoldRepeats {
               << \new ChoirStaff << \altoPartII >>
                 << \pianoPartII >>
             \midi { }
           }
         }
         etc ...
         - le fichier uti1.ly :
      - #(ly:set-option 'relative-includes #t)
      \include "./init/global.ily"
      \include "./init/common.ily"
      altoSet = {
        \set Staff.midiInstrument = #"choir aahs"
        \set Staff.instrumentName = "Alto"
        \set Staff.shortInstrumentName = "A"
        \set Staff.midiMaximumVolume = #0.9
      }
      etc ...
      \layout {
        \context { \ChoirStaff \dynamicUp \override
      SystemStartBracket.collapse-height = #4 }
        \context { \Score \override SystemStartBar.collapse-height = #4 }
        \context { \PianoStaff \dynamicDown }
      }

J'espère que ceci peut vous aider,

Jean-Luc

Le mer. 6 mai 2020 à 15:05, Valentin Villenave <[email-masked]> a