lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

EasyHeads avec chiffrage (simple) des intervalles


From: Odalric-Ambrym Maillard
Subject: EasyHeads avec chiffrage (simple) des intervalles
Date: Sat, 6 Oct 2012 20:40:47 +0200

Bonjour,

Voilà, j'aimerais créer un graveur de notes de musiques à la maniere du mode easyHeads (ce mode affiche pour les debutants le nom d'une note à l'interieur du dessin de sa tete)
mais qui puisse afficher, à l'interieur de la note, l'intervalle entre la note courante et une note de référence.
De plus,  j'aimerais que la note de reference ait pour valeur par defaut la fondamentale correspondant a l'armure courante (ex: La en La majeur),
mais puisse etre modifiee. L'idee est de suivre une grille (comme en Jazz).
Pour une progression II V I en La par exemple, j'aimerais pouvoir specifier que la note de reference est un Si, puis un Mi puis un La.
Ensuite, les intervalles seraient chiffrées par rapport a cette note de reference.

Par exemple, au lieu de voir s'afficher (dsl, j'ai pas de dessin...)
(La)   La Si Do Re Mi Fa# Sol,
on aurait par exemple, en choisissant La comme reference (bon, peu importe la notation, du moment que ca reste lisible et explicite)
(La) La(1) Si(2) Do(3-) Re(4) Mi(5) Fa#(6) Sol(7-)

J'espère que la question est suffisamment claire.

Cote solutions, pour l'instant j'ai trouve ici(http://lilypond.org/doc/v2.17/Documentation/notation/note-heads.fr.html)
un graveur chiffre indiquant le degre de la note (mais pas le chiffrage de l intervalle) dans la gamme:

Code
#(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))))))

#(set-global-staff-size 26)

\layout {
  ragged-right = ##t
  \context {
    \Voice
    \consists \Ez_numbers_engraver
  }
}

\relative c' {
  \easyHeadsOn
  c4 d e f
  g4 a b c \break

  \key a \major
  a,4 b cis d
  e4 fis gis a \break

  \key d \dorian
  d,4 e f g
  a4 b c d
}

C'est bien sur un bon debut, notamment je pense que le changement de note de reference se fait deja ici automatiquement lors du changement de grille (cf. \key d \dorian),
mais ca ne fait pas completement ce que je veux pour le chiffrage des intervalles, et surtout, je ne sais pas du tout comment modifier ce graveur
(si je peux comprendre a peu pres la syntaxe, je n'ai strictement aucune idee de la signification des differents noms de proprietes/fonctions).
J'imagine qu'une modification mineure et tres simple pour la plupart d'entre vous permet de faire ce que je veux :)

Pouvez-vous me donner un petit coup de main ?
(Autre pb mineur, le code precedent ne compile pas chez moi ... )

Bonne soirée.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]