4.4.3 Écriture d’une partition à partir de zéro (GNU LilyPond – Manuel d’initiation)

#### 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.26.0"
    \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

#### Voir aussi

Glossaire musicologique : système.

#### GNU LilyPond – Manuel d’initiation v2.26.0 (stable-branch).

- 1 Installation
  - 1.1 Installation en mode graphique
  - 1.2 Installation en ligne de commande
- 2 Tutoriel
  - 2.1 Compilation d’un fichier
  - 2.2 Composition d’un fichier source
    - 2.2.1 Notation simple
      - Hauteurs
      - Durées et rythme
      - Silences
      - Métrique
      - Indication de tempo
      - Clefs
      - Tout ensemble
    - 2.2.2 Travail sur les fichiers d’entrée
  - 2.3 Gestion des erreurs
  - 2.4 Bien lire le manuel
    - 2.4.1 Matériel incomplet
    - 2.4.2 Exemples cliquables
    - 2.4.3 Vue d’ensemble des manuels
- 3 Bases de notation musicale
  - 3.1 Notation sur une seule portée
    - 3.1.1 Barre et contrôle de mesure
      - Barre de mesure
      - Contrôle de mesure
    - 3.1.2 Hauteurs et armure
      - Altérations
      - Armures
      - Attention aux armures et aux hauteurs
    - 3.1.3 Liaisons
      - Liaisons de prolongation
      - Liaisons d’articulation
      - Liaisons de phrasé
      - Attention aux types de liaison
    - 3.1.4 Articulations et nuances
      - Articulation
      - Doigté
      - Nuance
    - 3.1.5 Ajout de texte
    - 3.1.6 Barres de ligature automatiques et manuelles
    - 3.1.7 Commandes rythmiques avancées
      - Mesure incomplète
      - N-olet
      - Note d’ornement
  - 3.2 Notes simultanées
    - 3.2.1 Les expressions musicales en clair
      - Analogie avec les expressions mathématiques
      - Expressions musicales simultanées – plusieurs portées
      - Expressions musicales simultanées – une seule portée
    - 3.2.2 Plusieurs portées
    - 3.2.3 Regroupements de portées
    - 3.2.4 Combinaison de notes en accords
    - 3.2.5 Polyphonie sur une portée
  - 3.3 Chansons
    - 3.3.1 Écriture de chants simples
    - 3.3.2 Alignement des paroles sur une mélodie
    - 3.3.3 Paroles pour plusieurs portées
  - 3.4 Dernières précisions
    - 3.4.1 Organisation du code source avec des variables
    - 3.4.2 Ajout de titres
    - 3.4.3 Noms de note absolus
    - 3.4.4 Après le tutoriel
- 4 Concepts fondamentaux
  - 4.1 Organisation des fichiers LilyPond
    - 4.1.1 Introduction à la structure de fichier LilyPond
    - 4.1.2 La partition est une (unique) expression musicale composée
    - 4.1.3 Expressions musicales imbriquées
    - 4.1.4 Structuration de la saisie des notes
    - 4.1.5 Non-imbrication des crochets et liaisons
  - 4.2 Les voix contiennent la musique
    - 4.2.1 J’entends des voix
    - 4.2.2 Instanciation explicite des voix
    - 4.2.3 Voix et paroles
  - 4.3 Contextes et graveurs
    - 4.3.1 Tout savoir sur les contextes
    - 4.3.2 Création d’un contexte
    - 4.3.3 Tout savoir sur les graveurs
    - 4.3.4 Modification des propriétés d’un contexte
    - 4.3.5 Ajout et suppression de graveurs
  - 4.4 Extension des modèles
    - 4.4.1 Soprano et violoncelle
    - 4.4.2 Partition pour chœur à quatre voix mixtes
    - 4.4.3 Écriture d’une partition à partir de zéro
    - 4.4.4 Économie de saisie grâce aux identificateurs et fonctions
    - 4.4.5 Conducteurs et parties
