Notes en couleur

Bonjour a tous.

J'aimerais coloriser les têtes de notes altérées.

Voici le code

\relative c'
{
\clef treble
\Global
\override NoteHead.color = #magenta fis'8 \override NoteHead.color = #black e
\override NoteHead.color = #magenta fis4 \override NoteHead.color = #black d8
a b2 8 g a2

\override NoteHead.color = # magenta fis4 \override NoteHead.color = #black
<b, g'> \override NoteHead.color = #magenta fis' \override NoteHead.color = #black g
e4. e'8 \override NoteHead.color = # magenta cis \override NoteHead.color = #black a8
4 g \override NoteHead.color = #magenta fis \override NoteHead.color = #black g
< fis a> <g b> a8 b a e g \override NoteHead.color = #magenta fis fis

\override NoteHead.color = #black g
\override NoteHead.color = #magenta fis \override NoteHead.color = #black d e4 d2.
}

Plutôt qu'écrire \override NoteHead.color = #magenta, j'aimerai écrire par exemple: Vert

et Vert contiendrait la chaine : \override NoteHead.color = #magenta

de plus pour l'accord <fis a> j'aimerai avoir que le fis en magenta pas tout l'accord

J'espère que ma demande est claire.

Bon samedi.

Christian

Pour coloriser une note d'un accord j'ai trouvé c'est :

\tweak color

A+

···

Le 26/11/2022 à 16:26, Christian LE BARS a écrit :

Bonjour a tous.

J'aimerais coloriser les têtes de notes altérées.

Voici le code

\relative c'
{
\clef treble
\Global
\override NoteHead.color = #magenta fis'8 \override NoteHead.color = #black e
\override NoteHead.color = #magenta fis4 \override NoteHead.color = #black d8
a b2 8 g a2

\override NoteHead.color = # magenta fis4 \override NoteHead.color = #black
<b, g'> \override NoteHead.color = #magenta fis' \override NoteHead.color = #black g
e4. e'8 \override NoteHead.color = # magenta cis \override NoteHead.color = #black a8
4 g \override NoteHead.color = #magenta fis \override NoteHead.color = #black g
< fis a> a8 b a e g \override NoteHead.color = #magenta fis fis

\override NoteHead.color = #black g
\override NoteHead.color = #magenta fis \override NoteHead.color = #black d e4 d2.
}

Plutôt qu'écrire \override NoteHead.color = #magenta, j'aimerai écrire par exemple: Vert

et Vert contiendrait la chaine : \override NoteHead.color = #magenta

de plus pour l'accord j'aimerai avoir que le fis en magenta pas tout l'accord

J'espère que ma demande est claire.

Bonjour Christian,

Tu peux tout simplement mettre le \override dans une variable (oui,
ça marche !).

vert = \override NoteHead.color = #magenta

(Au passage, il ne vaudrait pas mieux renommer la variable
en « magenta » plutôt que « vert » ?)

Mais est-ce que tu ne serais pas encore plus content que
ce soit automatique ?

\version "2.22.2"

