Subject: Degré dans tête de note

From: "[email-masked]" <[email-masked]>
Date: Tue, 23 Apr 2013 14:06:57 +0200

Bonjour,

Je cherche à indiquer le degré dans la tête de note, selon

http://www.lilypond.org/doc/v2.16/Documentation/94/lily-8dbc0cf6.ly

J'ai copié le greffon (engraver) indiqué

#(define Ez_numbers_engraver
(make-engraver
(acknowledgers
((note-head-interface engraver grob source-engraver)
(let* ((context (ly:translator-context engraver))

(tonic-pitch (ly:context-property context 'tonic))
(tonic-name (ly:pitch-notename tonic-pitch))
(grob-pitch
(ly:event-property (event-cause grob) 'pitch))
(grob-name (ly:pitch-notename grob-pitch))
(delta (modulo (- grob-name tonic-name) 7))
(note-names
(make-vector 7 (number->string (1+ delta)))))
(ly:grob-set-property! grob 'note-names note-names))))))

  mais je ne parviens pas à déterminer où placer son invocation

\consists \Ez_numbers_engraver

Voici mon code de base :

\version "2.16.0"

#(set-default-paper-size "a4" 'landscape)

#(set-global-staff-size 28)

\header {

title = "Degré dans tête de note"

subtitle = " "

instrument = "pour guitare"

composer = ""

poet = ""

copyright = " "

tagline = " "

}

%Plugin (engraver) pour numéroter les degré dans la tete de note

#(define Ez_numbers_engraver

(make-engraver

(acknowledgers

((note-head-interface engraver grob source-engraver)

(let* ((context (ly:translator-context engraver))

(tonic-pitch (ly:context-property context 'tonic))

(tonic-name (ly:pitch-notename tonic-pitch))

(grob-pitch

(ly:event-property (event-cause grob) 'pitch))

(grob-name (ly:pitch-notename grob-pitch))

(delta (modulo (- grob-name tonic-name) 7))

(note-names

(make-vector 7 (number->string (1+ delta)))))

(ly:grob-set-property! grob 'note-names note-names))))))

global = {

\key c \major

\time 4/4

%Suppression des numeros de corde

\override StringNumber #'stencil = ##f

}

upper = \relative c' {

\global

e4 f g a

}

lower = \relative c' {

\global

c4\2 d\2 e\2 f\2

}

\score {

\new StaffGroup \with {

\consists "Ez_numbers_engraver"

\consists "Instrument_name_engraver"

instrumentName = "Guitare"

} <<

\new Staff \with {

midiInstrument = "acoustic guitar (nylon)"

} { \clef "treble_8" << \upper \\ \lower >> }

\new TabStaff \with {

stringTunings = #guitar-tuning

} <<

\new TabVoice { \voiceOne \upper }

\new TabVoice { \voiceTwo \lower }

\midi { }

\layout {

\context {

\TabStaff

\override TimeSignature #'style = #'numbered

\override Stem #'transparent = ##t

\override Flag #'transparent = ##t

\override Beam #'transparent = ##t

}

}

}

Merci de votre aide

---

From: Gilles <[email-masked]>
Date: Fri, 26 Apr 2013 15:20:16 +0200

> #(define Ez_numbers_engraver [..]
> Voici mon code de base : [..]

1-
J'ai eu beaucoup de mal a découvrir pourquoi le code donné ne marchait pas.
C'est parce-qu'il faut mettre en début de notre musique \easyHeadsOn.
(Dans \global par exemple ça marche)

\easyHeadsOn est defini dans property-init-ly de la manière suivante.
easyHeadsOn = {
   \override NoteHead #'stencil = #note-head::brew-ez-stencil
   \override NoteHead #'font-size = #-8
   \override NoteHead #'font-family = #'sans
   \override NoteHead #'font-series = #'bold
}
Le fonction stencil habituelle (dont je ne connais pas le nom), n'utilise  
pas la propriété 'note-names des têtes de notes. Seule la fonction  
spéciale ci-dessus l'utilise.

2- Mauvaise syntaxe pour \consists \Ez_numbers_engraver.
En principe, c'est \consists "Ez_numbers_engraver"

3- Le contexte en principe pour cet engraver c'est Voice mais je n'ai pas  
testé de le mettre dans un contexte supérieur, StaffGroup par ex.

-- 
Gilles