Cómo utilizar correctamente ChordRootNamer en lilypond

Escribo un cancionero en lilypond y quiero usar acordes checos. Los acordes checos son casi iguales a los acordes alemanes. (El acorde B es "H" y el acorde Bb es "B".) Además, quiero que los acordes menores sean letras minúsculas y no mayúsculas con "m". (El acorde de Mi menor debe ser "e" y no "Em".). Ya resolví estos problemas usando los comandos \germanChords y \set chordNameLowercaseMinor = ##t .

Sin embargo, hay un tercer problema. Quiero que los acordes con alteraciones se escriban como las notas alemanas. En lugar de "F#", quiero "Fis". Por lo tanto, el acorde de Eb menor debería parecerse a "es" y no a "Ebmi". ("#" agrega el sufijo "-is" y b agrega el sufijo "-es" con la excepción de "e bemol" = "es", "a bemol" = "as" y "b bemol" = "b" ).

Encontré en el manual de lilypond que esto se puede resolver con el comando \set chordRootNamer , sin embargo, no encontré cómo usarlo correctamente.

Entonces encontré este fragmento de código:

#(define-public (my-note-name->german-markup pitch lowercase?)
 (let* ((name (ly:pitch-notename pitch))
     (alt-semitones (inexact->exact (round (* (ly:pitch-alteration pitch) 2))))
     (n-a (if (member (cons name alt-semitones) `((6 . -1) (6 . -2)))
              (cons 7 (+ 1 alt-semitones))
              (cons name alt-semitones)))
     (basic-list '("c" "d" "e" "f" "g" "a" "h" "b"))
     (list-to-use
       (if lowercase?
           basic-list
           (map string-upcase basic-list))))

(make-line-markup
 (list
  (string-append
   (list-ref list-to-use (car n-a))
   (if (or (equal? (car n-a) 2) (equal? (car n-a) 5))
       (list-ref '( "ses" "s" "" "is" "isis") (+ 2 (cdr n-a)))
       (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cdr n-a)))))))))

Este tipo de me ayudó con el problema. Sin embargo, ahora todos los acordes (incluidos los acordes mayores) están en minúsculas. Puedo encenderlo y apagarlo, pero es una forma inconveniente si escribes muchas canciones. No pude cambiarlo de la forma en que cambia solo los sufijos y deja los acordes mayores como mayúsculas.

¿Alguien podría explicarme cómo funciona este código y cómo cambiarlo para cambiar solo los sufijos de los acordes?

Gracias,

Vit

Bueno, construí un MWE y no apareció el problema que explicaste. ¿No es eso lo que estás buscando? www.lilybin.com/5hvi5s/1
Oh, lo veo ahora. El problema fue que también copié el comando: \set chordRootNamer = #(lambda (¿tono en minúsculas?)(mi-nombre-de-nota->german-markup tono #t)) sin entenderlo. Y la parte que usó: \set chordRootNamer = #my-note-name->german-markup hizo el trabajo que necesitaba y el resto del comando hizo las letras minúsculas. Muchas gracias y gracias también por mostrarme Lilybin, que no conocía.
@TiagoPC ¿Te importaría dar esa respuesta? ¡Es una gran información y merece ser reconocida!

Respuestas (1)

La respuesta es:

\set chordRootNamer = #my-note-name->german-markup