Subject: markup positionné par rapport à une note

From: Editions IN NOMINE <[email-masked]>
Date: Tue, 04 May 2010 16:59:49 +0200

Ub9.04+2.13

Bonjour à tous !

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é
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 ?)
3. encapsuler tous les override que je pressens dans la définition de trille

Ca fait un peu "demande de kit tout prêt à poser", je vous l'accorde, 
mais j'ai bidouillé une bonne partie de l'après midi pour trouver 
comment faire (jusqu'à essayer de détourner l'outil \finger, c'est vous 
dire), mais là, je suis las, las, las...

Merci d'avance !

JMarc

---

From: Cécile Huneau <[email-masked]>
Date: Tue, 04 May 2010 17:56:54 +0200

Si je répondais à la liste ce serait plus intelligent non ?
---

Très rapidement, et pas vraiment "kit prêt à poser", j'utilise la 
méthode ci-dessous pour les modifications de propriétés des ornements.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%                                                               %%%
%%%            Définition des propriétés des ornements            %%%
%%%                                                               %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%    Définition des ornements
%%    Modification des propriétés des symboles usuels et définition des 
nouveaux
#(define my-script-alist
    (append '(
        ("prall" . (
            (script-stencil . (feta . ("prall" . "prall")))
            (avoid-slur . around)
            (padding . 0.2)
            (quantize-position . #t)
            (side-relative-direction . -1)
        ) )
        ("stopped" . (
            (script-stencil . (feta . ("stopped" . "stopped")))
            (avoid-slur . around)
            (slur-padding . 0.1)
            (padding . 0.2)
            (quantize-position . #t)
            (side-relative-direction .  -1)
        ) )
    ) default-script-alist)
)

\layout {
    \context {
        \Score
            scriptDefinitions = #my-script-alist
    }
}

Et puis vu que nous sommes dans la même époque j'ai ce genre de trucs 
aussi :

%%%    Ornements à la Geminiani
gemMordent = ^\markup { \hspace #-0.05 \translate #(cons 0 -3) \fontsize 
#5 "'" \translate #(cons -1.8 -3.35) \fontsize #5 "'" }
gemt = ^\markup { \hspace #0 \translate #(cons 0 -2) \italic "t" }

J'ai aussi un bricolage pour les ports de voix et pincés utilisant 
l'outil parenthèses... avec un petit bug dans la gestion des notes 
altérées et/ou pointées mais c'est déjà une base.
Cécile

Editions IN NOMINE a écrit :
> Comme indiqué dans le titre, mais plus explicitement, je cherche à 
> faire 3 choses en une :
>
> ce trille soit toujours placé identiquement relativement à sa note 
> (avec anchor ?)
> comment faire (jusqu'à essayer de détourner l'outil \finger, c'est 
> vous dire), mais là, je suis las, las, las...
>
> Merci d'avance !
>
> JMarc
> ------------------------------------------------------------------------
>
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> http://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: Editions IN NOMINE <[email-masked]>
Date: Wed, 05 May 2010 11:08:56 +0200

Bonjour à toutes et à tous.

Merci à Cécile pour sa réponse, qui m'a incité à e (re)plonger et dans 
la doc et dans mon disque dur pour retrouver d'anciens tests...

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 "|."}}

Conclusion : on tient le bon bout MAIS : j'aurais souhaité avoir un 
ajustement automatique au niveau de la noteHead, par exemple, ce qui me 
permettrait d'éviter l'ajustement manuel à chaque trille (il y en a 
partout !)

*Question, donc :* sauriez-vous comment récupérer la valeur de la 
hauteur d'une note sur la portée (son Y), que je puisse la manipuler et 
l'insérer dans la définition de "bouge" ? (je pense que c'est dans les 
sous couches de Lilypond, et j'ai un peu peur de plonger à vrai dire...)

Merci d'avance pour votre aide !

JMarc

