;;;
;;; c:\\program files\\acl62\\music37.cl
;;;
(load "c:\\program files\\acl62\\music36.cl")
(load "c:\\program files\\acl62\\work1.cl")

(make-frame-from-list
 '(M7 (CM7 (value "E7" "+F7" "-G7" "A7" "B7"))))

(make-frame-from-list
 '(m7 (Cm7 (value "+D7" "-E7" "E7" "+A7" "-B7"))))

(make-frame-from-list
 '(m7-5 (Cm7-5 (value "+C7" "-D7" "+D7" "-E7" "+A7" "-B7"))))

(make-frame-from-list
 '(d7 (C7 (value "A7"))))

;;;
;;;
;;;
(defun get-M7-of-CM7 () (fget-i 'M7 'CM7))
(defun get-m7-of-Cm7 () (fget-i 'm7 'Cm7))
(defun get-m7-5-of-Cm7-5 () (fget-i 'm7-5 'Cm7-5))
(defun get-d7-of-C7 () (fget-i 'd7 'C7))

;;;
;;;
;;;
(defun collect-DC-dominant-M7 (chord)
  (remove-duplicate (modulate-key1-to-key2 (get-M7-of-CM7) 'C (involve-atom-p chord))))

(defun collect-DC-dominant-m7 (chord)
  (remove-duplicate (modulate-key1-to-key2 (get-m7-of-Cm7) 'C (involve-atom-p chord))))

(defun collect-DC-dominant-m7-5 (chord)
  (remove-duplicate (modulate-key1-to-key2 (get-m7-5-of-Cm7-5) 'C (involve-atom-p chord))))

(defun collect-DC-dominant-d7 (chord)
  (remove-duplicate (modulate-key1-to-key2 (get-d7-of-C7) 'C (involve-atom-p chord))))

;;;
;;;
;;;
(defun collect-DC-dominant (chord)
  (cond ((search-s1-in-s2 "m7-5" chord) (collect-DC-dominant-m7-5 chord))
      ((search-s1-in-s2 "m7" chord) (collect-DC-dominant-m7 chord))
      ((search-s1-in-s2 "M7" chord) (collect-DC-dominant-M7 chord))
      ((search-s1-in-s2 "7" chord) (collect-DC-dominant-d7 chord))))