Bon. Je vais essayer d'avancer un peu, mais j'ai encore besoin d'aide.
Je me suis pastillé la doc sur les fonctions (chapitre 12. LE chapitre 12...),
et notamment le
12.1.3 sur les fonctions à deux variables.
Je pars de l'exemeple de la doc :
manualBeam =
#(define-music-function (parser location beg end)
(number? number?)
#{
\once \override Beam #'positions = #(cons $beg $end)
#})
\relative {
\manualBeam #3 #6 c8 d e f
}
Mettons, pour aller vers mon besoin, que je souhaite fixer le beg à 2. Je
change la fonction
(fonction à 1 variable) et la syntaxe d'appel dans le score :
manualBeam =
#(define-music-function (parser location end)
(number?)
#{
\once \override Beam #'positions = #(cons 2 $end)
#})
\relative {
\manualBeam #6 c8 d e f
}
Ca marche ! Il est donc possible, pour une fonction à 2 variables, d'en fixer
une des deux de façon
définitive.
Donc je me dis : ça va faire pareil pour mon besoin.
Je pars donc de mon besoin initial (merci à Phil !), un peu modifié (je
dédouble les deux variables
comme dans la doc) :
trille = \markup {\musicglyph #"scripts.rcomma" }
trtxt = #(define-music-function (parser location x y) (number? number?)
#{
\once \override TextScript #'extra-offset = #'($x $y)
#})
\score {
\relative c' {
\clef alto
c4 e \trtxt #2 #-3 d^\trille f
\bar "|."
}
}
Et là, vous allez rire, mais ça n'a aucun effet (pas de message d'erreur, mais
aucun effet) : je
pense que je me trompe dans la syntaxe de la fonction...
Quelqu'un aurait-il une idée ?
Pour la suite, je pense que je peux faire comme ci-dessus, en fixant une des
variables (le x).
Merci d'avance !
JMarc
Jean-marc
LEGRAND/CRS/FR/RM/Corp
A
10/07/2007 11:49 Philippe Hézaine <address@hidden>@GROUP
cc
Jean-marc LEGRAND <address@hidden>,
Veuillez répondre à address@hidden
Jean-marc LEGRAND Objet
Re: placement automatique d'un markup(Document
link: Jean-marc LEGRAND)
Super ! Ca commence à s'alléger : je me disais bien qu'il fallait un truc genre
programmation en
local pour y arriver...
Bon : l'ennui, c'est que comme je ne maîtris epas le passage en chinois, je ne
sais pas comment
faire pour fixer la valeur X dans la définition de trtxt.
Ce serait pratique : je n'aurais plus que des instructions du type :
\trtxt #'(-2.7) d^\trille
Là ce serait top !
J'ai essayé :
trtxt = trtxt = #(define-music-function (parser location shift) (pair?)
#{ \once \override TextScript #'extra-offset = #'(2 . -$shift) #})
avec
\trtxt #'(-2.7) d^\t
Pas de message d'erruer (c'est déjà ça !) mais aucun effet : le rcomma est
placé au dessus de la
note, dans l'axe vertical d'icelle...
En tous les cas, merci Phil : c'est un grand pas pour moi !
En fait, il faudrait déjà que je me bouge le popotin pour aller dans la doc !
JMarc
Philippe Hézaine
<address@hidden>
A
09/07/2007 18:11 Jean-marc LEGRAND <address@hidden>,
address@hidden
cc
Objet
Re: placement automatique d'un markup
Jean-marc LEGRAND a écrit :
XP + lily 2.10
Bonjour.
Dans la musique pour viole de gambe, le trille apr le haut est souvent
représenté par le signe
rcomma, placé au même niveau que la tête de la note.
D'un côté c'est cool, pârce que le signe existe dans Feta Font, mais de l'autre
j'ai le problème
suivant : il me faut placer à la main tous les signes rcomma, comme dans
l'exemple ci-dessous :
\version "2.10"
trille = \markup {\musicglyph #"scripts.rcomma" }
\score {
\relative c' {
\clef alto
c4 e \once \override TextScript #'extra-offset = #'(2 . -2.7) d^\trille f
\once \override TextScript #'extra-offset = #'(2 . -2.2) e^\trille g
\once \override TextScript #'extra-offset = #'(2 . -4.7) b,^\trille c
d8 e f4 \once \override TextScript #'extra-offset = #'(2 . -2.2) e2^\trille
\bar "|."
}
}
Ca alourdit méchamment le code !
J'aimerais intégrer à ma définition de trille le déclage de 2 vers la droite.
Mais le top, ce
serait
que le trille se positionne automatiquement à 2 vers la droite, et au niveau
exact de la tête.
Au pire, il serait possible de créer un signe de trille par note, ça ne me
dérange pas : trillea,
trillebes, trillec...
MA vraie question est en fait : comment insérer le \once \override TextScript
#'extra-offset = #'
(X
. Y) dans la définition du trille ?
Bravo par avance !
A bientôt
JMarc
Je ne pense pas que ce soit ce que tu cherches, mais enfin voilà
peut-être une proposition
à enrichir.
\version "2.10"
trille = \markup {\musicglyph #"scripts.rcomma" }
trtxt = #(define-music-function (parser location shift) (pair?)
#{
\once \override TextScript #'extra-offset = $shift
#})
\score {
\relative c' {
\clef alto
c4 e \trtxt #'(2 . -2.7) d^\trille f
\trtxt #'(2 . -2.2) e^\trille g
\trtxt #'(2 . -4.7) b,^\trille c
d8 e f4 \trtxt #'(2 . -2.2) e2^\trille
\bar "|."
}
}
Phil.