| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Further tweaking
| 4.7.1 Autres utilisations des retouches | ||
| 4.7.2 Utilisation de variables dans les retouches | ||
| 4.7.3 Feuilles de style | ||
| 4.7.4 Autres sources de documentation | ||
| 4.7.5 Retouches avancées avec Scheme |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Other uses for tweaks
| Liaison entre plusieurs voix | ||
| Rendu MIDI d’un point d’orgue |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@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
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] } >>
Manuel d’initiation :
Le préfixe \once,
La propriété stencil.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@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 { } }
\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 { } }
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.
Glossaire musicologique : (music-glossary)system section ‘système’ dans Glossaire.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@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 } >> >> }
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@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 | }
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 |
}
|
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
}
}
|
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
}
}
|
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] | [ ? ] |
@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.
‘INSTALLDIR/lilypond/usr/share/lilypond/current/’ |
‘INSTALLDIR/LilyPond.app/Contents/Resources/share/lilypond/current/’ |
Pour accéder à ce dossier, deux possibilités : soit, dans un
Terminal, taper cd suivi du chemin complet ci-dessus ; soit
Control-cliquer (ou clic droit) sur l’application LilyPond
et sélectionner « Afficher le contenu du paquet ».
Dans l’Explorateur Windows, voir
‘INSTALLDIR/LilyPond/usr/share/lilypond/current/’ |
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 :
ly/ – contient les fichiers en format LilyPond
scm/ – contient les fichiers en format Scheme
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 fichier | Contenu |
|---|---|
| ‘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 fichier | Contenu |
|---|---|
| ‘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] | [ ? ] |
@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 | }
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.