diff implementations/midi/methods.lisp @ 228:16b99fc989aa

Add some basic midi predicate and accessor functions. Ignore-this: ab60873a92efc7f4c3cd98cdb938dcea darcs-hash:20090918100419-16a00-bd8423ddea7a4700d7e1c5300e4dafd35113897c.gz committer: Jamie Forth <j.forth@gold.ac.uk>
author j.forth <j.forth@gold.ac.uk>
date Thu, 24 Feb 2011 11:23:18 +0000
parents 619194befdd4
children 93f8768b12dd
line wrap: on
line diff
--- a/implementations/midi/methods.lisp	Thu Feb 24 11:23:18 2011 +0000
+++ b/implementations/midi/methods.lisp	Thu Feb 24 11:23:18 2011 +0000
@@ -12,7 +12,7 @@
     (setf (%midi-pitched-event-patch event) value)
     event)
 
-(Defgeneric midi-channel (midi-message)
+(defgeneric midi-channel (midi-message)
   (:documentation "MIDI channel. Also used for midi output"))
 (defmethod midi-channel ((midi-message midi-message))
   (%midi-message-channel midi-message))
@@ -35,6 +35,13 @@
 (defmethod midi-patch ((event midi-pitched-event))
   (%midi-pitched-event-patch event))
 
+(defgeneric midi-note-number (event)
+  (:documentation "Same as get-pitch-for-midi"))
+(defmethod midi-note-number ((event midi-percussive-event))
+  (midi-drum-sound event))
+(defmethod midi-note-number ((event midi-pitched-event))
+  (midi-pitch-number event))
+
 (defgeneric midi-drum-sound (event)
   (:documentation "MIDI pitch for unpitched events (usually, drum
   sound for drum kits on channel 10, but also for semi-pitched
@@ -42,6 +49,15 @@
 (defmethod midi-drum-sound ((event midi-percussive-event))
   (%midi-percussive-event-sound event))
 
+(defgeneric midi-drum-sound= (event1 event2))
+(defmethod midi-drum-sound= ((event1 midi-percussive-event)
+			     (event2 midi-percussive-event))
+  (= (midi-drum-sound event1) (midi-drum-sound event2)))
+(defmethod midi-drum-sound= ((event1 event)
+			     (event2 event))
+  "Return nil for any comparisons involving non-percussive events."
+  nil)
+
 (defmethod time-signatures ((composition midi-composition))
   (%midi-time-signatures composition))
 (defmethod (setf time-signatures) (sequence (composition midi-composition))