colorier des notes de basse

j'ai trouvé un code qui devrait automatiser les notes de basse que voici:

\version "2.24.4"
%------------------------------------------------------
% Définition des couleurs par corde 
#(define (color-stem-by-string note)
   (let* ((pitch (ly:event-property note 'pitch))
          (notename (ly:pitch-notename pitch))
          (octave (ly:pitch-octave pitch)))
     (cond
       ;; Corde de Mi (E, 4ème corde)
       ((or (and (= notename 2) (= octave 2))  % Mi grave (E2)
            (and (= notename 4) (= octave 2))  % Fa (F2)
            (and (= notename 5) (= octave 2))) % Fa# (F#2)
        "cyan")
       ;; Corde de La (A, 3ème corde)
       ((or (and (= notename 5) (= octave 3))  % La (A3)
            (and (= notename 0) (= octave 3))) % Do (C3)
        "brown")
       ;; Corde de Ré (D, 2ème corde)
       ((or (and (= notename 0) (= octave 3))  % Ré (D3)
            (and (= notename 2) (= octave 3))) % Mi (E3)
        "orange")
       ;; Corde de Sol (G, 1ère corde)
       ((or (and (= notename 4) (= octave 3))  % Sol (G3)
            (and (= notename 5) (= octave 3))) % La (A3)
        "blueviolet")
       (else "black"))))  % Couleur par défaut
%-------------------------------------------------
% Fonction pour appliquer les couleurs aux hampes
colorStems =
{
  \override Stem.color = #(lambda (grob)
    (let 
     ((note (ly:grob-property grob 'note))
     )
   (color-stem-by-string note)))
}
%--------------------------------------------------------  
\score
 {
  \new Staff 
    {
     \clef bass
    \colorStems  % Applique les couleurs aux hampes
     \relative c
       {
       % Exemple de ligne de basse
       e4 f fis g | a b c d | e g a b | c2 r |
      }
  }
  \layout {}
  \midi {}
}

seulement il me renvoie l'erreur suivante:

 [/usr/share/lilypond/2.24.4/ly/init.ly:65:2](0): 
Erreur : Guile a signalé une erreur pour l'expression débutant ici

#

(let ((book-handler (if (defined? 'default-toplevel-book-handler)

In procedure ly:event-property: Wrong type argument in position 1 (expecting Stream_event): ()

Arrêté avec le code de retour 1.

comme je ne comprend pas le code que j'ai pompé quelqu'un peut-il me donner une explication qui me permetterai de faire fonctionner ce code.
Par avance merci.
Bonne journée

Bonjour Christian, que dirais-tu de :

\version "2.24.0"

colorStems =
#(define-music-function (strings colors) (ly:music? list?)
   (define (color grob)
     (let* ((heads (ly:grob-object grob 'note-heads))
            (head (ly:grob-array-ref heads 0))
            (ev (ly:grob-property head 'cause))
            (pitch (ly:event-property ev 'pitch))
            (i (list-index (lambda (string-pitch)
                             (not (ly:pitch<? pitch string-pitch)))
                           (music-pitches strings))))
       (if i (list-ref colors i))))
   #{ \override Stem.color = #color #})

{
  \clef bass
  % Colorie les notes au-dessus du sol en bleu-violet, celles entre le
  % ré et le sol en orange, etc.
  \colorStems { g d a, e, } #'("blueviolet" "orange" "brown" "cyan")
  \relative c, {
    c d e f g a b c d e f g a b c d
  }
}

Bonjour Jean.
Merci de m'avoir répondu depuis ton lointain pays. (c'est bien internet)
bon ta fonction est ok (comme d'hab.)

Cependant, en voyant le PDF, je m'aperçois que le coloriage des hampes n'est pas suffisant pour ma part sur une partition que je dois lire en concert et avec les projos.

Je vais donc m'orienter vers le coloriage des portées, je pense que cela plus visible.
Encore merci, et bonne continuation

Cordialement
Christian

Je me disais aussi que les couleurs étaient difficiles à discerner. C'est déjà mieux en coloriant les têtes plutôt que les hampes :

\version "2.24.0"

colorStems =
#(define-music-function (strings colors) (ly:music? list?)
   (define (color head)
     (let* ((ev (ly:grob-property head 'cause))
            (pitch (ly:event-property ev 'pitch))
            (i (list-index (lambda (string-pitch)
                             (not (ly:pitch<? pitch string-pitch)))
                           (music-pitches strings))))
       (if i (list-ref colors i))))
   #{ \override NoteHead.color = #color #})

{
  \clef bass
  % Colorie les notes au-dessus du sol en bleu-violet, celles entre le
  % ré et le sol en orange, etc.
  \colorStems { g d a, e, } #'("blueviolet" "orange" "brown" "cyan")
  \relative c, {
    c d e f g a b c d e f g a b c d
  }
}

Bonsoir Jean.

Le positif de l'histoire, c'est que tu m'as permis de voir que je
faisais fausse route .

La musique n'est pas un long fleuve tranquille ? j'espère réussir en
colorisant les mesures.

Et encore merci de ton aide.

Cordialement

Christian