;;;
;;; c:\\program files\\acl62\\music46.cl
;;;
(load "c:\\program files\\acl62\\music45.cl")

(defun rotate-for-12 (lst n) (rotate-list-left lst n))

(defun get-rotation-for-12 (lst)
  (list lst
     (rotate-for-12 lst 1)
     (rotate-for-12 lst 2)
     (rotate-for-12 lst 3)
     (rotate-for-12 lst 4)
     (rotate-for-12 lst 5)
     (rotate-for-12 lst 6)
     (rotate-for-12 lst 7)
     (rotate-for-12 lst 8)
     (rotate-for-12 lst 9)
     (rotate-for-12 lst 10)
     (rotate-for-12 lst 11)))

(defun indicate-rotation-for-12 (lst)
  (format t "~%~a~%~a~%~a~%~a~%~a~%~a~%~a~%~a~%~a~%~a~%~a~%~a"
    lst
    (rotate-for-12 lst 1)
    (rotate-for-12 lst 2)
    (rotate-for-12 lst 3)
    (rotate-for-12 lst 4)
    (rotate-for-12 lst 5)
    (rotate-for-12 lst 6)
    (rotate-for-12 lst 7)
    (rotate-for-12 lst 8)
    (rotate-for-12 lst 9)
    (rotate-for-12 lst 10)
    (rotate-for-12 lst 11)))

