barzi
Novembre 26, 2022, 3:26
1
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
barzi
Novembre 26, 2022, 3:32
2
Pour coloriser une note d'un accord j'ai trouvé c'est :
\tweak color
A+
···
jeanas
Novembre 27, 2022, 3:00
3
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
barzi
Novembre 27, 2022, 7:37
4
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'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> <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
jeanas
Novembre 27, 2022, 11:07
5
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
barzi
Novembre 28, 2022, 7:24
6
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
barzi
Novembre 28, 2022, 12:43
7
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
···
jeanas
Novembre 28, 2022, 6:51
8
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>r r<bes d
f^1^3^5>r<g' bes,>
}
%-------------------------------------------
\score
{
\new Staff\LaMainDroite
\layout
{
\context
{\Score \override Fingering.color = red}
}
}
Cordialement,
Jean