1 ;; note-name: (note . accidental)
2 ;; list: (list-of-pitches . (modifier-string . addition-subtraction-string))
4 ;; if a complete chord is found, use name
5 ;; if a chord's base triad is found (c e g), use name
7 (define note-names-alist '())
11 ; use these for German naming
13 ;((6 . -1) . ("B" ("feta-1" . "
\12")))
15 ; C-p/C-r current feta chars for sharp/flat
16 ; don't use them: ly2dvi breaks (inputenc package)
17 ;((0 . 1) . ("C" ("feta-1" . "
\10")))
18 ;((0 . -1) . ("C" ("feta-1" . "
\12")))
22 (define (pitch->note-name pitch)
23 (cons (cadr pitch) (caddr pitch)))
25 (define (user-pitch-name pitch)
26 (let ((entry (assoc (pitch->note-name pitch) note-names-alist)))
30 (define chord-names-alist '())
31 (set! chord-names-alist
35 (((0 . 0)) . (#f . #f))
37 (((0 . 0) (2 . 0)) . (#f . #f))
39 (((0 . 0) (2 . -1)) . ("m" . #f))
41 (((0 . 0) (2 . -1) (4 . -1)) . ("dim" . #f))
44 ; (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" . ("feta-1" . ".")))
45 (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . (#f . ("script" . "o")))
47 (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1)) . ("dim" . ("script" . "9")))
48 (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1) (3 . -1)) . ("dim" . ("script" . "11")))
52 (define (user-chord-name chord)
53 (let ((entry (assoc (map (lambda (x) (pitch->note-name x)) chord)