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: Wed, 14 Jan 2009 23:58:52 +0100
User-agent: Thunderbird 2.0.0.19 (Windows/20081209)

Gilles THIBAULT a écrit :

Eh bien, c'est possible, mais c'est pas sûr que se soit souhaitable car
c'est pas très joli.(voir image ci-jointe)...
Je ne vois en effet pas d'autre solutions, pour arriver à ce résultat, que de rapprocher les 2 portées, ce qui peut se faire en reduisant la valeur de
\Staff.VerticalAxisGroup #'minimum-Y-extent
( (-4 . 4)  par défaut) .
Pour faire l'image jointe, j'ai simplement ajouté au début de chaque \Staff
la ligne suivante :

\override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-1 . 1).

Gilles



Bonsoir Gilles
et merci pour cette réponse rapide.

Tu as bien compris le problème posé mais effectivement, la solution de rapprocher les mesures n'est pas lisible et contre productive par rapport à l'enseignement des notes.

En fait, le but est de déplacer le do' (clé de sol) vers le bas afin qu'il soit bien au centre (je ne sais pas nommer autrement cette note).
Si le do' vient de la clé de fa, il faut alors le remonter.
Je suis sur la piste et deux heures de plus m'ont fait bien avancer... mais je débute autant en scheme et LilyPond qu'en musique.

Voici mes idées :
- créer une fonction du même genre que celle des couleurs qui sera appelée à chaque dessin de la note - la fonction teste la position de la note sur la portée (le mieux c'est un test sur la note elle même, mais je n'ai pas d'exemple pour apprendre à le faire). - la fonction retourne un déplacement vertical de la note (-y, +y ou 0) suivant qu'on est sur un do de telle ou telle portée ou sur une autre note.
- le résultat de la fonction est évalué pour chaque note

Une note étant un objet graphique sur la portée, on peut utiliser la propriété suivante pour la déplacer (merci la doc) :
  extra-offset (pair of numbers)
C'est un décalage (en position sur staff) pour déplacer l'objet. Ce décallage n'intervient pas dans les calculs de positonnement.
Ainsi, on devrait avoir quelque chose du genre :
\override Staff.NoteHead #'extra-offset = #deplacer
Avec la fonction deplacer qui fourni un décalage positif, négatif ou null.

Voici donc un premier jet très proche de ce que je veux obtenir.
Mais il reste encore les petits traits noir à colorier et déplacer... et là je ne connais pas leur nom dans LiliPond. De plus l'utilisation du modulo pour trouver les notes à déplacer n'est pas bon. Un adressage absolu serait plus simple (soit quelle est la 'staff-position du do' de la clé de sol et celle du do' de la clé de fa).

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)
 "Deplace la note si c'est un do"
 (let ((st-position (modulo (ly:grob-property grob 'staff-position) 7) ))
   (cond
     ((= st-position 1) '(0 . -1.25))
     ((= st-position 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
   )
 )
)
nobar = {
   \override Staff.NoteHead #'color = #colorier
   \override Staff.NoteHead #'extra-offset = #deplacer
   \override Staff.TimeSignature #'stencil = ##f
   \override Staff.Stem #'transparent = ##t
}


\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' si  \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
   % modifier l'espace libre entre Staff, le défaut est #'(-4 . 4)
   % ainsi, le Staff s'étend entre -4 et +4 de chaque côté de son axe
   % \override VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 6)
 }

}

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

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

 >>
}

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

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

 >>
}

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









reply via email to

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