Subject: Texte aligné sur dynamic (was: Utilisation de la commande make-dynamic-script)

From: Xavier Scheuer <[email-masked]>
Date: Thu, 3 Dec 2009 12:26:53 +0100

Le Thu, 3 Dec 2009 11:25:54 +0100,
Valentin Villenave <[email-masked]> a écrit :

>   \override DynamicText #'self-alignment-X = #LEFT
> ou
>   \override DynamicText #'self-alignment-X = #-1

Certes, mais malheureusement ils ne sont pas centrés sur le 'p', 'f'
(je veux dire que le 'p', 'f', n'est pas centré en-dessous de la note
comme dans le cas d'un "simple" \p ou \f ).

> Est-il possible de justifier ces expressions à gauche au lieu de les
> centrer ?

Il y a un snippet (d'ailleurs repris dans la documentation)
concernant "l'alignement horizontal des dynamics personnalisés" :
http://lsr.dsi.unimi.it/LSR/Item?id=393

> Ou alors, utilisation du hshift, encore fort sombre pour moi ?

C'est ce que j'utilise — "#:hspace 0 #:translate '(8.5 . 0)" pour
être précis (solution n°5 dans le snippet).

Avantage : On peut aligner le dynamic exactement comme on le souhaite
(et pas de drawback, i.e. pas "d'effet de bord").

(Énormes) inconvénients :
  – il faut jouer – *manuellement* – sur la valeur dans le translate
    (pas de "procédure automatique").
  – *chaque* dynamic-script créé doit faire l'objet de ce "traitement".

Je rêve d'un moyen plus simple pour aligner ce genre de dynamics mêlant
l'indication proprement dite ('p', 'f') et le texte associé ("dolce",
"più").

Quelque chose comme
  c4\p\dynamicText "dolce"
qui l'alignerait /comme il faut/.[1]

@Valentin
Tu sais s'il y a une issue dans ce style sur le tracker (ou si ça a
déjà été discuté) ?
Je suis prêt à proposer un "bounty" de 50€ pour ce genre de
fonctionnalité.[2]

Xavier
________

[1] Et un idéalement aussi un  c4\preDynamicText "più"\f  pour le cas où
    le texte est avant le dynamic.
[2] Même si je dois bien avouer que je ne sais pas trop comment
fonctionne ce système de "fonctionnalités sponsorisées".

-- 
Xavier Scheuer <[email-masked]>

---

From: Valentin Villenave <[email-masked]>
Date: Thu, 3 Dec 2009 13:19:44 +0100

> qui l'alignerait /comme il faut/.[1]

Quelque chose comme:

%%% This function was provided by Graham Percival.
#(define (make-dynamic-extra dynamic string)
     (make-music
       'AbsoluteDynamicEvent
       'tweaks
         ;; calculate centering for text
         (list (cons (quote X-offset)
           (+ -0.5 (* -0.5 (string-length dynamic)))))
       'text
         (markup #:whiteout
           #:line (
               dynamic
               #:hspace -0.3
               #:normal-text #:italic string))
      ))

ffdolce = #(make-dynamic-extra "ff" "dolce")

{ a1 a\ffdolce a }
%%%%%%%%%%%%%%
http://repo.or.cz/w/opera_libre.git/blob/HEAD:/definitions/text-functions.ly#l135

>    le texte est avant le dynamic.

Voir ma commande make-extra-dynamic.

> fonctionne ce système de "fonctionnalités sponsorisées".

Pour l'instant : pas.

Cordialement,
Valentin

---

From: Xavier Scheuer <[email-masked]>
Date: Thu, 3 Dec 2009 16:37:06 +0100

Le Thu, 3 Dec 2009 13:19:44 +0100,
Valentin Villenave <[email-masked]> a écrit :

> [...]

Aaah[1], mais pourquoi ce n'est pas :
  – sur le LSR,
  – dans la Doc,
  – directement implémenté dans LilyPond ?!?

Ça rend complètement[2] obsolète le snippet
http://lsr.dsi.unimi.it/LSR/Item?id=393
non ?[3]