\layout {
\context {
\Staff
\consists
#(lambda (context)
(make-engraver
(acknowledgers
((rhythmic-head-interface engraver grob source-engraver)
(let* ((cause (event-cause grob))
(pitch (ly:event-property cause 'pitch))
(alter (ly:pitch-alteration pitch)))
(if (not (zero? alter))
(let ((step-alter (cons (ly:pitch-steps pitch)
alter))
(key-sig (ly:context-property context 'keyAlterations)))
(if (not (member step-alter key-sig))
(set! (ly:grob-property grob 'color)
(assq-ref (ly:grob-property grob 'details)
'altered-color))))))))))
}
}

alteredColor = \override NoteHead.details.altered-color = \etc

%%% Exemple :

\relative {
\key d \minor
\alteredColor #magenta
d'8 e fis g a bes a fis
}

Cordialement,
Jean

Bonsoir Jean.

merci pour ta solution, cependant elle n'est pas complète ,

si j'ai bien le fa dièse de la 5eme ligne je n'ai pas le fa dièse du 1er intervalle.

remarque: je suis en ré major pas en ré mineur.

voici ton code intégré dans ma partition:

\version "2.22.2"

%--------------------------------------------
\layout {
\context {
\Staff
\consists
#(lambda (context)
(make-engraver
(acknowledgers
((rhythmic-head-interface engraver grob source-engraver)
(let* ((cause (event-cause grob))
(pitch (ly:event-property cause 'pitch))
(alter (ly:pitch-alteration pitch)))
(if (not (zero? alter))
(let ((step-alter (cons (ly:pitch-steps pitch)
alter))
(key-sig (ly:context-property context 'keyAlterations)))
(if (not (member step-alter key-sig))
(set! (ly:grob-property grob 'color)
(assq-ref (ly:grob-property grob 'details)
'altered-color))))))))))
}
}
%-----------------------------------------------------------
alteredColor = \override NoteHead.details.altered-color = \etc
%------------------------------------
Global=
{
\numericTimeSignature
\time 3/4
\key d\major
\alteredColor #magenta
}
%-------------------------------------------
Droite =
\relative c'
{
\Global

fis&#39;8  e  fis4  d8 a b2 8 g a2  fis4 &lt;b, g&#39;&gt;   fis&#39;  g

e4. e'8 cis a8 4 g fis g < fis a> <g b> a8 b a e g fis fis g
fis d e4 d2.
}
%-----------------------------------
Gauche =
\relative c
{
\clef bass
\Global
\set Staff.pedalSustainStyle = #'mixed
d4\sustainOn b'8 c a4 g,\sustainOff g'8 b d,4 d a' a e,2 b'4
a g' e d a' d, e,2 b'4 a g' e d a' g d, d'2
}
%------------------------------------------
\score
{
<<
% \Accords
\new PianoStaff
<< % les portées piano
\new Staff { \Droite }
\new Staff { \Gauche }
>>
>>
\layout { indent= 0}
}

je te souhaite une bonne soirée.

Cordialement Christian

Le 27/11/2022 à 20:37, Christian LE BARS a écrit :

Bonsoir Jean.

merci pour ta solution, cependant elle n'est pas complète ,

si j'ai bien le fa dièse de la 5eme ligne je n'ai pas le fa dièse du 1er intervalle.

remarque: je suis en ré major pas en ré mineur.

voici ton code intégré dans ma partition:

Bonsoir Christian,

D'une part, j'avais mal compris ce que tu voulais : je pensais que tu cherchais
à colorier les notes qui ont une altération accidentelle (qui n'est pas dans
l'armure). D'autre part, je me suis planté dans mon code, en confondant les fonctions
ly:pitch-notename et ly:pitch-steps.

S'il ne s'agit que de colorier toutes les notes qui sont jouées avec un
dièse ou un bécarre, c'est beaucoup plus simple :

\version "2.22.2"

%--------------------------------------------
\layout {
\context {
\Voice
\override NoteHead.color =
#(lambda (grob)
(and (not (zero? (ly:pitch-alteration (ly:event-property (event-cause grob) 'pitch))))
(assq-ref (ly:grob-property grob 'details) 'altered-color)))
}
}
%-----------------------------------------------------------
alteredColor = \override NoteHead.details.altered-color = \etc
%------------------------------------
Global=
{
\numericTimeSignature
\time 3/4
\key d\major
\alteredColor #magenta
}
%-------------------------------------------
Droite =
\relative c'
{
\Global

fis'8 e fis4 d8 a b2 8 g a2 fis4 <b, g'> fis' g
e4. e'8 cis a8 4 g fis g < fis a> a8 b a e g fis fis g
fis d e4 d2.
}
%-----------------------------------
Gauche =
\relative c
{
\clef bass
\Global
\set Staff.pedalSustainStyle = #'mixed
d4\sustainOn b'8 c a4 g,\sustainOff g'8 b d,4 d a' a e,2 b'4
a g' e d a' d, e,2 b'4 a g' e d a' g d, d'2
}
%------------------------------------------
\score
{
<<
% \Accords
\new PianoStaff
<< % les portées piano
\new Staff { \Droite }
\new Staff { \Gauche }

\layout { indent= 0}
}

Cordialement,
Jean

Bonjour Jean

Voila c'est exactement ce que je recherchais, merci.

C'est de ma faute il fallait que je te dise ce que je voulais exactement,

tu ne pouvait pas deviner.

Le but c'est quand je suis dans l'orchestre et que cela va vite(pour moi) ,

le changement de couleur attire mon attention pour éviter une fausse note

Bonne journée

cordialement

Christian

bonjour Jean

Encore un truc que je ne comprend pas!

J'ai inséré ton code dans une autre partition (la Mer de Trenet);

Hélas des si bémol sont oubliés

voici le code:\version "2.22.1"
%--------------------------------------------
\layout {
\context {
\Voice
\override NoteHead.color =
#(lambda (grob)
(and (not (zero? (ly:pitch-alteration (ly:event-property (event-cause grob) 'pitch))))
(assq-ref (ly:grob-property grob 'details) 'altered-color)))
}
}
%-----------------------------------------------------------
alteredColor = \override NoteHead.details.altered-color = \etc
%--------------------------------------------
Global=
{
\numericTimeSignature
\time 4/4
\key f\major
\alteredColor #magenta
}
%------------------------------------------
LaMainDroite =
\relative c''
{
\Global
\clef "treble"
<<
{ a'4^5^1(f^3)f(d)f(d)d(bes)d(bes)bes(g)r4 c'^2 ^"MD"f^5 r\fermata }
\\
{c,2 bes a g f ees <bes ees g c>2.\arpeggio -"MG" s4}
>>
r4<a c^1^2>r<a d^1^3>r<d f^3^5>r bes^1r <c f^2^5>r<a d>r<bes d f^1^3^5>r<g' bes,>
}
%-------------------------------------------
\score
{
\new Staff\LaMainDroite
\layout
{
\context
{\Score \override Fingering.color = red}
}
}

ta fonction ne vois pas les si bémol 3eme ligne§

Pourquoi?

Par avance merci

Christian

···

Le 28/11/2022 à 13:43, Christian LE BARS a écrit :

ta fonction ne vois pas les si bémol 3eme ligne§

Pourquoi?

C'est normal, mais je reconnais que je t'ai induit en erreur par ma
façon d'écrire le code. C'est la même chose que ce qui se produit
si tu fais

\version "2.22.2"

{
\override NoteHead.color = "red"
c'1 2 4 8 8
<< { c''4 } \ { c'4 } >>
}

Comme tu peux le constater, le \override n'a pas d'effet à l'intérieur
du << >>, ceci parce que \override Objet.propriété = ... est un raccourci
pour \override Context.Objet.propriété = ... où Contexte est le contexte
le plus proche, en l'occurrence Voice. Le \override ne s'applique donc
qu'au contexte Voice qui démarre au début de l'expression { ... }.
Or, la construction << >> crée de nouveaux Voice.

L'une des solutions possibles est de changer « \override NoteHead ... » en
« \override Score.NoteHead... », ce qui donne :

\version "2.22.2"

%--------------------------------------------
\layout {
\context {
\Voice
\override NoteHead.color =
#(lambda (grob)
(and (not (zero? (ly:pitch-alteration (ly:event-property (event-cause grob) 'pitch))))
(assq-ref (ly:grob-property grob 'details) 'altered-color)))
}
}
%-----------------------------------------------------------
alteredColor = \override Score.NoteHead.details.altered-color = \etc
%--------------------------------------------
Global=
{
\numericTimeSignature
\time 4/4
\key f\major
\alteredColor #magenta
}
%------------------------------------------
LaMainDroite =
\relative c''
{
\Global
\clef "treble"
<<
{ a'4^5^1(f^3)f(d)f(d)d(bes)d(bes)bes(g)r4 c'^2 ^"MD"f^5 r\fermata }
\
{c,2 bes a g f ees 2.\arpeggio -"MG" s4}

r4<a c^1^2>r<a d^1^3>r<d f^3^5>r bes^1r <c f^2^5>rr<bes d f^1^3^5>r<g' bes,>
}
%-------------------------------------------
\score
{
\new Staff\LaMainDroite
\layout
{
\context
{\Score \override Fingering.color = red}
}
}

Une autre possibilité est de déplacer le \alteredColor directement
dans le \layout :

\version "2.22.1"

%--------------------------------------------

alteredColor = \override NoteHead.details.altered-color = \etc
\layout {
\context {
\Voice
\override NoteHead.color =
#(lambda (grob)
(and (not (zero? (ly:pitch-alteration (ly:event-property (event-cause grob) 'pitch))))
(assq-ref (ly:grob-property grob 'details) 'altered-color)))
\alteredColor #magenta
}
}

%--------------------------------------------
Global=
{
\numericTimeSignature
\time 4/4
\key f\major
}
%------------------------------------------
LaMainDroite =
\relative c''
{
\Global
\clef "treble"
<<
{ a'4^5^1(f^3)f(d)f(d)d(bes)d(bes)bes(g)r4 c'^2 ^"MD"f^5 r\fermata }
\
{c,2 bes a g f ees 2.\arpeggio -"MG" s4}

r4<a c^1^2>r<a d^1^3>r<d f^3^5>r bes^1r <c f^2^5>rr<bes d
f^1^3^5>r<g' bes,>
}
%-------------------------------------------
\score
{
\new Staff\LaMainDroite
\layout
{
\context
{\Score \override Fingering.color = red}
}
}

Cordialement,
Jean

Merci Jean.

Impeccable!