;;;
;;; c:\\program files\\acl62\\music41.cl
;;;
(load "c:\\program files\\acl62\\music40.cl")
(defun tell-a-pair-again (l)
(let ((lst (collect-pairs l)))
(do ((ll lst (cdr ll)))
((null ll))
(format t "~%*** ~a ***."
(car ll))
(tell-a-pair-aux (car ll)))))
;;;
;;; (tell-pairs-again *w1*)
;;;
(defun tell-pairs-again (wn)
(tagbody
(my-randomize)
(format t "~%*** ~a ***"
(second (first wn)))
(format t "~%The original key is ~a."
(first (first wn)))
(format t "~%Enter a key.")
loop1
(setf l1 (read-sentence))
(if (not (key-p (car l1)))
(go loop1))
(if (equal (car l1) (first (first wn)))
(setf l2 (cdr wn))
(setf l2
(modulate-key1-to-key2
(cdr wn)
(first (first wn))
(car l1))))
(tell-a-pair-again l2)))
;;;
;;; (indicate-a-key 'C 'major)
;;; (indicate-a-key 'C 'minor) etc.
;;;
(defun indicate-a-key (key type)
(format t "~%*** On the key ~a. ***"
(concatenate 'string
(string key)
"-"
(string type)))
(format t "~%~a."
(rest
(instantiate-a-key key type))))
;;;
;;; (get-chords-of-a-function-in-a-key
;;; 'C
;;; 'major
;;; 'tonic)
;;;
(defun get-chords-of-a-function-in-a-key (key type func)
(let ((lst (instantiate-a-key key type)))
(cdr (second (assoc func (cdr lst))))))
;;;
;;; (get-all-DC-chords "G7")
;;;
(defun get-all-DC-chords (dominant-chord)
(append (get-DC dominant-chord 1)
(list (car (get-DC dominant-chord 2)))
(list (car (get-DC dominant-chord 3)))
(list (car (get-DC dominant-chord 4)))))
(defun indicate-all-DC-chords (dc)
(format t "~%For ~a all DC chords are ~a."
dc
(get-all-DC-chords dc)))
|