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

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

Re: Centrer une note entre deux portées


From: Bigane
Subject: Re: Centrer une note entre deux portées
Date: Fri, 16 Jan 2009 23:46:12 +0100
User-agent: Thunderbird 2.0.0.19 (Windows/20081209)

Gilles THIBAULT a écrit :
Ben là,on ne voit que la couverture du livre ... Dommage.

J'ai cherché une page du livre mais sans succès.
Il sagit de l'objet LedgerLineSpanner
(c'est pas du tout facile à trouver, d'autant que même la traduction de Ledger (= moise) necessite un dictionnaire français (pour moi en tout cas qui ne suis pas charpentier...)).

Merci du renseignement, j'avais beau cherché je n'arrivait pas à trouver le nom de cet objet. La suite semble encore plus complexe que je ne le pensais : l'objet n'a pas de référence claire avec la note (les notes) pour laquelle il a été créé. L'évaluation des Ledgers commence au début de l'écriture d'une portée (qui peut être multiple). Au bout de la ligne c'est au tour des notes. Puis on recommence pour la portée suivante. Aucune des propriétés de l'objet ne fait référence à une note précise (ce qui est normal en fait, puis qu'il peut être généré pour plusieurs notes). Sa position est connue mais impossible de savoir si elle se situe sous une portée ou au dessus, donc c'est encore négatif de ce côté. Reste une piste : l'objet LedgerLineSpanner supporte l'interface ledger-line-spanner-interface qui possède comme propriété interne une liste de notes (note-heads). On pourrait donc prendre la première note de cette liste et utiliser sa position ou son nom pour déplacer le LedgerLineSpanner. Seulement, mes connaissances en LilyPond sont bien trop faibles pour envisager une telle manipulation.

Autre solution, on peut forcer le do' à toujours provenir de la clé de Sol. Ainsi chaque LedgerLineSpanner est connu d'avance et peut être décalé vers le bas. Là je me heurte à la commande \autochange qui distribue la position du do' en fonction de la note précédente...grr ... le seul moyen serait donc de me passer de cette commande bien sympathique.

Pour ce soir je joue la facilité : je rend invisible le trait alors que je pouvais le déplacer et le colorier. On verra bien pour la solution finale.

Fait nous quand même part de ta solution finale, car elle peut être instructive pour nous.

Voici donc une solution intermédiaire sans LedgerLineSpanner en attendant le remplacement de \autochange.

à bientôt,
Yves

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

\version "2.12.1"
\include "italiano.ly"
#(ly:set-option 'point-and-click #f) % supprime le clic http sur les notes

\paper{
 %paper-width = 2\cm
 top-margin = 3\cm
 bottom-margin = 3\cm
 ragged-last-bottom = ##t
 indent = #0 % évite le retrait de la première portée
 %between-system-padding = #2.0 % espace entre les portées
}


#(define (deplacer grob)
 "Calcule un déplacement de la note si c'est un do"
 (let* ((p (modulo (ly:grob-property grob 'staff-position) 7) ))
   (cond
     ((= p 1) '(0 . -1.25))
     ((= p 6) '(0 .  1.25))
     (else    '(0 . 0))
   )
 )
)
#(define (colorier grob)
 "Colorie la note do en rouge... ne fonctionne que partiellement."
 (let ((mod-position (modulo (ly:grob-property grob 'staff-position) 7) ))
   (case mod-position
     ;; Retourne une couleur selon la position
     ((1) (x11-color 'red ))   ; do
     ((2) (x11-color 'black )) ; re
     ((3) (x11-color 'black )) ; mi
     ((4) (x11-color 'black )) ; fa
     ((5) (x11-color 'black )) ; sol
     ((6) (x11-color 'red   )) ; la  ou do sur clef de Fa
     ((0) (x11-color 'black )) ; si
   )
 )
)
presentation = {
   \override Staff.NoteHead #'color = #colorier
   \override Staff.NoteHead #'extra-offset = #deplacer
}


\header {

 % au centre
 %dedication = ""
 title = \markup { \italic Entrainement }
 subtitle = ""
 %instrument = ""
 %year = ""

 % invisible
 %enteredby = "Moi"

 % a gauche
 %piece = "nom"

 % a droite
 %composer = ""

 % en bas de page
 %copyright = "public domain"

 % tag de lilypond :
 tagline = ""
}


un = {
 do' si  si  do' do' re' re' do' do' si  do' do'  \break
 do' re' re' do' re' do' si  re' si  re' do' re' \bar "|."
}

deux = {
 do' re' do' si  si  do' re' do' do' re' do' re' \break
 do' re' do' si  re' si  re' re' do' si  do' si  \bar "|."
}

\layout {
 ragged-right = ##f

 \context { \Score
   \remove Bar_number_engraver % suppression des numéro de Bar
}
 \context { \Staff
   % tentative de déplacement de LedgerLineSpanner
   %\override LedgerLineSpanner #'color = #red
   %\override LedgerLineSpanner #'extra-offset = #'(0 . -1.25)

   \override LedgerLineSpanner #'stencil = ##f
   \override TimeSignature #'stencil = ##f
   \override Stem #'transparent = ##t
 }

}

\score {
 \new PianoStaff <<
\set PianoStaff.instrumentName = \markup { \bold \huge "1 " } \set Score.defaultBarType = #""
   \new Staff = "up"   {
     \clef treble
     \presentation
     \autochange { \un }
   }

   \new Staff = "down" {
     \clef bass
     \presentation
   }

 >>
}

\score {
 \new PianoStaff <<
\set PianoStaff.instrumentName = \markup { \bold \huge "2 " } \set Score.defaultBarType = #""
   \new Staff = "up"   {
     \clef treble
     \presentation
     \autochange { \deux }
   }

   \new Staff = "down" {
     \clef bass
     \presentation
   }

 >>
}





reply via email to

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