Petite question supplémentaire : est-ce que ça tiens compte du dynamic
renseigné pour la sortie MIDI ?  (oui, c'est un petit détail)
En tout cas chapeau à Graham (et merci à Valentin).

> Voir ma commande make-extra-dynamic.

Mmh, elle ne donne pas le résultat escompté (pas celui que j'espérais
en tout cas).

J'ai changé le  (markup #:rounded-whiteout 1  en  (markup #:whiteout
(sinon j'avais une erreur, et puis j'ai vu que c'est ce que tu avais
fait également dans celui que tu as envoyé).
C'est centré sur le texte alors que j'aimerais que ce soit toujours
centré sur le dynamic, mais avec le texte à gauche (au lieu de à droite
précédemment).

piuff = #(make-extra-dynamic "più" "ff")
% centré sur le "ff" et pas sur le "più"

Malheureusement mes (ou plutôt mon absence de) connaissances en Scheme
me permettent tout juste de modifier en surface une fonction existante
mais pas d'en comprendre le fonctionnement afin de créer les fonctions
que je souhaiterais.[4]

> > Même si je dois bien avouer que je ne sais pas trop comment

Ah OK, dommage.

Merci beaucoup,
Xavier
________

[1] Cri de surprise, joie mais aussi de ne pas avoir eu connaissance de
    cette fonction plus tôt.
[2] En partie seulement ?
[3] Ou au moins ça mérite d'y figurer en bonne place !
[4] En attentant le tutoriel vidéo de Valentin Villenave.

---

From: Valentin Villenave <[email-masked]>
Date: Thu, 3 Dec 2009 19:51:59 +0100

>  – directement implémenté dans LilyPond ?!?

Parce qu'une toute nouvelle infrastructure pour les nuances composites
a été implémentée qui n'oblige plus à ce genre de hack:
http://code.google.com/p/lilypond/issues/detail?id=817

> http://lsr.dsi.unimi.it/LSR/Item?id=393

Non, mais comme partout dans le monde Libre tu as le choix entre
différentes implémentations. Reinhold, Nicolas, et (dans une moindre
mesure) moi-même avons chacun éprouvé le besoin de réinventer la roue
à notre façon :-)

Au demeurant, n'hésite pas à ajouter ce que tu veux au LSR, y compris
ces fonctions.

> renseigné pour la sortie MIDI ?  (oui, c'est un petit détail)

Je crois que oui.

> En tout cas chapeau à Graham (et merci à Valentin).

En fait, il m'a plus ou moins piqué une idée que j'avais utilisée de
façon beaucoup plus tordue (ligne 315 du même fichier). Mais je la lui
ai piquée en retour, na.

> fait également dans celui que tu as envoyé).

Oui. La commande rounded-whiteout est une coquetterie personnelle.

> centré sur le dynamic, mais avec le texte à gauche (au lieu de à droite

Remplace la ligne
(+ -0.5 (* -0.5 (string-length dynamic)))))
par
(- 0.5 (* 1.5 (string-length string)))))

(perso ça ne me dérange pas car je préfère que ce soit toujours centré
sur le premier mot quel qu'il soit).

> mais pas d'en comprendre le fonctionnement afin de créer les fonctions

Ça viendra en bidouillant...

> [4] En attentant le tutoriel vidéo de Valentin Villenave.

Oui bin hein bon. J'ai passé les derniers jours à mettre en ligne 30
minutes de vidéo de mon opéra, je peux pas être au four et au moulin
non plus :)

Valentin

---

From: Xavier Scheuer <[email-masked]>
Date: Fri, 4 Dec 2009 00:35:34 +0100

Le Thu, 3 Dec 2009 19:51:59 +0100,

> http://code.google.com/p/lilypond/issues/detail?id=817

Ah bon, j'avais cru comprendre que Reinhold travaillait sur la syntaxe
des cresc/dim, mais j'ignorais que cela aurait une incidence sur les
nuances composites. Je vais regarder ça plus en profondeur, merci.

> Au demeurant, n'hésite pas à ajouter ce que tu veux au LSR, y compris

Je vais y penser, en effet.

> (- 0.5 (* 1.5 (string-length string)))))

Merci beaucoup* !
 
> sur le premier mot quel qu'il soit).

Mouais, ça dépend peut-être des éditions. En tout cas maintenant je
suis armé que je veuille centrer sur l'un ou sur l'autre.  ;-)

> minutes de vidéo de mon opéra, je peux pas être au four et au moulin

Il manquait le ";-)" à la fin de ma petite pique.
Chouette, ça a l'air bien foutu, avec les sous-titres et les petits
effets (non, je n'ai pas encore regardé, peut-être ce w-e).

Bonne continuation,
Xavier