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
La respuesta es:
\set chordRootNamer = #my-note-name->german-markup
tiagopc
Vit Henych
Ricardo