Subject: positionnement horizontal de FiguredBass

From: Éditions IN NOMINE<[email-masked]>
Date: Thu, 24 Feb 2011 16:24:56 +0100

Bonjour à toute la troupe !

Encore et encore de la basse chiffrée... J'ai remarqué que quand le 
compile :

\version "2.13"
#(set-global-staff-size 22)
<<
    \new Staff \relative c{\clef bass c4 c c c c2 c c1 c c c \bar "|."}
    \new FiguredBass{\figuremode {
        <5>4 <6 4> <6 5> <_+> <6 4>2 <5> <_+>1 <5> <6 4 2> <6>}}

les chiffres sont alignés sur la gauche des notes. C'est flagrant avec 
les rondes. J'aimerais pouvoir les centrer sur l'axe de la noteHead. 
Après avoir fouillé dans les prop internes, je me tourne vers vous  : 
une idée ?

Merci d'avance !
JMarc
||

---

From: "Gilles THIBAULT" <[email-masked]>
Date: Fri, 25 Feb 2011 11:14:05 +0100

>
> les chiffres sont alignés sur la gauche des notes. C'est flagrant avec les
> rondes. J'aimerais pouvoir les centrer sur l'axe de la noteHead.

Oups, je n'aurai pas pu trouver ça moi-même, mais dans le snippet :
http://lsr.dsi.unimi.it/LSR/Item?id=637
la solution est donnée pour le TextScript. Suffit juste de changer l'
\override pour le BassFigure.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figuredBassCenterOnNote = \override BassFigure #'X-offset =
#(lambda (grob)
   (let* ((paper-col (ly:grob-parent grob X))
          (elts (ly:grob-object paper-col 'elements))
          (rhythmic-head grob))

     (for-each
      (lambda (idx)
        (let ((elt (ly:grob-array-ref elts idx)))
          (if (grob::has-interface elt
                                   'rhythmic-grob-interface)
              (set! rhythmic-head elt))))
      (reverse (iota (ly:grob-array-length elts))))

     (+
      (ly:self-alignment-interface::x-aligned-on-self grob)
      (interval-center
       (ly:grob-robust-relative-extent rhythmic-head rhythmic-head X)))))

<<
      \figuredBassCenterOnNote
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Pas sûr que ce soit très joli ...
Gilles

---

From: Éditions IN NOMINE<[email-masked]>
Date: Mon, 28 Feb 2011 10:00:44 +0100

> Pas sûr que ce soit très joli ...

Pas forcément très joli effectivmeent, mais une excellente piste qui m'a 
permis de créer une petite fonction de ce type, adaptable au cas par cas 
(de toutes les façons, les réglages généraux sont difficiles à appliquer 
quand on (je) commence à couper les cheveux en 4...) :

\version "2.13"

glisser = #(define-music-function
     (parser location padding)
     (number?)
   #{
     \override BassFigure #'X-offset = $padding
   #})

<<%réglages par défaut
    \new Staff \relative c{\clef bass c4 c c c c2 c c1 c c c \bar "|."}
    \new FiguredBass{\figuremode {
        <5>4 <6 4> <6 5> <_+> <6 4>2 <5> <_+>1
        <5> <6 4 2> <6>}}
 
  <<%adaptation au cas par cas
    \new Staff \relative c{\clef bass c4 c c c c2 c c1 c c c \bar "|."}
    \new FiguredBass{\figuremode
        {\glisser #0.1 <5>4 <6 4> <6 5> <_+> <6 4>2 <5> \glisser #0.4 <_+>1
        <5> <6 4 2> <6>}}

Merci pour ton aide !

JMarc