diff implementations/mtp/methods.lisp @ 96:fade42e8a087

implementations/mtp/: implement CROTCHET darcs-hash:20070724131529-c0ce4-5c6b749757ff12c1d2c878b95d18465bedc58102.gz
author Marcus Pearce <m.pearce@gold.ac.uk>
date Tue, 24 Jul 2007 14:15:29 +0100
parents 23c3be4c445f
children cb7576b21c8e
line wrap: on
line diff
--- a/implementations/mtp/methods.lisp	Tue Jul 24 14:14:57 2007 +0100
+++ b/implementations/mtp/methods.lisp	Tue Jul 24 14:15:29 2007 +0100
@@ -124,31 +124,34 @@
 
 ;;; Constituents from compositions: time-signatures 
 
-(defgeneric timebase (object))
-
-(defmethod timebase ((dataset mtp-dataset))
-  (dataset-timebase dataset))
+(defmethod crotchet ((dataset mtp-dataset))
+  (amuse:make-floating-period 
+   (/ (dataset-timebase dataset) 4)))
 
 #.(clsql:locally-enable-sql-reader-syntax)
-(defmethod timebase ((composition mtp-composition))
-  (car (clsql:select [timebase] :from [mtp-dataset]
-                     :where [= [dataset-id] 
-                               (dataset-id composition)]
-                     :flatp t 
-                     :field-names nil)))
-(defmethod timebase ((event mtp-event))
-  (car (clsql:select [timebase] :from [mtp-dataset]
-                     :where [= [dataset-id] 
-                               (dataset-id event)]
-                     :flatp t 
-                     :field-names nil)))
+(defmethod crotchet ((composition mtp-composition))
+  (let ((timebase 
+         (car (clsql:select [timebase] :from [mtp-dataset]
+                            :where [= [dataset-id] 
+                                      (dataset-id composition)]
+                            :flatp t 
+                            :field-names nil))))
+    (amuse:make-floating-period (/ timebase 4))))
+(defmethod crotchet ((event mtp-event))
+  (let ((timebase 
+         (car (clsql:select [timebase] :from [mtp-dataset]
+                            :where [= [dataset-id] 
+                                      (dataset-id event)]
+                            :flatp t 
+                            :field-names nil))))
+    (amuse:make-floating-period (/ timebase 4))))
 #.(clsql:restore-sql-reader-syntax-state) 
 
 (defmethod get-applicable-time-signatures ((e mtp-event) c)
   (declare (ignore c))
   (let ((pulses (%mtp-pulses e))
         (barlength (%mtp-barlength e))
-        (timebase (timebase e)))
+        (timebase (* 4 (duration (crotchet e)))))
     (list 
      (amuse:make-basic-time-signature pulses 
                                       (/ timebase (/ barlength pulses))