[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.7 Autres retouches

@translationof Further tweaking


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.7.1 Autres utilisations des retouches

@translationof Other uses for tweaks


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Liaison entre plusieurs voix

@translationof Tying notes across voices

Voici un exemple qui montre comment créer une liaison de prolongation entre des notes appartenant à des voix différentes. En temps normal, seules deux notes appartenant à une même voix peuvent être ainsi liées. La solution consiste à utiliser deux voix, dont l’une avec les notes liées

[image of music]

et à supprimer la première hampe ascendante et le crochet dans cette voix ; on a alors l’impression que la liaison couvre les deux voix.

 
<<
  {
    \once \omit Stem
    \once \omit Flag
    b'8~ 8\noBeam
  }
\\
  { b'[ g8] }
>>

[image of music]

Voir aussi

Manuel d’initiation : Le préfixe \once, La propriété stencil.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

Rendu MIDI d’un point d’orgue

@translationof Simulating a fermata in MIDI

En ce qui concerne les objets extérieurs à la portée, quand on veut les faire disparaître de la partition imprimée, il est généralement préférable de modifier leur propriété stencil plutôt que leur propriété transparent. Le fait d’attribuer à la propriété stencil d’un objet la valeur #f supprimera entièrement celui-ci de la partition. Il ne risquera donc pas de gêner le placement d’autres objets.

Par exemple, si nous voulons changer le réglage de métronome pour simuler un point d’orgue dans le fichier MIDI, nous ne voulons surtout pas que cette indication métronomique apparaisse sur la partition ni qu’elle influence l’espacement entre les deux systèmes ou la position des annotations voisines sur la portée. Le fait d’attribuer à la propriété stencil la valeur #f est donc la bonne solution. Nous montrons ci-dessous le résultat des deux méthodes :

 
\score {
  \relative {
    % Visible tempo marking
    \tempo 4=120
    a'4 a a
    \once \hide Score.MetronomeMark
    % Invisible tempo marking to lengthen fermata in MIDI
    \tempo 4=80
    a4\fermata |
    % New tempo for next section
    \tempo 4=100
    a4 a a a |
  }
  \layout { }
  \midi { }
}

[image of music]

 
\score {
  \relative {
    % Visible tempo marking
    \tempo 4=120
    a'4 a a
    \once \omit Score.MetronomeMark
    % Invisible tempo marking to lengthen fermata in MIDI
    \tempo 4=80
    a4\fermata |
    % New tempo for next section
    \tempo 4=100
    a4 a a a |
  }
  \layout { }
  \midi { }
}

[image of music]

Les deux méthodes permettent d’enlever l’indication métronomique qui allonge le point d’orgue de la partition, et toutes deux modifient le rythme MIDI comme souhaité mais, dans la première, l’indication métronomique transparente repousse vers le haut l’indication de tempo, contrairement à la seconde (avec le stencil désactivé) qui la laisse à sa place.

Voir aussi

Glossaire musicologique : (music-glossary)system section ‘système’ dans Glossaire.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.7.2 Utilisation de variables dans les retouches

@translationof Using variables for layout adjustments

Les commandes de retouche sont souvent longues et pénibles à taper, et ne tolèrent pas la moindre erreur. Lorsqu’on a besoin de faire plusieurs fois les mêmes retouches, il est préférable de définir des variables qui les contiennent.

Imaginons que nous voulions accentuer certains mots dans des paroles en les mettant en italique. Au lieu des commandes \italic et \bold, qui ne fonctionnent dans les paroles que si elles sont enchâssées dans un \markup – ce qui les rend pénibles à saisir – pouvons-nous employer les commandes \override et \revert ?

 
\override Lyrics.LyricText.font-shape = #'italic
\override Lyrics.LyricText.font-series = #'bold

\revert Lyrics.LyricText.font-shape
\revert Lyrics.LyricText.font-series

Là encore, ce serait extrêmement pénible à saisir, surtout s’il y avait beaucoup de mots à retoucher de cette façon. Plutôt que cette solution, nous déclarons ces commandes comme étant deux variables, et les utilisons comme ci-après – quoique on choisirait sans doute pour les variables des noms plus courts pour simplifier la frappe. Par ailleurs, le fait de recourir à une variable ne nous expose plus à l’oubli des espaces entourant les points lorsqu’explicités au beau milieu d’un bloc \lyricmode !

 
emphasize = {
  \override Lyrics.LyricText.font-shape = #'italic
  \override Lyrics.LyricText.font-series = #'bold
}

normal = {
  \revert Lyrics.LyricText.font-shape
  \revert Lyrics.LyricText.font-series
}

global = { \key c \major \time 4/4 \partial 4 }

SopranoMusic = \relative { c'4 | e4. e8 g4 g    | a4   a   g  }
AltoMusic    = \relative { c'4 | c4. c8 e4 e    | f4   f   e  }
TenorMusic   = \relative  { e4 | g4. g8 c4.  b8 | a8 b c d e4 }
BassMusic    = \relative  { c4 | c4. c8 c4 c    | f8 g a b c4 }

VerseOne = \lyricmode {
  E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
}

VerseTwo = \lyricmode {
  O | \emphasize Christ, \normal whose voice the | wa -- ters heard,
}

VerseThree = \lyricmode {
  O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
}

VerseFour = \lyricmode {
  O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
}

\score {
  \new ChoirStaff <<
    \new Staff <<
      \clef "treble"
      \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
      \new Voice = "Alto" { \voiceTwo \AltoMusic }
      \new Lyrics \lyricsto "Soprano" { \VerseOne }
      \new Lyrics \lyricsto "Soprano" { \VerseTwo }
      \new Lyrics \lyricsto "Soprano" { \VerseThree }
      \new Lyrics \lyricsto "Soprano" { \VerseFour }
    >>
    \new Staff <<
      \clef "bass"
      \new Voice = "Tenor" { \voiceOne \TenorMusic }
      \new Voice = "Bass"  { \voiceTwo \BassMusic }
    >>
  >>
}

[image of music]


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.7.3 Feuilles de style

@translationof Style sheets

La sortie que produit LilyPond peut être largement modifiée – voir Retouche de partition pour plus de détails. Mais que faire si vous avez beaucoup de fichiers auxquels vous souhaitez appliquer vos retouches ? Ou si vous souhaitez simplement séparer les retouches de la musique elle-même ? Rien de plus facile.

Prenons un exemple. Ne vous inquiétez pas si vous ne comprenez pas les parties avec tous les #(). Celles-ci sont expliquées dans Retouches avancées avec Scheme.

 
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}

[image of music]

On peut faire quelque chose pour les définitions de mpdolce et inst. Elles produisent le résultat que nous désirons, mais nous pourrions aussi vouloir les utiliser dans une autre pièce. Il suffirait de les copier et coller au début de chaque fichier, mais c’est fastidieux. De plus, cela laisse les définitions dans nos fichiers de musique, et je trouve personnellement tous ces #() assez laids. Stockons-les dans un autre fichier :

 
%%% enregistrez ceci dans un fichier nommé "definitions.ily"
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

Nous rappellerons ce fichier par une simple commande \include au début de notre fichier de musique. Lui attribuer l’extension .ily nous permet de distinguer aisément qu’il s’agit d’un fichier voué à être inclus dans un fichier maître ; il n’est pas destiné à être compilé isolément.
Maintenant, modifions notre musique (enregistrez ce fichier sous ‘musique.ly’).

 
\include "definitions.ily"

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}

[image of music]

C’est mieux, mais effectuons encore quelques retouches. Le glissando est peu visible, c’est pourquoi nous allons l’épaissir et le rapprocher des têtes de note. Déplaçons l’indication métronomique au-dessus de la clef, au lieu de la laisser au-dessus de la première note. Et pour finir, mon professeur de composition déteste les chiffrages de mesure en « C », nous allons donc le transformer en « 4/4 ».

Cependant, ne changez pas le fichier ‘musique.ly’. Remplacez le fichier ‘definitions.ily’ par ceci :

 
%%%  definitions.ily
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

\layout{
  \context {
    \Score
    \override MetronomeMark.extra-offset = #'(-5 . 0)
    \override MetronomeMark.padding = #'3
  }
  \context {
    \Staff
    \override TimeSignature.style = #'numbered
  }
  \context {
    \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  }
}

[image of music]

C’est encore mieux ! Mais supposons maintenant que je veuille publier cette pièce. Mon professeur de composition n’aime pas les chiffrages de mesure en « C », mais moi je les aime bien. Copions l’actuel ‘definitions.ily’ dans le fichier ‘publication-web.ily’, et modifions ce dernier. Puisque la musique est destinée à produire un fichier PDF affiché sur écran, nous allons aussi augmenter la taille globale de police.

 
%%%  web-publish.ily
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

#(set-global-staff-size 23)

\layout{
  \context {
    \Score
    \override MetronomeMark.extra-offset = #'(-5 . 0)
    \override MetronomeMark.padding = #'3
  }
  \context {
    \Staff
  }
  \context {
    \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  }
}

[image of music]

Il ne nous reste plus qu’à remplacer \include "definitions.ily" par \include "publication-web.ily" dans notre fichier de musique.

Il est possible, bien sûr, de rendre cela encore plus pratique. Nous pourrions créer un fichier ‘definitions.ily’ qui ne contiendrait que les définitions de mpdolce et de inst, un fichier ‘publication-web.ily’ qui ne contiendrait que la section layout décrite ci-dessus et un fichier ‘universite.ily’ qui ne contiendrait que les retouches pour produire le résultat que mon professeur préfère. Le début du fichier ‘musique.ly’ ressemblerait alors à

 
\include "definitions.ily"

%%%  Décommentez seulement une de ces deux lignes !
\include "publication-web.ily"
%\include "universite.ily"

Cette approche peut être utile même si vous ne produisez qu’un seul jeu de partitions. J’utilise personnellement une demi-douzaine de fichiers de « feuille de style » pour mes projets. Je commence chaque fichier de musique par \include "../global.ily" qui contient :

 
%%%   global.ily
\version "2.21.3"

#(ly:set-option 'point-and-click #f)

\include "../init/init-defs.ly"
\include "../init/init-mise-en-page.ly"
\include "../init/init-en-tetes.ly"
\include "../init/init-papier.ly"

[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.7.4 Autres sources de documentation

@translationof Other sources of information

La référence des propriétés internes contient beaucoup d’informations sur LilyPond. Cependant vous pouvez en découvrir encore plus en consultant les fichiers internes de LilyPond. Pour cela, il vous faut d’abord connaître le répertoire ad hoc sur votre système. L’emplacement du répertoire dépend (a) du fait que, pour vous procurer LilyPond, vous avez téléchargé un paquet précompilé sur lilypond.org ou vous l’avez installé grâce à votre gestionnaire de paquetages (c’est-à-dire distribué avec GNU/Linux ou installé avec fink ou cygwin), ou encore vous l’avez compilé directement à partir des sources ; et (b) du système d’exploitation sur lequel il tourne.

Téléchargé depuis lilypond.org

Installé par un gestionnaire de paquetages ou compilé d’après les sources

PREFIX/share/lilypond/X.Y.Z/, où PREFIX est déterminé par votre gestionnaire de paquetages ou par le script configure, et X.Y.Z représente le numéro de version de LilyPond.


Dans ce répertoire, deux sous-répertoires sont particulièrement intéressants :

Commençons par examiner quelques fichiers contenus dans ‘ly/’. Nous ouvrons ‘ly/property-init.ly’ dans un éditeur de texte – celui que vous avez l’habitude d’utiliser pour les fichiers ‘.ly’ fera très bien l’affaire. Ce fichier contient les définitions de toutes les commandes standard prédéfinies de LilyPond, comme \tieUp et \slurDotted. Vous pouvez constater que ce n’est rien d’autre que des définitions de variables composées d’un ou plusieurs groupes de commandes \override. Par exemple, \tieDotted est défini comme :

 
tieDotted = {
  \override Tie.dash-period = #0.75
  \override Tie.dash-fraction = #0.1
}

Si vous n’aimez pas les valeurs par défaut, les commandes prédéfinies peuvent être facilement redéfinies, comme n’importe quelle autre variable, en tête de votre fichier d’entrée.

Voici les fichiers les plus utiles dans le répertoire ‘ly/’ :

Nom de fichierContenu
‘ly/engraver-init.ly’Définition des contextes de graveurs
‘ly/paper-defaults-init.ly’Réglages papier par défaut
‘ly/performer-init.ly’Définition des contextes d’interprétation
‘ly/property-init.ly’Définition de toutes les commandes prédéfinies courantes
‘ly/spanner-init.ly’Définition des commandes prédéfinies pour les bandeaux

Les autres réglages (comme les définitions de commandes markup) sont conservés comme fichiers ‘.scm’ (Scheme). Le langage de programmation Scheme offre une interface programmable dans le processus interne de LilyPond. De plus amples explications sur ces fichiers dépasseraient le cadre de ce manuel dans la mesure où elles requièrent la connaissance du langage Scheme. Les utilisateurs qui souhaiteraient comprendre le fonctionnement de ces fichiers de configuration doivent être avertis que des connaissances techniques substantielles et beaucoup de temps sont nécessaires (voir le (extending)Tutoriel Scheme section ‘Tutoriel Scheme’ dans Extension de LilyPond).

Si c’est votre cas, les fichiers Scheme les plus utiles à connaître sont :

Nom de fichierContenu
‘scm/auto-beam.scm’Règles par défaut des ligatures subalternes
‘scm/define-grobs.scm’Réglages par défaut des propriétés de grobs
‘scm/define-markup-commands.scm’Spécification de toutes les commandes de markup
‘scm/midi.scm’Réglages par défaut pour les sorties MIDI
‘scm/output-lib.scm’Réglages affectant l’apparence des frets, couleurs, altérations, barres de mesure, etc.
‘scm/parser-clef.scm’Définition des clefs prises en charge
‘scm/script.scm’Réglages par défaut des articulations

[ < ] [ > ]   [ << ] [Plus haut] [ >> ]         [Racine] [Table des matières] [Index] [ ? ]

4.7.5 Retouches avancées avec Scheme

@translationof Advanced tweaks with Scheme

Nous avons vu à quel point le résultat obtenu avec LilyPond peut être largement personnalisé à l’aide de commandes comme \override et \tweak. Et pourtant l’utilisation de Scheme ouvre des possibilités encore plus grandes. Le code écrit dans le langage de programmation Scheme peut être intégré directement dans le processus interne de LilyPond. Bien sûr, il faut pour cela connaître un minimum de programmation en langage Scheme. Pour des explications complètes là-dessus, consultez le (extending)Tutoriel Scheme section ‘Tutoriel Scheme’ dans Extension de LilyPond.

En guise d’illustration – et ce n’est qu’une possibilité parmi tant d’autres – nous allons attribuer à une propriété non pas une valeur préétablie mais une procédure Scheme qui sera lancée à chaque utilisation de la propriété par LilyPond. De cette façon, nous obtenons un réglage dynamique de la propriété par le simple fait d’invoquer la procédure. Dans cet exemple, nous colorons les têtes de notes en fonction de leur position sur la portée.

 
#(define (color-notehead grob)
   "Color the notehead according to its position on the staff."
   (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
                               7)))
     (case mod-position
       ;;   Return rainbow colors
       ((1) (x11-color 'red    ))  ; for C
       ((2) (x11-color 'orange ))  ; for D
       ((3) (x11-color 'yellow ))  ; for E
       ((4) (x11-color 'green  ))  ; for F
       ((5) (x11-color 'blue   ))  ; for G
       ((6) (x11-color 'purple ))  ; for A
       ((0) (x11-color 'violet ))  ; for B
       )))

\relative {
  % Arrange to obtain color from color-notehead procedure
  \override NoteHead.color = #color-notehead
  a2 b | c2 d | e2 f | g2 a |
}

[image of music]

Vous trouverez dans (extending)Fonctions de rappel section ‘Fonctions de rappel’ dans Extension de LilyPond d’autres exemples d’utilisation de ces interfaces programmables.


[ < ] [ > ]   [ << ] [Plus haut] [ >> ]

Ce document a été généré le le 13 juillet 2020 par gub en utilisant texi2html 1.82.

Autres langues : English, català, česky, deutsch, español, italiano, 日本語, nederlands.
À propos de la sélection automatique de la langue.