4.4.3 Écriture d’une partition à partir de zéro

Après avoir acquis une certaine dextérité dans l’écriture de code LilyPond, vous devez vous sentir suffisamment prêt à vous lancer dans la création d’une partition à partir de zéro, autrement dit en ne partant pas d’un exemple. Vous pourrez ainsi vous construire vos propres patrons selon le type de musique que vous affectionnez plus particulièrement. Pour voir comment procéder, nous allons monter la partition d’un prélude pour orgue.

Nous débutons par une section d’en-tête ; nous y mettrons entre autres le titre et le nom du compositeur. Puis viennent toutes les définitions de toutes les variables. Nous terminons par le bloc \score. Attelons-nous pour cette aventure, en gardant bien à l’esprit ce que nous venons de dire ; nous nous occuperons des détails en temps voulu.

Nous nous appuyons sur les deux premières mesures du prélude sur Jesu, meine Freude, écrit pour orgue avec pédalier. Vous pouvez voir ces deux mesures au bas de cette page. La main droite comporte deux voix, la main gauche et le pédalier une seule. Il nous faut donc quatre définitions de musique, plus une qui contiendra la métrique et l’armure :

\version "2.25.22"
\header {
  title = "Jesu, meine Freude"
  composer = "J S Bach"
}
ArmureMetrique = { \key c \minor \time 4/4 }
ManuelUnVoixUnMusique = { s1 }
ManuelUnVoixDeuxMusique = { s1 }
ManuelDeuxMusique = { s1 }
PedalierOrgueMusique = { s1 }

\score {
}

Pour l’instant, nous utilisons des silences invisibles, s1, en lieu et place des notes réelles. On verra plus tard.

Passons maintenant au bloc \score et à ce qu’il devrait contenir. Nous y recopions simplement la structure des portées que nous voulons. La musique pour orgue se présente généralement sous la forme de trois portées, une pour chaque main et une pour le pédalier. Les portées du manuel sont regroupées, nous utiliserons donc un PianoStaff. La première partie du manuel requiert deux voix et la seconde une seule.

\new PianoStaff <<
  \new Staff = "ManuelUn" <<
    \new Voice {
      \ManuelUnVoixUnMusique
    }
    \new Voice {
      \ManuelUnVoixDeuxMusique
    }
  >>  % fin du contexte de portée ManuelUn
  \new Staff = "ManuelDeux" <<
    \new Voice {
      \ManuelDeuxMusique
    }
  >>  % fin du contexte de portée ManuelDeux
>>  % fin du contexte PianoStaff

Il nous faut ajouter à cela une portée pour le pédalier. Elle se place sous le système de piano mais, puisqu’elle doit rester synchrone avec lui, nous utilisons des doubles chevrons pour les regrouper. Négliger ceci nous renverrait une erreur, et personne n’est à l’abri de cette faute ! Pour preuve, il vous suffit de copier l’exemple complet en fin de chapitre, de supprimer ces << et >>, et de le compiler, pour voir de quoi il retourne.

<<  % Système pianistique et portée de pédalier sont synchrones
  \new PianoStaff <<
    \new Staff = "ManuelUn" <<
      \new Voice {
        \ManuelUnVoixUnMusique
      }
      \new Voice {
        \ManuelUnVoixDeuxMusique
      }
    >>  % fin du contexte de portée ManuelUn
    \new Staff = "ManuelDeux" <<
      \new Voice {
        \ManuelDeuxMusique
      }
    >>  % fin du contexte de portée ManuelDeux
  >>  % fin du contexte PianoStaff
  \new Staff = "PedalierOrgue" <<
    \new Voice {
      \PedalierOrgueMusique
     }
  >>
>>

La construction en simultané – << … >> – n’est pas strictement obligatoire pour les portées manuel deux et pédalier, qui ne contiennent chacune qu’une seule expression musicale ; mais cela ne mange pas de pain, et c’est une bonne habitude que de toujours encadrer par des doubles chevrons gauche/droite ce qui suit une commande \new Staff au cas où il y aurait plusieurs voix. Il en va autrement pour les contextes Voice : ils doivent être toujours suivis d’accolades – { … } – au cas où vous auriez employé plusieurs variables qui doivent intervenir consécutivement.

Ajoutons donc cette structure au bloc \score, tout en fignolant l’indentation. Nous en profitons pour ajouter les clefs appropriées, effectuer les réglages concernant les hampes et liaisons de la portée supérieure grâce à \voiceOne et \voiceTwo, et mettre en place la métrique et l’armure de chaque portée grâce à notre variable \MetriqueArmure.

