Centrer une note entre deux portées

[Windows XP, LilyPond 2.12.1]
Bien le bonjour à tous,

La liste compte me compte depuis peu comme nouveau membre, aussi je me présente un peu avant de poursuivre ma question.

Contrairement à beaucoup d'entre vous je débute totalement en musique ! Mais, lorsque j'ai lu les scripts de certaine d'entre vous dans les archives ... Waouh ça donne envie d'en connaître un peu plus !

Je commence donc par le commencement en apprenant les notes, tout simplement. J'ai trouvé une bonne méthode théorique et j'ai décidé de suivre ce cour (Manuel de Lecture de de Rythme à l'usage des pianistes et harpistes débutants). J'arrive à mon problème : un peu beaucoup passionné d'informatique, je ne peux m'empêcher de reproduire les partitions que je lis, pour multiplier les exercices (et aussi comme excuse pour revenir sur mon clavier d'ordi).

Deux jours de lecture de la liste de diffusion depuis le début des archives, quelques fouilles dans les sources avec installation de la doc complète... j'arrive à une partition me permettant d'apprendre des notes avec certaines en couleur.
Cependant comment faire pour centrer le do rouge entre les deux portées (clé de sol, clé de fa) ?
Car dans l'édition originale ce centrage est un plus pour l'apprentissage.

Voici le script que j'arrive à produire et qui illustre mon problème :

%%%%%%%%%%%%%%%%%%%%%%
\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 (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.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
    }

  >>
}

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

Merci encore pour le travail déjà effectué
Yves Maingoy

Bien le bonjour à tous,

La liste compte me compte depuis peu comme nouveau membre

Bienvenu ici.

Cependant comment faire pour centrer le do rouge entre les deux portées
(clé de sol, clé de fa) ?

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

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
    }

  >>
}

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

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.

Dans la convention musicale, les lignes supplémentaires (pour les notes au dessus ou au dessous de la portée), doivent être espacée de la même distance, que celle séparant 2 lignes à l'intérieur de la portée.
Une ligne supplémentaire c'est en faite une ligne normale de portée, simplement raccourcie.
Si on descend un do grave en clef de sol plus bas que sa position traditionnelle, on confondra cette note avec un la ou un fa au dessous du do, auquel il manque des lignes supplémentaires.

Gilles

Gilles THIBAULT a écrit :

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.

Dans la convention musicale, les lignes supplémentaires (pour les notes au dessus ou au dessous de la portée), doivent être espacée de la même distance, que celle séparant 2 lignes à l'intérieur de la portée.
Une ligne supplémentaire c'est en faite une ligne normale de portée, simplement raccourcie.
Si on descend un do grave en clef de sol plus bas que sa position traditionnelle, on confondra cette note avec un la ou un fa au dessous du do, auquel il manque des lignes supplémentaires.

Gilles

Bonsoir Gilles,

Merci pour cette précision et pense qu'elle est justifiée lorsqu'on crée une partition qui se doit de respecter les normes visuelles habituelles.
C'est même, je pense, un des détails qui font que des musiciens avertis jugent de la qualité d'une méthode par rapport à une autre.

Cependant, je n'en démord pas. Ce n'est pas moi (humble débutant) qui ai créé cette partition peu conventionnelle ( http://www.musicroom.fr/fr-FR/imagezoom.aspx?product_id=379784 ).
Moi, je ne m'intéresse qu'au défi que représente LilyPond (ma passion c'est l'informatique), et la seule partition que je suis actuellement capable de déchiffrer se situe dans cette méthode.

En fait je me suis dit : si un éditeur peut créer une partition de ce genre, alors LilyPond devrait pouvoir faire aussi bien, sinon mieux, car c'est son but.
Donc, j'ai relevé le défi. Ce qui me permet de lire et de relire des partitions et ... également de découvrir des petites merveilles sur vos sites respectifs.

Après avoir lu la doc en Français, j'ai parcouru celle en anglais puis je me suis attaqué à scheme et aux codes sources de LilyPond.
J'ai ainsi trouvé un livre en anglais assez bien fait sur ce langage, en anglais et de 670 pages. Il est totalement consultable en ligne :

Finalement, dès que j'aurais repéré la méthode qui dessine ces lignes supplémentaires pour les notes au dessus ou au dessous de la portée tout sera plus simple et j'en aurais plus pour très longtemps.

Merci,
Bonnes productions et à bientôt
Yves

Cependant, je n'en démord pas. Ce n'est pas moi (humble débutant) qui ai
créé cette partition peu conventionnelle ( http://www.musicroom.fr/fr-FR/imagezoom.aspx?product_id=379784 ).

Ben là,on ne voit que la couverture du livre ... Dommage.

Finalement, dès que j'aurais repéré la méthode qui dessine ces lignes supplémentaires pour les notes au dessus ou au dessous de la portée tout sera plus simple et j'en aurais plus pour très longtemps.

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...)).

Moi, je ne m'intéresse qu'au défi que représente LilyPond (ma passion c'est l'informatique),

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

