Subject: Tête de note pleine

From: Remy CLAVERIE <[email-masked]>
Date: Mon, 15 Aug 2016 10:58:26 +0200 (CEST)

Bonjour à tous,

Je voudrais indiquer une hémiole par des têtes de notes pleines, comme c'était souvent l'habitude aux 17è et 18è siecles.

Je ne trouve pas comment faire ; et google non plus :( . Je ne dois pas utiliser les bons mot-clefs. En plus, il me semble que la question a déjà été posée sur cette liste...

L'un de vous pourrait-il me diriger vers le lien ou me guider vers une solution ?

Merci!

Bel été à tous,

Rémy

---

From: Jean-Jacques Gerbaud <[email-masked]>
Date: Mon, 15 Aug 2016 11:09:56 +0200

Le 15/08/2016 à 10:58, Remy CLAVERIE a écrit :
> Bonjour à tous,
>
> Je voudrais indiquer une hémiole par des têtes de notes pleines, comme
> c'était souvent l'habitude aux 17è et 18è siecles.
>
> Je ne trouve pas comment faire ; et google non plus :( . Je ne dois pas
> utiliser les bons mot-clefs. En plus, il me semble que la question a
> déjà été posée sur cette liste...
>

Je ne comprends pas ce que signifie "tête de note pleine" ! Il me semble 
que toutes les tes de notes sont pleines, non ? Sauf, bien sûr, les 
blanches et les rondes !

En tout cas, pour ce qui concerne les têtes de notes de Lilypond, ça se 
trouve là :
> lilyupond.org/doc/v2.19/Documentation/notation/note-heads.fr.html

-- 
JJG

Ecoutez la musique "classique", ça détend et, qui sait, vous pourriez 
aimer !
http://suisseclassique.radio.fr/
découvrez l'histoire de votre famille : http://memoire-des-hommes.fr/

---

From: Remy CLAVERIE <[email-masked]>
Date: Tue, 16 Aug 2016 14:50:33 +0200 (CEST)

Bonjour  Jean-jacques,

Effectivement, toutes les notes sont pleines sauf qq unes : blanches, rondes, breves, longas et maximas.

Et même si ces deux dernières sont plutôt rares en musique ancienne, les autres sont très courantes. 

Pierre a proposée une solution hier que je n'ai pas encore eu le temps de comprendre, mais je vous ferai un retour.

Merci

Bonne journée,

Rémy

 

> Message du 16/08/16 09:58
> De : "Jean-Jacques Gerbaud" 
> A : [email-masked]
> Copie à : 
> Objet : Re: Tête de note pleine
> 
> _______________________________________________
> liste de diffusion lilypond-user-fr
> [email-masked]
> https://lists.gnu.org/mailman/listinfo/lilypond-user-fr
>

---

From: Pierre Perol-Schneider <[email-masked]>
Date: Tue, 16 Aug 2016 19:55:59 +0200

Bonsoir Rémy,

Ci-dessous la commande 'hemiola détaillée (si ça peut aider...) :

hemiola =
#(define-music-function ;; je définis une fonction musicale nommée 'hemiola
  (parser location musique)
  (ly:music?)
    #{
      \override NoteHead #'stencil = %% <= je propose un nouveau 'stencil
pour les têtes de note
        #(lambda (grob)
            (let* ((sz (ly:grob-property grob 'font-size 0.0))
                   (mult (magstep sz)) ;; <= je récupère la taille d'origine
                   (duration (ly:grob-property grob 'duration-log))) ;; <=
je récupère la valeur des notes
                  (case duration
                    ((1) ;; cas où la valeur est 'blanche
                     (ly:stencil-scale ;; je réduit éventuellement la
taille
                       (ly:make-stencil ;; <= je définis un nouveau
stencil...
                        `(path 0.001 ;; ...avec un chemin vectoriel dont
l'épaisseur du trait est de 0.001 px (donc sortie svg possible)
                          `(moveto    0       0
                            curveto   0.000  -0.200   0.060   0.210
0.350   0.365
                            curveto   0.510   0.460   0.700   0.545
1.050   0.545
                            curveto   1.200   0.545   1.380   0.500
1.380   0.270
                            curveto   1.380   0.120   1.290  -0.140
1.120  -0.300
                            curveto   0.870  -0.500   0.520  -0.542
0.320  -0.542
                            curveto   0.200  -0.542   0.000  -0.530
0.000  -0.250
                            closepath)
                          'round 'round #t) ;; mes fins de lignes sont
'round...
                        ;; ...(sans intéret ici mais il faut bien mettre
quelque chose)...
                        ;; ... et mon dessin vectoriel est plein (#t)
                        (cons 0 1.38) ;; je définis une largeur pour le
nouveau stencil
                        (cons 0 .5)) ;; je définis une hauteur pour le
nouveau stencil
                       mult mult)) ;; j'adapte la taille du 'stencil à
celle récuprée plus haut
                    ((0) ;; cas où la valeur est 'ronde
                     (ly:stencil-scale ;; etc. (idem que pour la blanche)
                       (ly:make-stencil
                        `(path 0.001
                          `(moveto    0       0
                            curveto   0.000  -0.350   0.549  -0.545
1.000  -0.545
                            curveto   1.450  -0.545   2.000  -0.340
2.000   0.000
                            curveto   2.000   0.350   1.470   0.545
1.000   0.545
                            curveto   0.530   0.545   0.000   0.350
0.000   0.000
                            closepath)
                          'round 'round #t)
                        (cons 0 2)
                        (cons 0 .5))
                       mult mult))
                    ((-1)  ;; cas où la valeur est 'breve
                     (ly:stencil-scale ;; etc. (idem que pour la blanche)
                       (ly:make-stencil
                        `(path 0.001
                          `(moveto   0      0
                            lineto   0.000  0.710
                            curveto  0.000  0.755  0.035  0.765  0.060
0.765
                            curveto  0.080  0.765  0.110  0.755  0.110
0.701
                            curveto  0.110  0.580  0.140  0.542  0.170
0.542
                            lineto   1.820  0.542
                            curveto  1.865  0.542  1.890  0.600  1.890
0.701
                            curveto  1.890  0.755  1.930  0.765  1.940
0.765
                            curveto  1.960  0.765  2.000  0.755  2.000
0.701
                            lineto   2.000 -0.701
                            curveto  2.000 -0.755  1.960 -0.765  1.940
-0.765
                            curveto  1.930 -0.765  1.890 -0.755  1.890
-0.701
                            curveto  1.890 -0.600  1.865 -0.542  1.820
-0.542
                            lineto   0.170 -0.542
                            curveto  0.140 -0.542  0.110 -0.580  0.110
-0.701
                            curveto  0.110 -0.755  0.080 -0.765  0.060
-0.765
                            curveto  0.035 -0.765  0.000 -0.755  0.000
-0.710
                            closepath)
                          'round 'round #t)
                        (cons 0 2)
                        (cons -0.765 0.765))
                       mult mult))
                    (else (ly:note-head::print grob)) ;; pour toute les
autres valeurs le 'stencil de la tête de note ne change pas
                 )))
        $musique %%% <= l'hémiole concernée
        \revert NoteHead #'stencil %%% après quoi le stencil des têtes de
notes reviennent par défaut
      #})

Cordialement,
Pierre

Le 16 août 2016 à 14:50, Remy CLAVERIE <[email-masked]> a écrit :

> Pierre a proposée une solution hier que je n'ai pas encore eu le temps de
> comprendre, mais je vous ferai un retour.
>
>
>
> Merci
>
>
>
> Bonne journée,
>
>
>
> Rémy
>
>
>
>
>
>
>
>
>
>
>
> > De : "Jean-Jacques Gerbaud" <[email-masked]>

---

From: Remy CLAVERIE <[email-masked]>
Date: Wed, 17 Aug 2016 06:02:05 +0200 (CEST)

Bonjour Pierre,

Merci d'avoir compléter le code par des commentaires. Cela permet de comprendre un peu mieux ce que tu as fait.

On se rend aussi compte de la difficulté de programmer / modifier des variables et des fonctions de Lilypond.

Cela me fait penser à Tex, qui était aussi un peu abscons et que LaTex a rendu plus compréhensible. 

Encore merci,

Bonne journée,

Rémy

> Message du 16/08/16 19:56
> De : "Pierre Perol-Schneider" 

> A : "Remy CLAVERIE" 
> Copie à : "Jean-Jacques Gerbaud" , "lilypond-user-fr" 

Bonsoir Rémy,
Ci-dessous la commande 'hemiola détaillée (si ça peut aider...) :
>       \override NoteHead #'stencil = %% <= je propose un nouveau 'stencil pour les têtes de note
>         #(lambda (grob)
>                    (duration (ly:grob-property grob 'duration-log))) ;; <= je récupère la valeur des notes
>                   (case duration
>                      (ly:stencil-scale ;; je réduit éventuellement la taille 
>                        (ly:make-stencil ;; <= je définis un nouveau stencil...
>                         `(path 0.001 ;; ...avec un chemin vectoriel dont l'épaisseur du trait est de 0.001 px (donc sortie svg possible)
>                           `(moveto    0       0 
>                             curveto   0.000  -0.200   0.060   0.210   0.350   0.365
>                             curveto   0.510   0.460   0.700   0.545   1.050   0.545
>                             curveto   1.200   0.545   1.380   0.500   1.380   0.270
>                             curveto   1.380   0.120   1.290  -0.140   1.120  -0.300
>                             curveto   0.870  -0.500   0.520  -0.542   0.320  -0.542
>                             curveto   0.200  -0.542   0.000  -0.530   0.000  -0.250
>                             closepath) 
>                           'round 'round #t) ;; mes fins de lignes sont 'round...
>                         ;; ...(sans intéret ici mais il faut bien mettre quelque chose)...
>                         (cons 0 1.38) ;; je définis une largeur pour le nouveau stencil
>                         (cons 0 .5)) ;; je définis une hauteur pour le nouveau stencil
>                        mult mult)) ;; j'adapte la taille du 'stencil à celle récuprée plus haut
>                             curveto   0.000  -0.350   0.549  -0.545   1.000  -0.545
>                             curveto   1.450  -0.545   2.000  -0.340   2.000   0.000
>                             curveto   2.000   0.350   1.470   0.545   1.000   0.545
>                             curveto   0.530   0.545   0.000   0.350   0.000   0.000
>                             closepath) 
>                           'round 'round #t)
>                         (cons 0 2)
>                         (cons 0 .5))
>                        mult mult))
>                             curveto  0.000  0.755  0.035  0.765  0.060  0.765
>                             curveto  0.080  0.765  0.110  0.755  0.110  0.701
>                             curveto  0.110  0.580  0.140  0.542  0.170  0.542
>                             lineto   1.820  0.542
>                             curveto  1.865  0.542  1.890  0.600  1.890  0.701
>                             curveto  1.890  0.755  1.930  0.765  1.940  0.765
>                             curveto  1.960  0.765  2.000  0.755  2.000  0.701
>                             lineto   2.000 -0.701
>                             curveto  2.000 -0.755  1.960 -0.765  1.940 -0.765
>                             curveto  1.930 -0.765  1.890 -0.755  1.890 -0.701
>                             curveto  1.890 -0.600  1.865 -0.542  1.820 -0.542
>                             lineto   0.170 -0.542
>                             curveto  0.140 -0.542  0.110 -0.580  0.110 -0.701
>                             curveto  0.110 -0.755  0.080 -0.765  0.060 -0.765
>                             curveto  0.035 -0.765  0.000 -0.755  0.000 -0.710
>                             closepath)
>                           'round 'round #t)
>                         (cons 0 2)
>                         (cons -0.765 0.765))
>                        mult mult))
>                     (else (ly:note-head::print grob)) ;; pour toute les autres valeurs le 'stencil de la tête de note ne change pas
>                  )))
>         \revert NoteHead #'stencil %%% après quoi le stencil des têtes de notes reviennent par défaut
>       #})
> 
>
Cordialement,
Pierre

Le 16 août 2016 à 14:50, Remy CLAVERIE  a écrit :