Alignement des chiffres en basse chiffrée

Bonsoir à toute la communauté!
Je suis à nouveau confronté à un problème de basse chiffrée, plus précisément l'alignement des chiffres. Lors d'un changement de version (je ne me souviens plus lequel) est apparu le contexte FiguredBass et qui a la mauvaise (ce n'est que mon avis…) habitude d'aligner les chiffres à partir de celui du haut: <6 4> et <5>, le 6 et le 5 auront la même ligne de base. Cela va bien lorsqu'on met les chiffres sous la portée; mais lorsqu'on respecte la règle et qu'on les met au dessus, cela crée de grands espaces entre la portée des notes et le chiffre seul (dans mon exemple le 5) qui va même se coller à la portée du dessus. Je n'ai pas trouvé comment désactiver cette propriété…
Je joins un exemple avec, dans le "Score" deux possibilités: la première est la plus récente, donc avec le FiguredBass, qui aligne tous les chiffres. La seconde, qu'il faut décommenter (et mettre du coup le % devant la première) est l'ancienne; dans ce dernier cas, tous les chiffres solitaires (les 6 et le 3) descendent se coller au plus près de la note, et c'est précisément ce que je recherche.

\version "2.24.2"

global = {
  \key c \major
  \time 4/4
}

bcMusic = \relative c {
  \global
  e16( g) c8-! r e, d16( c') b8 r d, c16( b') c8 r e, f,16( e') f8 r fis
}

bcFigures = \figuremode {
  \global
  <6>2 <6>8 <6 5> s <6> <5 4> <3> s <6 5-> s4. <6>8
}

\score {
  << \new FiguredBass \bcFigures \new Staff { \clef bass \bcMusic } >>
  
  % \new Staff { \clef bass << \bcMusic \bcFigures >> }
}

Cordialement.
Bernard

Bon, j'ai trouvé une solution un peu bricolée...

\version "2.24.2"

\layout {
  \override FiguredBass.BassFigureAlignment.stacking-dir = #UP
}

fixFigureOrder =
#(define-music-function (music) (ly:music?)
   (for-each (lambda (c) (set! (ly:music-property c 'elements)
                               (reverse! (ly:music-property c 'elements))))
             (extract-typed-music music 'event-chord))
   music)

global = {
  \key c \major
  \time 4/4
}

bcMusic = \relative c {
  \global
  e16( g) c8-! r e, d16( c') b8 r d, c16( b') c8 r e, f,16( e') f8 r fis
}

bcFigures = \fixFigureOrder \figuremode {
  \global
  <6>2 <6>8 <6 5> s <6> <5 4> <3> s <6 5-> s4. <6>8
}

\score {
  << \new FiguredBass \bcFigures \new Staff { \clef bass \bcMusic } >>
  
  % \new Staff { \clef bass << \bcMusic \bcFigures >> }
}

Et pourquoi pas simplement :

\version "2.24.2"

global = {
  \key c \major
  \time 4/4
}

bcMusic = \relative c {
  \global
  e16( g) c8-! r e, d16( c') b8 r d, c16( b') c8 r e, f,16( e') f8 r fis
}

bcFigures = \figuremode {
  \global
  <6>2 <6>8 <6 5> s <6> <5 4> <3> s <6 5-> s4. <6>8
}

\score {
  \new Staff { <<\bcFigures \clef bass \bcMusic>> }
  
  % \new Staff { \clef bass << \bcMusic \bcFigures >> }
}

Merci pour cette solution, elle arrange bien des choses. Si j'ai bien compris ton bricolage, tu as inversé le sens d'apparition des chiffres dans la commande \override FiguredBass.BassFigureAlignment.stacking-dir = #UP et fait exactement l'inverse avec le fixFigureOrder… le monde agricole aurait dit: on marche sur la tête…
Mais est-il techniquement possible, au sein de FiguredBass, de désactiver cet alignement au cordeau sur le premier chiffre, qui n'existait pas auparavant? Parce que je le trouve particulièrement moche, et tellement mal adapté. (aïe… non… pas taper…)

Cordialement.

Bernard

Et pour illustrer mon propos, je vous propose une première illustration, celle obtenue sans correction et avec l'aide de Jean Abou:

et ce que j'aimerais obtenir

Bernard

Ben dans ce cas mettre directement la basse chiffrée dans le contexte Staff, comme ton 2e exemple (et suggéré par Jean Bréfort), non ?

Arf… j'aurais dû être plus précis… Je cherche à utiliser le FiguredBass et pas à revenir à l'ancienne syntaxe, parce que dans mes délires de graveur, je change la fonte des chiffres qui s'affichent normalement pour une fonte Garamond; j'ai besoin aussi du «6\ \» qui ne s'affiche pas (bizarrement le «5\ \» ou le «4\ \», eux, si… allez comprendre…). Jean Abou m'a gratifié d'un bout de code qui permet le «slashage» du «6» mais uniquement si j'utilise le FiguredBass. Si j'utilise l'ancienne syntaxe (il me semble qu'elle date de la version 2.22) impossible de rendre ce «6\ \» même avec la solution à Jean.

Je n'ai pas le souvenir que l'utilisation de basse chiffrée dans le contexte Staff soit significativement plus ancienne que le contexte FiguredBass. Dans tous les cas les 2 utilisations sont encore et toujours supportées. Enfin je pense que tous les ajustements effectués pour FiguredBass.BassFigure devraient pouvoir se faire également via Staff.BassFigure.

\set Staff.figuredBassPlusStrokedAlist = #'()
\override Staff.BassFigure.font-name = "Garamond"
% etc.

Cordialement,
Xavier

Bon alors je suis parvenu à mes fins, avec la syntaxe indiquée par Xavier et Jean Bréfort… après avoir tout disséqué depuis le début, et m'apercevoir que j'avais oublié le «Staff» dans la formule \override Staff.BassFigure.font-name…

Un grand merci pour vos aides.

Bernard

Je suis d'accord avec Xavier et Jean B. Je pensais que vous teniez pour une raison ou pour une autre à l'alignement qu'apporte le contexte FiguredBass (par exemple, s'il y a une note très haute, ça va rehausser tous les chiffres, plutôt que juste celui qui se rattache à cette note), mais si ce n'est pas non plus voulu, alors autant tout mettre dans Staff, ça a toujours été pris en charge (d'aussi loin que je me souvienne) et ça ne pose aucun problème.