Mercurial > hg > amuse
changeset 89:0b4c624910f1
base/: basic protocol for accessing monodies
darcs-hash:20070723140651-c0ce4-2c828ea984eb92f0ccb73866a6a496131c8fa736.gz
author | Marcus Pearce <m.pearce@gold.ac.uk> |
---|---|
date | Mon, 23 Jul 2007 15:06:51 +0100 |
parents | 8ea75cc8bc2c |
children | 23c3be4c445f |
files | base/classes.lisp base/generics.lisp base/methods.lisp base/package.lisp |
diffstat | 4 files changed, 19 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/base/classes.lisp Fri Jul 20 17:12:42 2007 +0100 +++ b/base/classes.lisp Mon Jul 23 15:06:51 2007 +0100 @@ -8,7 +8,7 @@ ;; sequences. ()) (defclass composition (time-ordered-constituent) ()) -(defclass monody (time-ordered-constituent) ()) +(defclass monody (composition) ()) ;; types of information-specifiers
--- a/base/generics.lisp Fri Jul 20 17:12:42 2007 +0100 +++ b/base/generics.lisp Mon Jul 23 15:06:51 2007 +0100 @@ -4,6 +4,11 @@ (defgeneric get-composition (identifier)) +(defgeneric monody (object) + (:documentation "Returns a monody.")) +(defgeneric ensure-monody (object) + (:documentation "Returns a generalised boolean.")) + ;;; Getting constituents from compositions ;; IS this the mechanism we want to use (defgeneric time-signatures (composition)
--- a/base/methods.lisp Fri Jul 20 17:12:42 2007 +0100 +++ b/base/methods.lisp Mon Jul 23 15:06:51 2007 +0100 @@ -1,5 +1,17 @@ (cl:in-package #:amuse) +;;; monody + +(defmethod ensure-monody ((m monody)) + (let ((result t)) + (dotimes (i (1- (length m)) result) + ;; assumes the events are time ordered which (since monody is a + ;; subclass of time-ordered-constituent) they ought to be. + (let ((e1 (elt m i)) + (e2 (elt m (1+ i)))) + (unless (or (before e1 e2) (meets e1 e2)) + (setf result nil)))))) + ;;; diatonic pitch (defmethod octave ((dp diatonic-pitch))