[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
minor chord names lowercase - es problem
From: |
Henning Hraban Ramm |
Subject: |
minor chord names lowercase - es problem |
Date: |
Sat, 14 Dec 2013 22:32:58 +0600 |
Hi,
someone of you wrote the following function for me some year before, that
allows me to set minor chords in lowercase instead of attaching „m“:
#(define (conditional-string-downcase str condition)
(if condition
(string-downcase str)
str))
#(define (pitch-alteration-semitones pitch)
(inexact->exact (round (* (ly:pitch-alteration pitch) 2))))
#(define ((chord-name->german-markup-text-alteration
B-instead-of-Bb) pitch lowercase?)
"Return pitch markup for PITCH, using german note names.
If B-instead-of-Bb is set to #t, real german names are returned.
Otherwise, semi-german names (with Bb and below keeping the
british names). Alterations are indicated with -es and -is
instead of the flat and sharp symbols."
(let* ((name (ly:pitch-notename pitch))
(alt-semitones (pitch-alteration-semitones pitch))
(n-a (if (member (cons name alt-semitones) `((6 . -1) (6 . -2)))
(cons 7 (+ (if B-instead-of-Bb 1 0) alt-semitones))
(cons name alt-semitones))))
(make-line-markup
(list
(make-simple-markup
(conditional-string-downcase
(vector-ref #("C" "D" "E" "F" "G" "A" "H" "B") (car n-a))
lowercase?))
(let ((alteration (/ (cdr n-a) 2)))
(cond
((= alteration FLAT) (make-simple-markup "es"))
((= alteration SHARP) (make-simple-markup "is"))
(else empty-markup)))))))
My only problem with that is, that es major is now displayed as „Ees“ instead
of just „Es“.
I guess I just need a (case within (= alteration FLAT), but I still don’t speak
Lisp (yet)...
Greetlings, Hraban
---
fiëé visuëlle
Henning Hraban Ramm
http://www.fiee.net
http://angerweit.tikon.ch/lieder/
https://www.cacert.org (I'm an assurer)
- minor chord names lowercase - es problem,
Henning Hraban Ramm <=