- 5 Retouche de partition
  - 5.1 Retouches élémentaires
    - 5.1.1 Objets et interfaces
    - 5.1.2 Conventions de nommage des objets et propriétés
    - 5.1.3 Méthodes de retouche
      - La commande `\override`
      - La commande `\revert`
      - Le préfixe `\once`
      - Les commandes `\tweak` et `\offset`
      - Le préfixe `\single`
  - 5.2 Le manuel de référence des propriétés internes
    - 5.2.1 Propriétés des objets de rendu
    - 5.2.2 Propriétés listées par interface
    - 5.2.3 Types de propriétés
  - 5.3 Apparence des objets
    - 5.3.1 Visibilité et couleur des objets
      - La propriété `stencil`
      - La propriété `break-visibility`
      - La propriété `transparent`
      - La propriété `color`
    - 5.3.2 Taille des objets
    - 5.3.3 Longueur et épaisseur des objets
  - 5.4 Décalages et alignements
  - 5.5 Positionnement des objets
    - 5.5.1 Comportement automatique
    - 5.5.2 Objets inclus dans la portée
      - La propriété `direction`
      - Doigtés
    - 5.5.3 Objets hors de la portée
      - La propriété `outside-staff-priority`
      - La commande `\textLengthOn`
      - Positionnement des nuances
      - Dimensionnement des objets graphiques
  - 5.6 Espacement vertical
  - 5.7 Collisions d’objets
    - 5.7.1 Déplacement d’objets
    - 5.7.2 Correction des collisions d’objets
      - La propriété `padding`
      - La propriété `right-padding`
      - La propriété `staff-padding`
      - La propriété `self-alignment-X`
      - La propriété `staff-position`
      - La propriété `extra-offset`
      - La propriété `positions`
      - La propriété `force-hshift`
    - 5.7.3 Exemple concret
  - 5.8 Autres retouches
    - 5.8.1 Autres utilisations des retouches
      - Liaison entre plusieurs voix
      - Rendu MIDI d’un point d’orgue
    - 5.8.2 Utilisation de variables dans les retouches
    - 5.8.3 Feuilles de style
    - 5.8.4 Autres sources de documentation
    - 5.8.5 Retouches avancées avec Scheme
- Appendix A Modèles
  - A.1 Gabarits préprogrammés
    - A.1.1 Gabarit pour chœur à quatre voix mixtes
    - A.1.2 Gabarit pour double chœur à quatre voix mixtes
  - A.2 Modèles pour portée unique
    - A.2.1 Notes seules
    - A.2.2 Notes et paroles
    - A.2.3 Notes et accords
    - A.2.4 Notes, paroles et accords
  - A.3 Modèles pour piano
    - A.3.1 Piano seul
    - A.3.2 Chant et accompagnement
    - A.3.3 Piano et paroles entre les portées
  - A.4 Modèles pour quatuor à cordes
    - A.4.1 Quatuor à cordes simple
    - A.4.2 Parties pour quatuor à cordes
  - A.5 Modèles pour ensemble vocal
    - A.5.1 Partition pour chœur SATB
    - A.5.2 Partition pour chœur SATB avec réduction pour piano
    - A.5.3 Partition pour chœur SATB avec alignement des contextes
    - A.5.4 Chœur à quatre voix mixtes sur quatre portées
    - A.5.5 Couplet pour solo et refrain à deux voix
    - A.5.6 Hymnes et cantiques
    - A.5.7 Psalmodie
  - A.6 Orchestre
    - A.6.1 Orchestre, chœur et piano
  - A.7 Exemples de notation ancienne
    - A.7.1 Transcription de musique mensurale
    - A.7.2 Transcription du grégorien
  - A.8 Autres modèles
    - A.8.1 Symboles de jazz
- Appendix B GNU Free Documentation License
- Appendix C Index des commandes et concepts