;;;
;;; c:\\program files\\acl62\\music58.cl
;;;
;;;
;;; (load "c:\\program files\\acl62\\music58.cl")
;;;
(load "c:\\program files\\acl62\\music57.cl")
(defun get-forth-interval-forward (pair)
(let ((lst '(do fa +la +re +so +do +fa si mi la re so))
(lst2 (get-chord-with-tension-from-pair pair)))
(do ((l lst (cdr l))
(w))
((null l) (reverse w))
(if (member (car l) lst2)
(push (car l) w)))))
(defun get-forth-interval-backward (pair)
(let ((lst '(do so re la mi si +fa +do +so +re +la fa))
(lst2 (get-chord-with-tension-from-pair pair)))
(do ((l lst (cdr l))
(w))
((null l) (reverse w))
(if (member (car l) lst2)
(push (car l) w)))))
(defun rotate-forth-interval-forward (pair note)
(let ((lst (get-forth-interval-forward pair)))
(rotate-list-left lst
(- (get-position-of-an-element note lst) 1))))
(defun rotate-forth-interval-backward (pair note)
(let ((lst (get-forth-interval-backward pair)))
(rotate-list-left lst
(- (get-position-of-an-element note lst) 1))))
(defun get-forth-interval-forward-end-with-note (pair note)
(reverse (rotate-forth-interval-backward pair note)))
(defun get-forth-interval-backward-end-with-note (pair note)
(reverse (rotate-forth-interval-forward pair note)))
(defun get-forth-interval-forward-at-random (pair)
(let ((lst (get-forth-interval-forward pair)))
(rotate-forth-interval-forward
pair (nth (random (length lst)) lst))))
(defun get-forth-interval-backward-at-random (pair)
(let ((lst (get-forth-interval-backward pair)))
(rotate-forth-interval-backward
pair (nth (random (length lst)) lst))))
(defun get-forth-interval-at-random (pair)
(case (random 2)
(0 (get-forth-interval-forward-at-random pair))
(1 (get-forth-interval-backward-at-random pair))))
(defun get-forth-interval-at-random-and-cut (pair)
(let ((lst (get-forth-interval-at-random pair)))
(cut-list-at-length
(+ (random (length lst)) 1) lst)))
(defun get-forth-interval-at-random-and-cut-2 (pair)
(let ((lst (get-forth-interval-at-random pair)))
(cut-list-at-length (+ (random 4) 1) lst)))
|