diff implementations/mtp/methods.lisp @ 291:2d2bc910c364

Handle missing time signature in MTP implementation of GET-APPLICABLE-TIME-SIGNATURES. darcs-hash:20090722123745-c0ce4-b153c9962f3d9f4cc6ce2a44cf1c3a65951c3ce7.gz
author Marcus Pearce <m.pearce@gold.ac.uk>
date Wed, 22 Jul 2009 13:37:45 +0100
parents 03be243f9003
children f0e742e8de06
line wrap: on
line diff
--- a/implementations/mtp/methods.lisp	Thu Jul 16 18:02:08 2009 +0100
+++ b/implementations/mtp/methods.lisp	Wed Jul 22 13:37:45 2009 +0100
@@ -150,12 +150,17 @@
 
 (defmethod get-applicable-time-signatures ((e mtp-event) c)
   (declare (ignore c))
-  (let ((pulses (%mtp-pulses e))
-        (barlength (%mtp-barlength e))
-        (timebase (* 4 (duration (crotchet e)))))
-    (list 
-     (amuse:make-standard-time-signature-period pulses 
-						(/ timebase (/ barlength pulses))
+  ;(format t "~&GATS ~A ~A ~A: pulses = ~A; barlength = ~A.~%" (dataset-id e) (composition-id e) (event-id e) (%mtp-pulses e) (%mtp-barlength e))
+  (let* ((pulses (%mtp-pulses e))
+         (barlength (%mtp-barlength e))
+         (timebase (* 4 (duration (crotchet e))))
+         (numerator (if (null pulses) 0 pulses))
+         (denominator (if (null barlength)
+                          1
+                          (/ timebase (/ barlength pulses)))))
+    (list
+     (amuse:make-standard-time-signature-period numerator
+                                                denominator
 						(timepoint e) 
 						(duration e)))))