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


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


;;; 
;;; (get-triads '("CM7" ion) 
;;; 
(defun get-triads (pair) 
  (let* ((ll (butlast (chord-scale pair))) 
      (lst (append ll 
                         (list (first ll) 
                               (second ll) 
                               (third ll) 
                               (fourth ll)))) 
      (n (length lst))) 
    (do ((nn n (1- nn))
       (l) 
       (w)) 
      ((<= nn 4) (reverse w)) 
     (setf l (rotate-list-right lst nn)) 
     (push (list (first l) (third l) 
                      (fifth l)) 
                 w)))) 

(defun get-chords-from-scale (pair) 
  (let* ((ll (butlast (chord-scale pair))) 
      (nl (length ll)) 
      (lst (append ll ll)) 
      (n (length lst))) 
    (do ((nn n (1- nn)) 
       (l) 
       (w)) 
      ((<= nn nl) (reverse w)) 
     (setf l (rotate-list-right lst nn)) 
     (push (list (first l) (third l) 
                      (fifth l) (seventh l)) 
                 w)))) 

(defun 4th-interval-chords (pair) 
  (let* ((ll (butlast (chord-scale pair))) 
      (nl (length ll)) 
      (lst (append ll ll)) 
      (n (length lst))) 
    (do ((nn n (1- nn)) 
       (l) 
       (w)) 
      ((<= nn nl) (reverse w)) 
     (setf l (rotate-list-right lst nn)) 
     (push (list (first l) (fourth l) 
                      (seventh l) (tenth l)) 
                 w))))

(defun 4th-interval-triads (pair) 
  (let* ((ll (butlast (chord-scale pair))) 
     (nl (length ll)) 
     (lst (append ll ll)) 
      (n (length lst))) 
   (do ((nn n (1- nn)) 
      (l) 
      (w)) 
     ((<= nn nl) (reverse w)) 
      (setf l (rotate-list-right 
                        lst nn)) 
      (push (list (first l) (fourth l) 
                        (seventh l)) w)))) 

;;; 
;;; 
;;; 
(defun 3rd-interval (pair) 
  (let* ((ll (butlast (chord-scale pair))) 
      (lst (append ll ll)) 
      (n (length lst))) 
    (do ((nn n (- nn 2)) 
       (l) 
       (w)) 
      ((<= nn -1) (reverse w)) 
     (setf l (rotate-list-right 
                       lst nn)) 
     (push (first l) w)))) 

(defun 4th-interval (pair) 
  (let* ((ll (butlast (chord-scale pair))) 
       (lst (append ll ll ll)) 
       (n (length lst))) 
     (do ((nn n (- nn 3)) 
        (l) 
        (w)) 
        ((<= nn -1) (reverse w)) 
      (setf l (rotate-list-right 
                         lst nn)) 
      (push (first l) w)))) 

(defun 5th-interval (pair) 
  (let* ((ll (butlast (chord-scale pair))) 
      (lst (append ll ll ll ll)) 
      (n (length lst))) 
    (do ((nn n (- nn 4)) 
       (l) 
       (w)) 
      ((<= nn -1) (reverse w)) 
     (setf l (rotate-list-right 
                      lst nn)) 
     (push (first l) w)))) 

(defun 6th-interval (pair) 
  (let* ((ll (butlast (chord-scale pair))) 
      (lst (append ll ll ll ll ll)) 
      (n (length lst))) 
    (do ((nn n (- nn 5)) 
       (l) 
       (w)) 
      ((<= nn -1) (reverse w)) 
     (setf l (rotate-list-right 
                       lst nn)) 
     (push (first l) w)))) 

(defun 7th-interval (pair) 
  (let* ((ll (butlast (chord-scale pair))) 
      (lst (append ll ll ll ll ll ll)) 
      (n (length lst))) 
    (do ((nn n (- nn 6)) 
       (l) 
       (w)) 
      ((<= nn -1) (reverse w)) 
       (setf l (rotate-list-right 
                          lst nn)) 
       (push (first l) w))))