diff base/methods.lisp @ 67:8b31d54c95be

base/: {TIME-SIGNATURE,KEY-SIGNATURE,TEMPO}-EQUAL moved here from implementations/mtp/ darcs-hash:20070706093228-c0ce4-9ca0951f98303474fb5da95fc20ebdb2c3fa4db0.gz
author Marcus Pearce <m.pearce@gold.ac.uk>
date Fri, 06 Jul 2007 10:32:28 +0100
parents 0f31919a855d
children c9b0739d8dd6
line wrap: on
line diff
--- a/base/methods.lisp	Wed Jul 04 12:00:15 2007 +0100
+++ b/base/methods.lisp	Fri Jul 06 10:32:28 2007 +0100
@@ -30,15 +30,43 @@
 (defmethod beat-units ((time-signature basic-time-signature))
   (%basic-time-signature-denominator time-signature))
 
+(defmethod time-signature-equal ((ts1 basic-time-signature) 
+                                 (ts2 basic-time-signature))
+  (let ((n1 (time-signature-numerator ts1))
+        (n2 (time-signature-numerator ts2))
+        (d1 (time-signature-denominator ts1))
+        (d2 (time-signature-denominator ts2)))
+    (and n1 n2 (= n1 n2) 
+         d1 d2 (= d1 d2))))
+
 (defmethod key-signature-sharps ((key-signature basic-key-signature))
   (%basic-key-signature-sharp-count key-signature))
 
 (defmethod key-signature-mode ((ks midi-key-signature))
   (%midi-key-signature-mode ks))
 
+(defmethod key-signature-equal ((ks1 basic-key-signature) 
+                                (ks2 basic-key-signature))
+  (let ((s1 (key-signature-sharps ks1))
+        (s2 (key-signature-sharps ks2)))
+    (and s1 s2 (= s1 s2))))
+
+(defmethod key-signature-equal ((ks1 midi-key-signature) 
+                                (ks2 midi-key-signature))
+  (let ((s1 (key-signature-sharps ks1))
+        (s2 (key-signature-sharps ks2))
+        (m1 (key-signature-mode   ks1))
+        (m2 (key-signature-mode   ks2)))
+    (and s1 s2 (= s1 s2) 
+         m1 m2 (= m1 m2))))
+
 (defmethod bpm ((tempo tempo))
   (%tempo-bpm tempo))
 
+(defmethod tempo-equal ((t1 tempo) (t2 tempo))
+  (and (bpm t1) (bpm t2) (= t1 t2)))
+       
+
 ;; Time protocol
 
 (defmethod time+ ((object1 moment) (object2 period))