markup positionné par rapport à une note

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

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 :

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
------------------------------------------------------------------------

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

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

2010/5/4 Editions IN NOMINE <****@****> :

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 ?

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 <****@****>

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 !

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.
Google Code Archive - Long-term storage for Google Code Project Hosting.
  

Pas grave : je vais me débrouiller en modifiant la fonte si besoin. Merci pour l'info.

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

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

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 ?
GNU LilyPond Notation Reference: 5.3.4 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...

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 ?
  

Tout à fait : mille excuses !

  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 <****@****>

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

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

···

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.
Google Code Archive - Long-term storage for Google Code Project Hosting.

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&gt;

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
}

side-ornementation.png

···

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.

2010/5/7 Nicolas Sceaux <****@****> :

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&gt;

[...]

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 ?

:smiley:
Merci d'avance,
Xavier

···

--
Xavier Scheuer <****@****>

2010/5/7 Nicolas Sceaux <****@****> :

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&gt;

[...]

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) ;

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.

···

Le 7 mai 2010 à 23:47, Xavier Scheuer a écrit :

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 :

(script-stencil . (feta . ("rcomma" . "rcomma")))

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
          scriptDefinitions = #my-script-alist
          }
  }
}

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
Xavier Scheuer wrote:

trille.eps (2.61 KB)

···

2010/5/4 Editions IN NOMINE <****@****> :
  #(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 <****@****>