;; AI Final Project ;; Module: Composition ;; CSC 466 - Graci ;; Jacob Peck 20110330 ; model the composition (defclass composition () ( (data :accessor composition-data :initarg :data :initform '()) (title :accessor composition-title :initarg :title :initform "composition") ) ) (defmethod make-composition ((title string) (data list)) (make-instance 'composition :data data :title title) ) (defmethod visualize-composition ((comp composition)) (format t "Composition-> Title: ~A Data: ~A~%" (composition-title comp) (composition-data comp)) ) ; retrograde of a composition (reversed) (defmethod retrograde-composition ((comp composition) &aux retrograde) (setf retrograde (make-composition (concatenate 'string (composition-title comp) "-retrograde") (reverse (composition-data comp)))) retrograde ) ; drop of a composition (drop the last nr-drop notes) (defmethod drop-composition ((comp composition) (nr-drop integer) &aux drop) (setf drop (make-composition (concatenate 'string (composition-title comp) "-drop" (write-to-string nr-drop)) (firstn (composition-data comp) (- (length (composition-data comp)) nr-drop)))) drop )