On 04/05/2010 17:56, Cécile Huneau wrote:
> %%    Modification des propriétés des symboles usuels et définition 
> des nouveaux
> #(define my-script-alist
>    (append '(
>        ("prall" . (
> gemMordent = ^\markup { \hspace #-0.05 \translate #(cons 0 -3) 
> \fontsize #5 "'" \translate #(cons -1.8 -3.35) \fontsize #5 "'" }
>> 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 ?)

---

From: Xavier Scheuer <[email-masked]>
Date: Wed, 5 May 2010 20:43:26 +0200

> Bonjour à tous !

Salut !

> 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

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

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

> trille = \markup {\musicglyph #"scripts.rcomma" }
>
> 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?)
>     #{
>     #})
> 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

\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 <[email-masked]>

---

From: Editions IN NOMINE <[email-masked]>
Date: Thu, 06 May 2010 10:00:55 +0200

Avant toute chose : bravo et merci ! Je faisais chauffe rla gomme depuis 
un bon moment sur ce casse-tête, et là, je peux enfin partir comme une 
flèche !
> http://code.google.com/p/lilypond/issues/detail?id=888
Pas grave : je vais me débrouiller en modifiant la fonte si besoin. 
Merci pour l'info.
> des éléments "outside-staff".

Ceci me fait donc comprendre que je n'arrive pas à abaisser les 
TextScripts dans les lignes de Staff !

> http://lilypond.org/doc/v2.12/Documentation/user/lilypond/The-tweak-command
Tout à fait : je n'avais pas capté correctement la différence. Non, en 
réalité, je n'ai jamais correctement lu ces deux dernières grosses 
parties de la doc : il me semble que le temps est venu que je m'y plonge 
gouluement...

>   a. je suppose que la fonction "bouge" du dessus correspond à "tra"
Tout à fait : mille excuses !
>     g2 a4.\trill g8 g1  %% OK, pile poil à droite du .
Ca maaaaarche ! Au pire, je créerai une autre définition pour les notes 
sans point, maintenant que je maîtrise totalement (hum)...

Bon ! A la lumière de vos éclaircissements, je me rends compte être 
rentré dans le domaine de la gravure proprement dite, bien plus complexe 
à appréhender que la "simple" saisie de notes... Ce qui est parfaitement 
passionnant, d'ailleurs.

Merci encore et certainement à bientôt !

JMarc

---

From: Editions IN NOMINE <[email-masked]>
Date: Thu, 06 May 2010 14:22:38 +0200

J'ai retrouvé d'où venait mon souvenir d'étirement de glyphs. Il est 
possible de le faire à partir d'.eps :

trembler = \markup {\epsfile #0 #1 #"trembler.eps" }

Le \epsfile #X #Y permettant de mettre à la bonne échelle l'.eps en 
question.

A bientôt

JMArc

---

From: Nicolas Sceaux <[email-masked]>
Date: Fri, 7 May 2010 23:19:13 +0200

Le 4 mai 2010 à 17:56, Cécile Huneau a écrit :

> J'ai aussi un bricolage pour les ports de voix et pincés utilisant l'outil parenthèses... avec un petit bug dans la gestion des notes altérées et/ou pointées mais c'est déjà une base.

J'ai quelque chose d'assez satisfaisant en magasin pour ça, et qui décale
les altérations ou les points.

Le code, qui nécessite une version 2.13.xx récente, se trouve ici :
 <http://github.com/nsceaux/nenuvar/blob/master/common/side-ornementations.ily>

Après ça s'utilise comme ça :

\include "side-ornementations.ily"

{
  \parc bes'4.
  \parb c''!8
  \para d''4.
  <\pralla c'' \pralla e''>8
}

Nicolas

---

From: Xavier Scheuer <[email-masked]>
Date: Fri, 7 May 2010 23:47:58 +0200

2010/5/7 Nicolas Sceaux <[email-masked]> :

> J'ai quelque chose d'assez satisfaisant en magasin pour ça, et qui
> décale les altérations ou les points.
>
> [...]

Salut !

Je suis bien conscient que j'abuse, mais il n'y aurait pas moyen de :

  1. en faire une commande à insérer *après* la note (comme le \prall
     normal, je déteste les commandes qui doivent s'insérer avant) ;
  2. l'ajouter au LSR ?

:D
Merci d'avance,
Xavier

---

From: Nicolas Sceaux <[email-masked]>
Date: Fri, 7 May 2010 23:58:41 +0200

>     normal, je déteste les commandes qui doivent s'insérer avant) ;

Ca me gêne aussi que ce soit à l'envers par rapport aux articulations
habituelle, mais je n'ai trouvé de moyen de faire comme ça.

>  2. l'ajouter au LSR ?

Pour parler franchement, cette interface me file de l'urticaire.
Par ailleurs, la version de LilyPond requise n'est pas supportée par
LSR.

---

From: Editions IN NOMINE <[email-masked]>
Date: Wed, 12 May 2010 13:33:37 +0200

Bonjour !

J'ai laissé (momentannément) tomber la création d'une fonte kuhnel.otf 
(créée avec FontForge, mais impossible de l'installer : ce n'est pas un 
pb lily...), donc je travaille à partir d'éléments .eps.

J'aimerais utiliser votre solution mais à partir d'un trille.eps. 
J'imagine qu'il me faut modifier la ligne :

par exemple en faisant un truc du genre :

(script-stencil . (\epsfile #1.1 #1.5 #"trille.eps")

mais bon, je n'ai pas le niveau pour espérer y réussir, je crois (je 
commence tout juste à apprendre Scheme, ne serait-ce que pour comprendre 
ce que vous m'écrivez...). 9a doit être un peu plus compliqué

Voici le code que j'ai essayé (trille.eps est en PJ, c'est un rcomma un 
peu torturé) :

\version "2.13"
#(set-global-staff-size 20)

#(define my-script-alist
  (append '(
      ("trill" . (
          (script-stencil . (\epsfile #1.1 #1.5 #"trille.eps"))
          (avoid-slur . around)
          (padding . -2)
          (quantize-position . #t)
          (side-relative-direction . -1)
          (X-offset . 3)
      ) )
  ) default-script-alist)
)

\score {
\relative c' {\clef alto  c2 d4.\trill c8 c1}

\layout {
\context {
      \Score

Désolé de vous solliciter autant, mais je suis ent rain de poser les 
bases de toute la suite, et il me faut vraiment réussir à faire 
papa/maman avec Lily...

Merci d'avance !

JMarc