;;; 
;;; c:\\program files\\acl62\\music26.cl 
;;; 
(load "c:\\program files\\acl62\\music25.cl") 
(defun divide-a-chord (scn) 
  (let ((char (involve-char-p scn))) 
    (divide-s1-with-s2 scn char))) 
(defun translate-sc-to-number (sc) 
  (cond ((equal sc "C") 1.0) 
      ((equal sc "+C") 1.5) 
      ((equal sc "D") 2.0) 
      ((equal sc "+D") 2.5) 
      ((equal sc "E") 3.0) 
      ((equal sc "F") 3.5) 
      ((equal sc "+F") 4.0) 
      ((equal sc "G") 4.5) 
      ((equal sc "+G") 5.0) 
      ((equal sc "A") 5.5) 
      ((equal sc "+A") 6.0) 
      ((equal sc "B") 6.5))) 
(defun translate-number-to-sc (n) 
  (let ((num (confine-a-number-2 (confine-a-number-2 n)))) 
    (case num 
      (1.0 "C") (1.5 "+C") (2.0 "D") (2.5 "+D") (3.0 "E") 
      (3.5 "F") (4.0 "+F") (4.5 "G")
(5.0 "+G") (5.5 "A") 
      (6.0 "+A") (6.5 "B")))) 
(defun change-a-chord-by-n (chord n) 
  (let* ((lst (divide-a-chord chord)) 
      (num (translate-sc-to-number (first lst))) 
      (num2 (+ num n)) 
      (sc2 (translate-number-to-sc num2)) 
      (type (second lst))) 
    (concatenate 'string sc2 type))) 
(defun m2-up-a-chord (chord) (change-a-chord-by-n chord 0.5)) 
(defun m2-down-a-chord (chord) (change-a-chord-by-n chord -0.5)) 
(defun M2-up-a-chord (chord) (change-a-chord-by-n chord 1.0)) 
(defun M2-down-a-chord (chord) (change-a-chord-by-n chord -1.0)) 
(defun m3-up-a-chord (chord) (change-a-chord-by-n chord 1.5)) 
(defun m3-down-a-chord (chord) (change-a-chord-by-n chord -1.5)) 
(defun M3-up-a-chord (chord) (change-a-chord-by-n chord 2.0)) 
(defun M3-down-a-chord (chord) (change-a-chord-by-n chord -2.0)) 
(defun P4-up-a-chord (chord) (change-a-chord-by-n chord 2.5)) 
(defun P4-down-a-chord (chord) (change-a-chord-by-n chord -2.5)) 
(defun +4-5-up-a-chord (chord) (change-a-chord-by-n chord 3.0)) 
(defun +4-5-down-a-chord (chord) (change-a-chord-by-n chord -3.0)) 
(defun P5-up-a-chord (chord) (change-a-chord-by-n chord 3.5)) 
(defun P5-down-a-chord (chord) (change-a-chord-by-n chord -3.5)) 
(defun m6-up-a-chord (chord) (change-a-chord-by-n chord 4.0)) 
(defun m6-down-a-chord (chord) (change-a-chord-by-n chord -4.0)) 
(defun M6-up-a-chord (chord) (change-a-chord-by-n chord 4.5)) 
(defun M6-down-a-chord (chord) (change-a-chord-by-n chord -4.5)) 
(defun m7-up-a-chord (chord) (change-a-chord-by-n chord 5.0)) 
(defun m7-down-a-chord (chord) (change-a-chord-by-n chord -5.0)) 
(defun M7-up-a-chord (chord) (change-a-chord-by-n chord 5.5)) 
(defun M7-down-a-chord (chord) (change-a-chord-by-n chord -5.5)) 
;;; 
;;; (m2-up-a-phrase '("CM7" (re do si la)) 
;;; 
(defun m2-up-a-phrase (lst) (list (m2-up-a-chord (first lst)) (m2-up (second
lst)))) 
(defun m2-down-a-phrase (lst) (list (m2-down-a-chord (first lst)) (m2-down
(second lst)))) 
(defun M2-up-a-phrase (lst) (list (M2-up-a-chord (first lst)) (M2-up (second lst)))) 
(defun M2-down-a-phrase (lst) (list (M2-down-a-chord (first lst)) (M2-down
(second lst)))) 
(defun m3-up-a-phrase (lst) (list (m3-up-a-chord (first lst)) (m3-up (second
lst)))) 
(defun m3-down-a-phrase (lst) (list (m3-down-a-chord (first lst)) (m3-down (second lst)))) 
(defun M3-up-a-phrase (lst) (list (M3-up-a-chord (first lst)) (M3-up (second
lst)))) 
(defun M3-down-a-phrase (lst) (list (M3-down-a-chord (first lst)) (M3-down
(second lst)))) 
(defun P4-up-a-phrase (lst) (list (P4-up-a-chord (first lst)) (P4-up (second lst)))) 
(defun P4-down-a-phrase (lst) (list (P4-down-a-chord (first lst)) (P4-down
(second lst)))) 
(defun +4-5-up-a-phrase (lst) (list (+4-5-up-a-chord (first lst)) (+4-5-up
(second lst)))) 
(defun +4-5-down-a-phrase (lst) (list (+4-5-down-a-chord (first lst)) (+4-5-down (second lst)))) 
(defun P5-up-a-phrase (lst) (list (P5-up-a-chord (first lst)) (P5-up (second
lst)))) 
(defun P5-down-a-phrase (lst) (list (P5-down-a-chord (first lst)) (P5-down
(second lst)))) 
(defun m6-up-a-phrase (lst) (list (m6-up-a-chord (first lst)) (m6-up (second lst)))) 
(defun m6-down-a-phrase (lst) (list (m6-down-a-chord (first lst)) (m6-down
(second lst)))) 
(defun M6-up-a-phrase (lst) (list (M6-up-a-chord (first lst)) (M6-up (second
lst)))) 
(defun M6-down-a-phrase (lst) (list (M6-down-a-chord (first lst)) (M6-down (second lst)))) 
(defun m7-up-a-phrase (lst) (list (m7-up-a-chord (first lst)) (m7-up (second
lst)))) 
(defun m7-down-a-phrase (lst) (list (m7-down-a-chord (first lst)) (m7-down
(second lst)))) 
(defun M7-up-a-phrase (lst) (list (M7-up-a-chord (first lst)) (M7-up (second lst)))) 
(defun M7-down-a-phrase (lst) (list (M7-down-a-chord (first lst)) (M7-down
(second lst)))) 
;;; 
;;; (m2-up-phrases '(("CM7" (do re mi)) ("Dm7" (so
fa mi)))) 
;;; 
(defun m2-up-phrases (lst) (mapcar #'m2-up-a-phrase lst)) 
(defun m2-down-phrases (lst) (mapcar #'m2-down-a-phrase lst)) 
(defun M2-up-phrases (lst) (mapcar #'M2-up-a-phrase lst)) 
(defun M2-down-phrases (lst) (mapcar #'M2-down-a-phrase lst)) 
(defun m3-up-phrases (lst) (mapcar #'m3-up-a-phrase lst)) 
(defun m3-down-phrases (lst) (mapcar #'m3-down-a-phrase lst)) 
(defun M3-up-phrases (lst) (mapcar #'M3-up-a-phrase lst)) 
(defun M3-down-phrases (lst) (mapcar #'M3-down-a-phrase lst)) 
(defun P4-up-phrases (lst) (mapcar #'P4-up-a-phrase lst)) 
(defun P4-down-phrases (lst) (mapcar #'P4-down-a-phrase lst)) 
(defun +4-5-up-phrases (lst) (mapcar #'+4-5-up-a-phrase lst)) 
(defun +4-5-down-phrases (lst) (mapcar #'+4-5-down-a-phrase lst)) 
(defun P5-up-phrases (lst) (mapcar #'P5-up-a-phrase lst)) 
(defun P5-down-phrases (lst) (mapcar #'P5-down-a-phrase lst)) 
(defun m6-up-phrases (lst) (mapcar #'m6-up-a-phrase lst)) 
(defun m6-down-phrases (lst) (mapcar #'m6-down-a-phrase lst)) 
(defun M6-up-phrases (lst) (mapcar #'M6-up-a-phrase lst)) 
(defun M6-down-phrases (lst) (mapcar #'M6-down-a-phrase lst)) 
(defun m7-up-phrases (lst) (mapcar #'m7-up-a-phrase lst)) 
(defun m7-down-phrases (lst) (mapcar #'m7-down-a-phrase lst)) 
(defun M7-up-phrases (lst) (mapcar #'M7-up-a-phrase lst)) 
(defun M7-down-phrases (lst) (mapcar #'M7-down-a-phrase lst))