Bon courage.

Gilles

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
    }

  >>
}

Bonsoir,

Voici donc le résultat avant une mise en page. C'est conforme à ce que je voulais obtenir.
Il me reste à espacer les partitions du bloc de texte afin d'en avoir six lignes au total dans une page.
J'ai aussi comme soucis les "bar"s invisibles qui espacent un peu trop les notes. Ce n'est pas très beau.

Sinon, je comme je le pensais, Lilypond peut faire pratiquement tout.

A+
Yves

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

\version "2.12.1"

\header {
  copyrightYear = "2009"
  %title = \markup \column { \fill-line { "Entrainement" } }
  tagline = ""
}

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

\layout {
  \context { \Score
    \override VerticalAlignment #'max-stretch = ##f
    \remove Bar_number_engraver % suppression des numéros de Bar
    \override LedgerLineSpanner #'color = #red
    \override LedgerLineSpanner #'extra-offset = #'(0 . -1.25)
    \override TimeSignature #'stencil = ##f
    \override Stem #'transparent = ##t
  }
}

\paper {
  #(define page-breaking ly:minimal-breaking)
  ragged-last-bottom = ##t
  indent = 10\mm % retrait de la première portée
  between-system-padding = #3.0 % espace entre les portées
}

%%%% Macros %%%%

#(define (deplacer grob)
  "Calcule un déplacement de la note si c'est un do' "
  (cond ((= -6 (ly:grob-property grob 'staff-position)) '(0 . -1.25))
        (else '(0 . 0))
  )
)
#(define (colorier grob)
  "Colorie certaines notes en rouge selon leur postions"
  (let ((position (ly:grob-property grob 'staff-position) ))
    (case position
      ;; Retourne une couleur selon la position de la note
      ((-6) (x11-color 'red )) ; do'
      (else (x11-color 'black )) ; autres notes
    )
  )
)

presentation = {
    \override Staff.NoteHead #'color = #colorier
    \override Staff.NoteHead #'extra-offset = #deplacer
}

dropLyrics = {
  \override LyricText #'extra-offset = #'(0 . -5)
  \override LyricHyphen #'extra-offset = #'(0 . -5)
  \override LyricExtender #'extra-offset = #'(0 . -5)
}
raiseLyrics = {
  \revert LyricText #'extra-offset
  \revert LyricHyphen #'extra-offset
  \revert LyricExtender #'extra-offset
}

%%%% bookpart %%%%%

\bookpart {
  \markuplines {
       %%%% Texte Haut + petite partition
    \fill-line { % une ligne centrée
      \null
      \left-align \line {
        \override #'(line-width . 40) \vcenter \justify {
          Lire lentement, avec la plus grande
          régulatité, afin de bien mémoriser les
          notes repères imprimées en rouge (on
          peut utiliser le métronome, environ 60
          à la note).
        }
               \hspace #90
        \vcenter \right-align \score {
          \new PianoStaff <<
            \set Score.defaultBarType = #""
            \new Staff = "upper" {
              \clef treble
              \presentation
              { s2 do'4 s4 re'4 s4 s2 do'4 s4 s2 s1 }
              \bar "|"
            }
            \addlyrics { \markup { \bold \with-color #red "DO" }
                \markup { \bold "ré" }
                \markup { \bold \with-color #red "DO" }
            }
            \new Staff = "lower" {
              \clef bass
              \presentation
              { s1 s1 s1 si4 s4 s2 }
              \bar "|"
            }
            \addlyrics { \markup { "si" }
            }
          >>
          \layout {
            ragged-right = ##t
                     }
        }
      }
    }

    %%%% Partition 1a
    \fill-line {
    \score {
      \new PianoStaff <<
        \set PianoStaff.instrumentName = \markup { \bold \huge " 1" } \set Score.defaultBarType = #""
        \new Staff { \clef treble \presentation
          { do'4 re' re' do' do' s4 s4 do' re' re' do' s4 \break }
        }
        \new Staff { \clef bass \presentation
          { s4 s4 s4 s4 s4 si si s4 s4 s4 s4 si \break }
        }
      >>
      \layout {
        ragged-right = ##f
      }
    }

    %%%% Partition 1b
    \score {
      \new PianoStaff <<
        \set PianoStaff.instrumentName = \markup { \bold \huge " " } \set Score.defaultBarType = #""
        \new Staff { \clef treble \presentation
          { do'4 s4 s4 do' s4 do' re' s4 do' s4 re' do' \bar "|." }
        }
        \new Staff { \clef bass \presentation
          { s4 si si s4 si s4 s4 si s4 si s4 s4 \bar "|." }
        }
      >>
      \layout {
        ragged-right = ##f
      }
    }
   
}

%%%% FIN %%%%

Voici donc le résultat avant une mise en page. C'est conforme à ce que
je voulais obtenir.

Bravo !
J'avais cherché une solution à l'histoire des lignes supplémentaires qui aurait un extra-offset variable (+ ou - 1.25) ,
mais la solution pragmatique que tu donnes va très bien.

Gilles