[Top][All Lists]
[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
}
>>
}
%%%%%%%%%%%%%%%%
- Centrer une note entre deux portées, Bigane, 2009/01/14
- Re: Centrer une note entre deux portées, Gilles THIBAULT, 2009/01/14
- Re: Centrer une note entre deux portées,
Bigane <=
- Re: Centrer une note entre deux portées, Gilles THIBAULT, 2009/01/15
- Re: Centrer une note entre deux portées, Bigane, 2009/01/15
- Re: Centrer une note entre deux portées, Gilles THIBAULT, 2009/01/16
- Re: Centrer une note entre deux portées, Bigane, 2009/01/16
- Re: Centrer une note entre deux portées, Bigane, 2009/01/21
- Re: Centrer une note entre deux portées, Gilles THIBAULT, 2009/01/22