[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: markup positionné par rapport à une no te
From: |
Xavier Scheuer |
Subject: |
Re: markup positionné par rapport à une no te |
Date: |
Wed, 5 May 2010 20:43:26 +0200 |
2010/5/4 Editions IN NOMINE <address@hidden> :
> Ub9.04+2.13
>
> Bonjour à tous !
Salut !
> En préambule, ce code tout simple :
>
> trille = \markup {\fontsize #2 {\musicglyph #"scripts.rcomma" }}
>
> \relative c' {\clef alto e2 d4.^\trille c8 c1}
>
> Comme indiqué dans le titre, mais plus explicitement, je cherche à
> faire 3 choses en une :
>
> 1. étirer le rcomma dans l'axe Y pour qu'il soit un peu plus élancé
Désolé, je crains que cela ne soit pas possible, pour le moment.
http://code.google.com/p/lilypond/issues/detail?id=888
> 2. faire en sorte que quelle que soit la note à qui je colle ^\trille
> ce trille soit toujours placé identiquement relativement à sa note
> (avec anchor ?)
Dans ce cas, se baser sur une solution à base de Script, plutôt que
d'utiliser des TextScripts. En effet, par définition les Scripts sont
"ancrés" à la tête de note alors que les TextScript sont par définition
des éléments "outside-staff".
Enfin, il me semble...
> 3. encapsuler tous les override que je pressens dans la définition
> de trille
Dans ce cas je conseillerais d'utiliser -\tweak dans la définition, car
la commande -\tweak se place après la note alors que les \override
doivent nécessairement être placés avant.
Or vous voulez utiliser \trille * après*, n'est-ce pas ?
http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-tweak-command
> Voici une solution à mon pb.
>
> Je crée un éléemnt trille :
>
> trille = \markup {\musicglyph #"scripts.rcomma" }
>
> Ce trille est par défaut centré au dessus de la note.
>
> Je crée alors une fonction "bouge" qui a pour but de fixer le
> décalage vers la droite (ici +3) et de laisser le choix pour
> l'ajustement vertical :
>
> bouge = #(define-music-function (parser location shift) (number?)
> #{
> \once \override TextScript #'extra-offset = #(cons 3 $shift)
> #})
>
> Et je l'insère dans mon code au bon endroit :
>
> \score {
> \relative c' {\clef alto
> c2 d4.^\trille c8 c1 \break %%%position par défaut
> c2 \tra #-2.4 d4.^\trille c8 c1 %%%ajustement vertical pile poil à droite
> du .
> g2 \tra #-2.4 a4.^\trille g8 g1 %%%cet ajustement de -2.4 ne convient pas
> pour d'autres notes
> \bar "|."}}
Bon alors, plusieurs remarques/questions :
a. je suppose que la fonction "bouge" du dessus correspond à "tra"
en dessous, juste ?
b. votre commande \trille indique bien, * intrinsèquement*, une
indication de trille (i.e. le musicien jouera un trille) ?
Dans ce cas, pourquoi ne pas redéfinir le Script "trill" pour qu'il
corresponde à ce que vous souhaitez faire, en élaborant une solution
sur base du code de Cécile ?
@Cécile : c'est brillant, j'ai appris plein de choses grâce à votre
code, merci !
J'y vois 2 avantages :
1. solution basée sur Script et non TextScript (voir plus haut) ;
2. si votre indication "comma" après la note correspond bien à un
trille, alors il vous sera très aisé de produire une version
"ancienne" (trill = "comma" à droite de la note) et "moderne"
(trill = "tr" au-dessus de la note) à partir d'une même source :
il suffit de supprimer votre redéfinition de "trill".
Problème : le "X-offset" oblige une distance fixe entre la tête de
note et le "trill" (donc ne tient pas compte s'il y a un '.' ou non).
#(define my-script-alist
(append '(
("trill" . (
(script-stencil . (feta . ("rcomma" . "rcomma")))
(avoid-slur . around)
(padding . -2)
(quantize-position . #t)
(side-relative-direction . -1)
(X-offset . 3)
) )
) default-script-alist)
)
\layout {
\context {
\Score
scriptDefinitions = #my-script-alist
}
}
\score {
\relative c' {
\clef alto
c2 d4.\trill c8 c1 \break %% OK
c2 d4.\trill c8 c1 %% OK
g2 a4.\trill g8 g1 %% OK, pile poil à droite du .
\bar "|."
}
}
--
Xavier Scheuer <address@hidden>