;;;
;;; c:\\program files\\acl62\\music38.cl
;;;
(load "c:\\program files\\acl62\\music37.cl")
(make-frame-from-list
'(modulation-patterns-C (heikou-tyou-1 (value "Bm7-5" "E7"
("Am7") "D7" "Dm7" "G7" ("CM7")))
(heikou-tyou-2 (value ("CM7")
"Am7" "Dm7" "G7" ("Am7") "Bm7-5"))
(zoku-tyou-1 (value ("CM7")
"Am7" "D7" ("GM7") "Bm7" "Em7"))
(zoku-tyou-2 (value ("CM7")
"-Bdim7" "Am7" "-A7" ("GM7") "Bm7"
"Am7"))
(kazoku-tyou-1 (value "Dm7"
"G7" "Gm7" "C7" ("FM7") "-BM7"
"Gm7"
"C7"
("FM7")))
(kazoku-tyou-2 (value ("CM7")
"Em7" "Am7" "-BM7" "Am7" "Gm7"
"C7"
("FM7")))
(hanon-up-1 (value ("CM7")
"Dm7" "Em7" "A7" "-Em7" "-A7"
("-DM7")
"-GM7"))
(hanon-up-2 (value "Dm7"
"G7" "-Em7" "-A7" ("-DM7") "-Bm7"))
(zenon-up-1 (value ("CM7")
"B7" "E7" "A7" ("DM7") "+Fm7"
"Bm7"))
(zenon-up-2 (value ("CM7")
"FM7" "-BM7" "-EM7" ("DM7") "Bm7"))
(3do-kei-1 (value ("CM7")
"Dm7" "G7" ("-EM7") "Fm7" "-B7"
("-EM7")))
(3do-kei-2 (value ("CM7")
"FM7" "Fm7" ("EM7") "AM7" "+Fm7"
"B7" ("EM7")))
(zou4do (value "Em7" "Am7"
"Dm7" "G7" ("-GM7") "-Am7"))
(6do-kei-1 (value ("CM7")
"Dm7" "Gm7" "C7" ("-AM7") "Cm7"
"F7"))
(6do-kei-2 (value ("CM7")
"-BM7" "CM7" "E7" ("AM7") "+Fm7"))
(7do-kei-1 (value "Dm7"
"G7" "Cm7" "F7" "-BM7" "-EM7"
"F7" ("-BM7")))
(7do-kei-2 (value "FM7"
"Em7" "-Em7" "Dm7" "+Cm7" ("BM7")
"+Gm7"))))
(defun get-modulate-patterns (key)
(if (eq key 'C)
(fget-frame 'modulation-patterns-C)
(modulate-key1-to-key2 (fget-frame 'modulation-patterns-C) 'C key)))
(defun list-modulate-patterns (key)
(print (get-modulate-patterns key)))
(defun get-modulation ()
(prog (key num)
(format t "~%Enter a key !")
(setf key (car (read-sentence)))
(format t "~%1.平行調")
(format t "~%2.属調")
(format t "~%3.下属調")
(format t "~%4.半音上の調")
(format t "~%5.全音上の調")
(format t "~%6.3度系の調")
(format t "~%7.増4度の調")
(format t "~%8.6度系の調")
(format t "~%9.7度系の調")
loop1
(format t "~%Enter a number !")
(setf num (car (read-sentence)))
(if (member num '(1 2 3 4 5 6 7 8 9))
(go loop2)
(go loop1))
loop2
(case num
(1 (return (list key
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'heikou-tyou-1) 'C key)
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'heikou-tyou-2) 'C key))))
(2 (return (list key
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'zoku-tyou-1) 'C key)
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'zoku-tyou-2) 'C key))))
(3 (return (list key
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'kazoku-tyou-1) 'C key)
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'kazoku-tyou-2) 'C key))))
(4 (return (list key
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'hanon-up-1) 'C key)
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'hanon-up-2) 'C key))))
(5 (return (list key
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'zenon-up-1) 'C key)
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'zenon-up-2) 'C key))))
(6 (return (list key
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'3do-kei-1) 'C key)
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'3do-kei-2) 'C key))))
(7 (return (list key
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'zou4do) 'C key))))
(8 (return (list key
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'6do-kei-1) 'C key)
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'6do-kei-2) 'C key))))
(9 (return (list key
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'7do-kei-1) 'C key)
(modulate-key1-to-key2 (fget-i 'modulation-patterns-C
'7do-kei-2) 'C key)))))))