\score {
  <<  % Système pianistique et portée de pédalier sont synchrones
    \new PianoStaff <<
      \new Staff = "ManuelUn" <<
        \ArmureMetrique % définition de l'armure et de la métrique
        \clef "treble"
        \new Voice {
          \voiceOne
          \ManuelUnVoixUnMusique
        }
        \new Voice {
          \voiceTwo
          \ManuelUnVoixDeuxMusique
        }
      >>  % fin du contexte de la portée ManuelUn
      \new Staff = "ManuelDeux" <<
        \ArmureMetrique
        \clef "bass"
        \new Voice {
          \ManuelDeuxMusique
        }
      >>  % fin du contexte de la portée ManuelDeux
    >>  % fin du contexte PianoStaff
    \new Staff = "PedalierOrgue" <<
      \ArmureMetrique
      \clef "bass"
      \new Voice {
        \PedalierOrgueMusique
      }
    >>  % fin du contexte de la portée PedalOrgan
  >>
}  % fin du contexte Score

Cette partition pour orgue est presque parfaite. Reste juste ce petit défaut qui ne se remarque pas lorsque l’on considère un seul système : la distance qui sépare la portée de pédalier de celle de la main gauche devrait être plus ou moins égale à celle qui sépare les deux mains. En fait, la distance entre les deux portées d’un PianoStaff ne saurait trop se dilater ; le pédalier devrait adopter le même comportement.

La propension des portées à se dilater se contrôle à l’aide de la propriété staff-staff-spacing, attachée à « l’objet graphique » VerticalAxisGroup – la documentation de LilyPond utilise souvent l’abréviation grob pour graphical object. Pas de panique ! Tout ceci sera expliqué plus tard – pour les curieux, jetez un œil au chapitre Vue d’ensemble de la modification des propriétés. Revenons à notre propos : nous voulons modifier uniquement la sous-propriété stretchability. Toutes les valeurs qui n’auront pas été modifiées garderont leur valeur par défaut. Les impatients trouveront les valeurs par défaut de la propriété staff-staff-spacing dans le fichier scm/define-grobs.scm, en examinant la définition du grob VerticalAxisGroup. La valeur que nous affecterons à stretchability est celle que contient la définition du contexte PianoStaff telle qu’elle apparaît dans le fichier ly/engraver-init.ly).

\score {
  <<  % Système pianistique et portée de pédalier sont synchrones
    \new PianoStaff <<
      \new Staff = "ManuelUn" <<
        \ArmureMetrique % définition de l'armure et de la métrique
        \clef "treble"
        \new Voice {
          \voiceOne
          \ManuelUnVoixUnMusique
        }
        \new Voice {
          \voiceTwo
          \ManuelUnVoixDeuxMusique
        }
      >>  % fin du contexte de la portée ManuelUn
      \new Staff = "ManuelDeux" \with {
        \override VerticalAxisGroup
                  .staff-staff-spacing.stretchability = 5
      } <<
        \ArmureMetrique
        \clef "bass"
        \new Voice {
          \ManuelDeuxMusique
        }
      >>  % fin du contexte de la portée ManuelDeux
    >>  % fin du contexte PianoStaff
    \new Staff = "PedalierOrgue" <<
      \ArmureMetrique
      \clef "bass"
      \new Voice {
        \PedalierOrgueMusique
      }
    >>  % fin du contexte de la portée PedalOrgan
  >>
}  % fin du contexte Score

Nous en avons fini avec la structure. Toutes les partitions pour orgue auront cette structure, même si le nombre de voix peut changer. Tout ce qui nous reste à faire maintenant consiste à saisir la musique et à regrouper toutes les parties.

\header {
  title = "Jesu, meine Freude"
  composer = "J S Bach"
}
keyTime = { \key c \minor \time 4/4 }
ManualOneVoiceOneMusic = \relative {
  g'4 g f ees |
  d2 c |
}
ManualOneVoiceTwoMusic = \relative {
  ees'16 d ees8~ 16 f ees d c8 d~ d c~ |
  8 c4 b8 c8. g16 c b c d |
}
ManualTwoMusic = \relative {
  c'16 b c8~ 16 b c g a8 g~ 16 g aes ees |
  f16 ees f d g aes g f ees d ees8~ 16 f ees d |
}
PedalOrganMusic = \relative {
  r8 c16 d ees d ees8~ 16 a, b g c b c8 |
  r16 g ees f g f g8 c,2 |
}

\score {
  <<  % PianoStaff and Pedal Staff must be simultaneous
    \new PianoStaff <<
      \new Staff = "ManualOne" <<
        \keyTime  % set key and time signature
        \clef "treble"
        \new Voice {
          \voiceOne
          \ManualOneVoiceOneMusic
        }
        \new Voice {
          \voiceTwo
          \ManualOneVoiceTwoMusic
        }
      >>  % end ManualOne Staff context
      \new Staff = "ManualTwo" \with {
        \override VerticalAxisGroup
                  .staff-staff-spacing.stretchability = 5
      } <<
        \keyTime
        \clef "bass"
        \new Voice {
          \ManualTwoMusic
        }
      >>  % end ManualTwo Staff context
    >>  % end PianoStaff context
    \new Staff = "PedalOrgan" <<
      \keyTime
      \clef "bass"
      \new Voice {
        \PedalOrganMusic
      }
    >>  % end PedalOrgan Staff context
  >>
}  % end Score context

[image of music]

Voir aussi

Glossaire musicologique : système.


GNU LilyPond – Manuel d’initiation v2.25.22 (development-branch).