Subject: double-stem-for-half-notes

From: Gloops <[email-masked]>
Date: Mon, 11 Feb 2019 16:38:58 -0700 (MST)

Bonjour!
Quelqu'un peut il m'aider à n'appliquer cette fonction qu'au style de tête
de note "xcircle" ,et si possible de manière automatique...
Gilles
%%%%

\version "2.18.2"
\header {
 title = "double-stem-for-half-notes pour xcircle style"
}

#(define (double-stem-for-half-notes grob)
    (let ((stem (ly:stem::print grob)))
    (if (= 1 (ly:grob-property grob 'duration-log))
        (if (= 1 (ly:grob-property grob 'direction))
            (ly:stencil-combine-at-edge stem X LEFT stem 0.3)
            (ly:stencil-combine-at-edge stem X RIGHT stem 0.3))
        stem)))

\score {
 {
  \override NoteHead.style = #'xcircle c''2 c' \defaultNoteHeads c'' c'}
 \layout {
  \context {
   \Voice
 \override Stem.stencil = #double-stem-for-half-notes
  }
 }
 \midi {}
}

%%%%%

--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/

---

From: NOreply <[email-masked]>
Date: Wed, 13 Feb 2019 14:28:33 -0700 (MST)

Bonjour,
Je ne suis pas sûr de bien comprendre la question.
Dans l'exemple ci-dessous, les hampes doubles sont appliquées uniquement aux 
têtes de notes "xcircle".
Dans cet exemple, avec la fonction \OX, les hampes doubles sont ajoutées
automatiquement en même temps que les têtes de notes "xcircle".

http://www.lilybin.com/mhwty4/1

%%%%%%%%%%%%%%
%%%%

\version "2.18.2"
\header {

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
OX = #(define-music-function 
       (parser location m ) 
       (  ly:music? )
       #{  \override NoteHead.style = #'xcircle
           \override Voice.Stem.stencil = #double-stem-for-half-notes 
           $m
           \defaultNoteHeads 
           \undo    \override Voice.Stem.stencil =
#double-stem-for-half-notes 
       #} )

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\score {
  {

    \OX  { c''2 c' } c'' c'}

  \layout { }
  \midi {}
}

%%%%% 

 % ; = )

---

From: Gloops <[email-masked]>
Date: Wed, 13 Feb 2019 17:27:22 -0700 (MST)

Merci beaucoup pour la réponse !
En effet il s'agit bien du résultat désiré...
Mais j'aimerais garder la syntaxe 
%%%%
{ \override NoteHead.style = #'xcircle c''2 c' \defaultNoteHeads c'' c'} 
%%%%
pour que cela fonctionne, soit sans  { \OX  {c''2 c' } c'' c' }
Toutes mes partitions sont notées de cette manière, cela m'éviterais de
toutes les retoucher...
Gilles

---

From: NOreply <[email-masked]>
Date: Wed, 13 Feb 2019 23:38:11 -0700 (MST)

Bonjour,
Je te propose de redéfinir la variable "defaultNoteHeads" de la minière
suivante:

%%%%%%%%%%%
defaultNoteHeads = 
{ 
  \defaultNoteHeads \revert Stem.stencil
}
%%%%%%%%

Ainsi, tu obtiens le résultat souhaité sans retoucher au code.
Voir ici:
http://lilybin.com/dsy03l/1

---

From: Christophe Pochon <[email-masked]>
Date: Thu, 14 Feb 2019 08:15:30 +0100

Joli !
Mais je pense que, si ça convient pour l'exemple, ça ne conviendra pas
partout. Il suffit qu'il y ait des blanches avant le premier xcircle, pour
que cela ne fonctionne plus.
Je pense que ce qu'il faudrait, c'est modifier double-stem-for-half-notes
de façon à pouvoir le nommer double-stem-for-xcircle-noteheads .
Mais avec mes maigres connaissances de scheme, j'ai essayé longuement, sans
succès de comprendre comment filtrer les xcircle, en modifiant la ligne (if
(= 1 (ly:grob-property grob 'duration-log))
Apparemment, le changement de notehead se cache un peu plus profondément,
et ça m'intéresse de savoir comment s'y prendre.

A+

Christophe Pochon

Le jeu. 14 févr. 2019 à 07:38, NOreply <[email-masked]> a
écrit :

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

---

From: Gloops <[email-masked]>
Date: Thu, 14 Feb 2019 04:17:41 -0700 (MST)

Bonjour !
Effectivement Christophe a raison...
J’avais déjà penser à cette solution mais dans la version suivante cela ne
fonctionne pas...
En tout cas merci de participer !
Gilles

\version "2.18.2"
\header {

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
defaultNoteHeads = 
{ 
  \defaultNoteHeads \revert Stem.stencil
}
%%%%%%%%%%%%%%%%%%%%%%%
\score {
 {
  \override NoteHead.style = #'xcircle c''2 c'  \override NoteHead.style =
#'cross c'' c'}
 \layout {
  \context {
   \Voice
 \override Stem.stencil = #double-stem-for-half-notes
  }
 }
 \midi {}
}

%%%%%