;;;
;;; c:\\program files\\acl62\\music16.cl
;;;


(load "c:\\program files\\acl62\\music15.cl") 

;;;(get-chord-tone "CM7") ;;;(rotate-list-right '(a b c d) 2) ;;;(rotate-list-left '(a b c d) 3)
(defun get-figures-of-a-chord (chord-name)   (let ((lst (get-chord-tone chord-name)))    (list (rotate-list-right lst 0)       (rotate-list-right lst 1)       (rotate-list-right lst 2)       (rotate-list-right lst 3))))
(defun drop2-aux (lst)   (list (third lst) (list (first lst) (second lst) (fourth lst))))
(defun drop2 (chord-name)   (mapcar #'drop2-aux (get-figures-of-a-chord chord-name)))
(defun drop3-aux (lst)   (list (second lst) (list (first lst) (third lst) (fourth lst))))
(defun drop3 (chord-name)   (mapcar #'drop3-aux (get-figures-of-a-chord chord-name)))
(defun drop2&4-aux (lst)   (list (list (first lst) (third lst)) (list (second lst) (fourth lst))))
(defun drop2&4 (chord-name)   (mapcar #'drop2&4-aux (get-figures-of-a-chord chord-name)))
(defun drop1&4-aux (lst)   (list (list (list (first lst) (fourth lst)) (list (second lst) (third lst)))))
(defun drop1&4 (chord-name)   (drop1&4-aux (first (get-figures-of-a-chord chord-name))))
;;; ;;; (drops "CM7") ;;; (defun drops (chord-name)   (format t "~%drop2 ~a" (drop2 chord-name))   (format t "~%drop3 ~a" (drop3 chord-name))   (format t "~%drop2&4 ~a" (drop2&4 chord-name))   (format t "~%drop1&4 ~a" (drop1&4 chord-name))   (format t "~%Tensions")   (show-tension-notes chord-name)) (defun set-of-drops (chord-name) (append (drop2 chord-name)        (drop3 chord-name)        (drop2&4 chord-name)        (drop1&4 chord-name)))
(defun get-a-drop (chord-name)   (let ((lst (set-of-drops chord-name)))    (nth (random (length lst)) lst)))
(defun a-drop (chord-name)   (format t "~%~a  " (get-a-drop chord-name))   (format t "~%Tensions")   (show-tension-notes chord-name))