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))
--- a/base/package.lisp	Fri Jul 20 17:12:42 2007 +0100
+++ b/base/package.lisp	Mon Jul 23 15:06:51 2007 +0100
@@ -120,4 +120,5 @@
            #:make-mips-pitch
            #:octave 
            #:diatonic-pitch-accidental
+           #:ensure-monody
 	   ))