(defun indicate-rotation-for-12-list (lst)
  (do ((ll (get-rotation-for-12 lst) (cdr ll)))
     ((null ll))
    (print '**********************************)
    (twelve-kinds-of-notes (car ll))))

(defun make-4-rotation ()
  (let* ((l1 (make-O))
      (l2 (make-R l1))
      (l3 (make-I l1))
      (l4 (make-IR l1)))
    (format t "~%*******基本形*******")
    (indicate-rotation-for-12 l1)
    (format t "~%*******逆行形*******")
    (indicate-rotation-for-12 l2)
    (format t "~%*******反行形*******")
    (indicate-rotation-for-12 l3)
    (format t "~%*******反行逆行形*******")
    (indicate-rotation-for-12 l4)))

(defun make-4-rotation-2 ()
  (let* ((l1 (make-O-2))
      (l2 (make-R l1))
      (l3 (make-I l1))
      (l4 (make-IR l1)))
    (format t "~%*******基本形*******")
    (indicate-rotation-for-12 l1)
    (format t "~%*******逆行形*******")
    (indicate-rotation-for-12 l2)
    (format t "~%*******反行形*******")
    (indicate-rotation-for-12 l3)
    (format t "~%*******反行逆行形*******")
    (indicate-rotation-for-12 l4)))

(defun make-all-rotation ()
  (let* ((l1 (make-O))
      (l2 (make-R l1))
      (l3 (make-I l1))
      (l4 (make-IR l1)))
    (format t "~%****** 基本形 *******")
    (format t "~%***********P1**********")
    (indicate-rotation-for-12 l1)
    (format t "~%***********m2***********")
    (indicate-rotation-for-12 (m2-up l1))
    (format t "~%***********M2**********")
    (indicate-rotation-for-12 (M2-up l1))
    (format t "~%***********m3**********")
    (indicate-rotation-for-12 (m3-up l1))
    (format t "~%***********M3**********")
    (indicate-rotation-for-12 (M3-up l1))
    (format t "~%***********P4**********")
    (indicate-rotation-for-12 (P4-up l1))
    (format t "~%***********+4-5**********")
    (indicate-rotation-for-12 (+4-5-up l1))
    (format t "~%***********P5**********")
    (indicate-rotation-for-12 (P5-up l1))
    (format t "~%***********m6**********")
    (indicate-rotation-for-12 (m6-up l1))
    (format t "~%***********M6**********")
    (indicate-rotation-for-12 (M6-up l1))
    (format t "~%***********m7**********")
    (indicate-rotation-for-12 (m7-up l1))
    (format t "~%***********M7**********")
    (indicate-rotation-for-12 (M7-up l1))
    (format t "~%****** 逆行形 *******")
    (format t "~%***********P1**********")
    (indicate-rotation-for-12 l2)
    (format t "~%***********m2***********")
    (indicate-rotation-for-12 (m2-up l2))
    (format t "~%***********M2**********")
    (indicate-rotation-for-12 (M2-up l2))
    (format t "~%***********m3**********")
    (indicate-rotation-for-12 (m3-up l2))
    (format t "~%***********M3**********")
    (indicate-rotation-for-12 (M3-up l2))
    (format t "~%***********P4**********")
    (indicate-rotation-for-12 (P4-up l2))
    (format t "~%***********+4-5**********")
    (indicate-rotation-for-12 (+4-5-up l2))
    (format t "~%***********P5**********")
    (indicate-rotation-for-12 (P5-up l2))
    (format t "~%***********m6**********")
    (indicate-rotation-for-12 (m6-up l2))
    (format t "~%***********M6**********")
    (indicate-rotation-for-12 (M6-up l2))
    (format t "~%***********m7**********")
    (indicate-rotation-for-12 (m7-up l2))
    (format t "~%***********M7**********")
    (indicate-rotation-for-12 (M7-up l2))
    (format t "~%****** 反行形 *******")
    (format t "~%***********P1**********")
    (indicate-rotation-for-12 l3)
    (format t "~%***********m2***********")
    (indicate-rotation-for-12 (m2-up l3))
    (format t "~%***********M2**********")
    (indicate-rotation-for-12 (M2-up l3))
    (format t "~%***********m3**********")
    (indicate-rotation-for-12 (m3-up l3))
    (format t "~%***********M3**********")
    (indicate-rotation-for-12 (M3-up l3))
    (format t "~%***********P4**********")
    (indicate-rotation-for-12 (P4-up l3))
    (format t "~%***********+4-5**********")
    (indicate-rotation-for-12 (+4-5-up l3))
    (format t "~%***********P5**********")
    (indicate-rotation-for-12 (P5-up l3))
    (format t "~%***********m6**********")
    (indicate-rotation-for-12 (m6-up l3))
    (format t "~%***********M6**********")
    (indicate-rotation-for-12 (M6-up l3))
    (format t "~%***********m7**********")
    (indicate-rotation-for-12 (m7-up l3))
    (format t "~%***********M7**********")
    (indicate-rotation-for-12 (M7-up l3))
    (format t "~%****** 反行逆行形 *******")
    (format t "~%***********P1**********")
    (indicate-rotation-for-12 l4)
    (format t "~%***********m2***********")
    (indicate-rotation-for-12 (m2-up l4))
    (format t "~%***********M2**********")
    (indicate-rotation-for-12 (M2-up l4))
    (format t "~%***********m3**********")
    (indicate-rotation-for-12 (m3-up l4))
    (format t "~%***********M3**********")
    (indicate-rotation-for-12 (M3-up l4))
    (format t "~%***********P4**********")
    (indicate-rotation-for-12 (P4-up l4))
    (format t "~%***********+4-5**********")
    (indicate-rotation-for-12 (+4-5-up l4))
    (format t "~%***********P5**********")
    (indicate-rotation-for-12 (P5-up l4))
    (format t "~%***********m6**********")
    (indicate-rotation-for-12 (m6-up l4))
    (format t "~%***********M6**********")
    (indicate-rotation-for-12 (M6-up l4))
    (format t "~%***********m7**********")
    (indicate-rotation-for-12 (m7-up l4))
    (format t "~%***********M7**********")
    (indicate-rotation-for-12 (M7-up l4))))

(defun make-all-rotation-2 ()
  (let* ((l1 (make-O-2))
      (l2 (make-R l1))
      (l3 (make-I l1))
      (l4 (make-IR l1)))
    (format t "~%****** 基本形 *******")
    (format t "~%***********P1**********")
    (indicate-rotation-for-12 l1)
    (format t "~%***********m2***********")
    (indicate-rotation-for-12 (m2-up l1))
    (format t "~%***********M2**********")
    (indicate-rotation-for-12 (M2-up l1))
    (format t "~%***********m3**********")
    (indicate-rotation-for-12 (m3-up l1))
    (format t "~%***********M3**********")
    (indicate-rotation-for-12 (M3-up l1))
    (format t "~%***********P4**********")
    (indicate-rotation-for-12 (P4-up l1))
    (format t "~%***********+4-5**********")
    (indicate-rotation-for-12 (+4-5-up l1))
    (format t "~%***********P5**********")
    (indicate-rotation-for-12 (P5-up l1))
    (format t "~%***********m6**********")
    (indicate-rotation-for-12 (m6-up l1))
    (format t "~%***********M6**********")
    (indicate-rotation-for-12 (M6-up l1))
    (format t "~%***********m7**********")
    (indicate-rotation-for-12 (m7-up l1))
    (format t "~%***********M7**********")
    (indicate-rotation-for-12 (M7-up l1))
    (format t "~%****** 逆行形 *******")
    (format t "~%***********P1**********")
    (indicate-rotation-for-12 l2)
    (format t "~%***********m2***********")
    (indicate-rotation-for-12 (m2-up l2))
    (format t "~%***********M2**********")
    (indicate-rotation-for-12 (M2-up l2))
    (format t "~%***********m3**********")
    (indicate-rotation-for-12 (m3-up l2))
    (format t "~%***********M3**********")
    (indicate-rotation-for-12 (M3-up l2))
    (format t "~%***********P4**********")
    (indicate-rotation-for-12 (P4-up l2))
    (format t "~%***********+4-5**********")
    (indicate-rotation-for-12 (+4-5-up l2))
    (format t "~%***********P5**********")
    (indicate-rotation-for-12 (P5-up l2))
    (format t "~%***********m6**********")
    (indicate-rotation-for-12 (m6-up l2))
    (format t "~%***********M6**********")
    (indicate-rotation-for-12 (M6-up l2))
    (format t "~%***********m7**********")
    (indicate-rotation-for-12 (m7-up l2))
    (format t "~%***********M7**********")
    (indicate-rotation-for-12 (M7-up l2))
    (format t "~%****** 反行形 *******")
    (format t "~%***********P1**********")
    (indicate-rotation-for-12 l3)
    (format t "~%***********m2***********")
    (indicate-rotation-for-12 (m2-up l3))
    (format t "~%***********M2**********")
    (indicate-rotation-for-12 (M2-up l3))
    (format t "~%***********m3**********")
    (indicate-rotation-for-12 (m3-up l3))
    (format t "~%***********M3**********")
    (indicate-rotation-for-12 (M3-up l3))
    (format t "~%***********P4**********")
    (indicate-rotation-for-12 (P4-up l3))
    (format t "~%***********+4-5**********")
    (indicate-rotation-for-12 (+4-5-up l3))
    (format t "~%***********P5**********")
    (indicate-rotation-for-12 (P5-up l3))
    (format t "~%***********m6**********")
    (indicate-rotation-for-12 (m6-up l3))
    (format t "~%***********M6**********")
    (indicate-rotation-for-12 (M6-up l3))
    (format t "~%***********m7**********")
    (indicate-rotation-for-12 (m7-up l3))
    (format t "~%***********M7**********")
    (indicate-rotation-for-12 (M7-up l3))
    (format t "~%****** 反行逆行形 *******")
    (format t "~%***********P1**********")
    (indicate-rotation-for-12 l4)
    (format t "~%***********m2***********")
    (indicate-rotation-for-12 (m2-up l4))
    (format t "~%***********M2**********")
    (indicate-rotation-for-12 (M2-up l4))
    (format t "~%***********m3**********")
    (indicate-rotation-for-12 (m3-up l4))
    (format t "~%***********M3**********")
    (indicate-rotation-for-12 (M3-up l4))
    (format t "~%***********P4**********")
    (indicate-rotation-for-12 (P4-up l4))
    (format t "~%***********+4-5**********")
    (indicate-rotation-for-12 (+4-5-up l4))
    (format t "~%***********P5**********")
    (indicate-rotation-for-12 (P5-up l4))
    (format t "~%***********m6**********")
    (indicate-rotation-for-12 (m6-up l4))
    (format t "~%***********M6**********")
    (indicate-rotation-for-12 (M6-up l4))
    (format t "~%***********m7**********")
    (indicate-rotation-for-12 (m7-up l4))
    (format t "~%***********M7**********")
    (indicate-rotation-for-12 (M7-up l4))))