Subject: \override StrokeFinger

From: Daniel Cartron <[email-masked]>
Date: Tue, 21 May 2013 12:38:03 +0200

Bonjour,

J'ai réussi à faire pas mal de choses avec ça sauf obtenir des numéros de 
doigts soulignés.

Je n'ai pas la 2.17 où il semblerait que ce soit intégré mais la 2.16. 
Changement de version obligatoire ou je peux utiliser \override StrokeFinger 
#'text mais dans ce cas comment ?

Merci

-- 
Cordialement, Daniel Cartron
«  Je voudrais que la terre s'arrête pour descendre. »
Serge Gainsbourg

---

From: elmamyra <[email-masked]>
Date: Tue, 21 May 2013 04:17:47 -0700 (PDT)

Bonjour,
Tu peux utiliser une fonction de rappel avec la commande underline du
markup, comme ceci:

\override StrokeFinger #'before-line-breaking = #(lambda (grob) 
            (ly:grob-set-property! grob 'text (markup #:underline
(ly:grob-property grob 'text)))
        )

Il doit certainement exister d'autres solutions.

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/override-StrokeFinger-tp7579743p7579744.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Tue, 21 May 2013 13:32:24 +0200

> (ly:grob-property grob 'text)))

J'avoue humblement ne pas comprendre comment ça marche mais en tout cas ça  le 
fait...

> Il doit certainement exister d'autres solutions.

Mon idée de départ était de trouver une syntaxe qui marche pour un truc du 
genre : 
\override StrokeFinger #'text = #'\underline
mais ça bien évidemment ça marche pas.

Pourtant on voit bien que dans ta fonction il y a à la fois 'text et 
underline, mais j'ai beau essayer à tâton je n'arrive à rien.

En tout cas merci au moins comme ça j'y arriverai mm si c'est plus  compliqué 
que ce que je pensais.

-- 
Cordialement, Daniel Cartron
« N’est pas cocu qui veut, et nous ne devons épouser que de très jolies femmes 
si nous voulons qu’un jour on nous en délivre. »
Sacha Guitry —  Bloompott, exergue du chapitre 1

---

From: Gazagnes Arnaud <[email-masked]>
Date: Tue, 21 May 2013 13:46:14 +0200

Bonjour !
Quelqu'un saurait-il me dire comme mettre l'accord Ré4 sur une partoche ? (Je bloque sur celui-ci !)
Merci !
AG

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Tue, 21 May 2013 14:36:41 +0200

Bonjour Arnaud,
Ta question manque de précision.
Merci d'envoyer un mini exemple.
Pour le moment je ne peux que te renvoyer ici :
http://lilypond.org/doc/v2.16/Documentation/notation/chord-notation
A+

Le 21 mai 2013 13:46, Gazagnes Arnaud <[email-masked]> a écrit :

> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>
>

---

From: Gazagnes Arnaud <[email-masked]>
Date: Tue, 21 May 2013 15:56:38 +0200

Sur une partition, je lis qu'un accord de guitare (mais je ne joue pas de guitare...) est un Ré4 (comme il existe le mi mineur, que je code e1:m dans le "ChordNames"). Mais je ne connais pas le codage du Ré4.
Question subsidiaire pour les guitaristes : à tout hasard, serait-ce aussi un Ré majeur 7 ?
AG

---

From: Daniel Cartron <[email-masked]>
Date: Tue, 21 May 2013 16:13:13 +0200

Le mardi 21 mai 2013 15:56:38 Gazagnes Arnaud a écrit :
> Sur une partition, je lis qu'un accord de guitare (mais je ne joue pas de
> guitare...) est un Ré4 (comme il existe le mi mineur, que je code e1:m dans
> le "ChordNames"). Mais je ne connais pas le codage du Ré4. 

d:sus4

> Question
> subsidiaire pour les guitaristes : à tout hasard, serait-ce aussi un Ré
> majeur 7 ? AG

amha non

-- 
Cordialement, Daniel Cartron
« Bien-être : état d'esprit produit par la contemplation des ennuis d'autrui. 
»
Ambrose Bierce

---

From: Daniel Cartron <[email-masked]>
Date: Tue, 21 May 2013 16:31:29 +0200

> Il doit certainement exister d'autres solutions.

j'ai trouvé ça
http://lists.gnu.org/archive/html/lilypond-user/2009-04/msg00691.html
où il est dit apparemment qu'on peut écrire son propre fingering::calc-text
mais je ne trouve aucune explication supplémentaire. Qui peut me donner des 
précisions ?...

-- 
Cordialement, Daniel Cartron
« Quand les filles ont les yeux cernés, c'est que la place est prise. »
Willy

---

From: Gazagnes Arnaud <[email-masked]>
Date: Tue, 21 May 2013 17:35:34 +0200

J'obtiens un Ré sus4 mais pas de Ré 4. AG

---

From: Martial <[email-masked]>
Date: Tue, 21 May 2013 18:15:10 +0200

%--------------------------------
chExceptionMusic = {
     <c f g> -\markup \super "Ré4" % :sus4
}

chExceptions = #( append
   ( sequential-music-to-chord-exceptions chExceptionMusic #t)
   ignatzekExceptions)

\score {
   \chords {
   d1:sus4
   }
}

\layout {
   \context {
     \ChordNames
     chordNameExceptions = #chExceptions
   }
}

%--------------------------------
pas de quoi !

-- 
Martial
http://cathemline.org

---

From: Martial <[email-masked]>
Date: Tue, 21 May 2013 18:54:27 +0200

ou
chExceptionMusic = {
     <c e f g> -\markup \super "Ré4" % :sus4
}

\score {
   <<
     \chords {  d1:5.4  }
\chordmode { d1:5.4 }
}

-- 
Martial
http://cathemline.org

---

From: elmamyra <[email-masked]>
Date: Tue, 21 May 2013 13:05:30 -0700 (PDT)

Voici comment est défini stroke-finger::calc-text (Ça se trouve dans le
fichier output-lib.scm):
 
(define-public (stroke-finger::calc-text grob)
  (let ((event (event-cause grob)))
    (or (ly:event-property event 'text #f)
	(vector-ref (ly:grob-property grob 'digit-names)
		    (1- (max 1
                             (min 5 (ly:event-property event 'digit))))))))
 
Ça paraît compliqué à première vu, mais cette procédure retourne le texte du
doigté si il existe déjà ou le texte du doigté en fonction du numéro du
doigt. Ceci grâce à "digit-names" qui est un vector: #(p i m a x).
Le min, max et "1-" serve à s'assurer que le numéro soit bien compris entre
0 et 4 étant donné qu'il y a seulement 5 doigtés dans le vector.
Bon en me relisant je m’aperçois que ce n'est pas si simple.

Si tu veux t'inspirer de cette procédure pour souligner les doigtés il
suffit d'utiliser "markup #:underline", comme dans mon exemple précédent:

#(define (my-stroke-finger::calc-text grob)
  (let ((event (event-cause grob)))
    (markup #:underline (or (ly:event-property event 'text #f)
	(vector-ref (ly:grob-property grob 'digit-names)
		    (1- (max 1
                             (min 5 (ly:event-property event 'digit)))))))))

et dans ton score:
\override StrokeFinger #'text = #my-stroke-finger::calc-text

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/override-StrokeFinger-tp7579743p7579756.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 22 May 2013 06:52:34 +0200

Le mardi 21 mai 2013 13:05:30 elmamyra a écrit :
> doigt. Ceci grâce à "digit-names" qui est un vector: #(p i m a x). Le min,
> max et "1-" serve à s'assurer que le numéro soit bien compris entre 0 et 4
> étant donné qu'il y a seulement 5 doigtés dans le vector.

Je te rassure tout de suite, je n'ai strictement rien compris ;-)

> \override StrokeFinger #'text = #my-stroke-finger::calc-text

ha dommage ça marche pas :

In procedure ly:event-property in expression (ly:event-property event (quote 
text) ...):

: Wrong number of arguments to #<primitive-procedure ly:event-property>

-- 
Cordialement, Daniel Cartron
« Dans la marine on ne fait pas grand-chose mais on le fait de bonne heure. »
Devise Shadock

---

From: elmamyra <[email-masked]>
Date: Wed, 22 May 2013 02:46:22 -0700 (PDT)

Autant pour moi. ly:event-property a changé entre la version 2.16 et 2.17.
Pour la version 2.16 "stroke-finger::calc-text" est:

(define-public (stroke-finger::calc-text grob)
  (let* ((digit (ly:event-property (event-cause grob) 'digit))
	 (text (ly:event-property (event-cause grob) 'text)))

    (if (string? text)
	text
	(vector-ref (ly:grob-property grob 'digit-names)
		    (1- (max (min 5 digit) 1))))))

Du coup tu peux faire: 

#(define (my-stroke-finger::calc-text grob)
  (let* ((digit (ly:event-property (event-cause grob) 'digit))
	 (text (ly:event-property (event-cause grob) 'text)))

    (markup #:underline (if (string? text)
	text
	(vector-ref (ly:grob-property grob 'digit-names)
		    (1- (max (min 5 digit) 1)))))))

La nuit portant conseil, il y a beaucoup plus simple. Tu peux directement
récupérer la sortie de "stroke-finger::calc-text" et appliquer le
"underline":

\override StrokeFinger #'text = #(lambda (grob) 
                                    (markup #:underline
(stroke-finger::calc-text grob)))

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/override-StrokeFinger-tp7579743p7579761.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Daniel Cartron <[email-masked]>
Date: Wed, 22 May 2013 12:22:29 +0200

> (stroke-finger::calc-text grob)))

là ça marche super bien, et c'est plus compact.

ça sera compatible 2.17 ou pas ?

Et un grand merci, tu m'as fait avancer d'un grand pas dans mon projet. Tiens 
d'ailleurs il faudrait que j'en reparle un peu  sur la liste...

-- 
Cordialement, Daniel Cartron
« Sans alcool pas de lucidité. »
Serge Gainsbourg

---

From: elmamyra <[email-masked]>
Date: Wed, 22 May 2013 03:27:14 -0700 (PDT)

Daniel Cartron-2 wrote
> ça sera compatible 2.17 ou pas ?

Oui c'est compatible avec la 2.17.

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/override-StrokeFinger-tp7579743p7579763.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

---

From: Gazagnes Arnaud <[email-masked]>
Date: Wed, 22 May 2013 22:59:46 +0200

Merci pour ces éclairages ! AG