#(define (music-name x) (ly:music-property x 'name)) #(define (music-elts x) (ly:music-property x 'elements)) #(define (root-name x) (case x ((0) "C") ((1) "D") ((2) "E") ((3) "F") ((4) "G") ((5) "A") ((6) "B"))) #(define (root-alter x) (case x ((-1) "<") ((-1/2) "b") ((0) "") ((1/2) "#") ((1) ">"))) #(define (bass-name x) (case x ((0) "e") ((1) "r") ((2) "t") ((3) "z") ((4) "u") ((5) "q") ((6) "w"))) #(define (bass-alter x) (case x ((-1) ";") ((-1/2) ",") ((0) "") ((1/2) "'") ((1) "\""))) #(define (symbolize-chord m) (if (and (eq? (music-name m) 'EventChord) (null? (cdr (music-elts m))) (eq? (music-name (car (music-elts m))) 'NoteEvent)) (let* ((r (car (music-elts m))) (d (ly:music-property r 'duration)) (p (ly:music-property r 'pitch)) (n (ly:pitch-notename p)) (a (ly:pitch-alteration p))) (set! n (root-name n)) (set! a (root-alter a)) (set! m (make-music 'LyricEvent 'duration d 'text (string-append n a))))) (if (and (eq? (music-name m) 'EventChord) (not (null? (cdr (music-elts m)))) (null? (cddr (music-elts m))) (eq? (music-name (cadr (music-elts m))) 'NoteEvent)) (let* ((r (car (music-elts m))) (b (cadr (music-elts m))) (d (ly:music-property r 'duration)) (rp (ly:music-property r 'pitch)) (rn (ly:pitch-notename rp)) (ra (ly:pitch-alteration rp)) (bp (ly:music-property b 'pitch)) (bn (ly:pitch-notename bp)) (ba (ly:pitch-alteration bp))) (set! rn (root-name rn)) (set! ra (root-alter ra)) (set! bn (bass-name bn)) (set! ba (bass-alter ba)) (set! m (make-music 'LyricEvent 'duration d 'text (string-append rn ra "_" bn ba))))) (if (and (eq? (music-name m) 'EventChord) (not (null? (cdr (music-elts m)))) (null? (cddr (music-elts m))) (eq? (music-name (cadr (music-elts m))) 'TextScriptEvent) (eq? (music-name (car (music-elts m))) 'NoteEvent)) (let* ((r (car (music-elts m))) (d (ly:music-property r 'duration)) (p (ly:music-property r 'pitch)) (n (ly:pitch-notename p)) (a (ly:pitch-alteration p)) (t (cadr (music-elts m))) (s (ly:music-property t 'text))) (set! n (root-name n)) (set! a (root-alter a)) (set! m (make-music 'LyricEvent 'duration d 'text (string-append n a s))))) (if (and (eq? (music-name m) 'EventChord) (not (eq? (music-name (car (music-elts m))) 'RestEvent)) (not (null? (cddr (music-elts m))))) (let* ((r (car (music-elts m))) (d (ly:music-property r 'duration)) (rp (ly:music-property r 'pitch)) (rn (ly:pitch-notename rp)) (ra (ly:pitch-alteration rp)) (b (cadr (music-elts m))) (bp (ly:music-property b 'pitch)) (bn (ly:pitch-notename bp)) (ba (ly:pitch-alteration bp)) (t (caddr (music-elts m))) (s (ly:music-property t 'text))) (set! rn (root-name rn)) (set! ra (root-alter ra)) (set! bn (bass-name bn)) (set! ba (bass-alter ba)) (set! m (make-music 'LyricEvent 'duration d 'text (string-append rn ra s "_" bn ba))))) (if (and (eq? (music-name m) 'EventChord) (eq? (music-name (car (music-elts m))) 'RestEvent) (not (null? (cdr (music-elts m))))) (let* ((e (car (music-elts m))) (d (ly:music-property e 'duration)) (t (cadr (music-elts m))) (s (ly:music-property t 'text))) (set! m (make-music 'LyricEvent 'duration d 'text s)))) (if (and (eq? (music-name m) 'EventChord) (eq? (music-name (car (music-elts m))) 'RestEvent) (null? (cdr (music-elts m)))) (let* ((e (car (music-elts m))) (d (ly:music-property e 'duration))) (set! m (make-music 'LyricEvent 'duration d 'text "")))) m) chordSymbols = #(define-music-function (parser location music) (ly:music?) (music-map (lambda (x) (symbolize-chord x)) music))