comparison implementations/midi/methods.lisp @ 302:ac78ce3d0b10

Add some basic midi predicate and accessor functions. Ignore-this: ab60873a92efc7f4c3cd98cdb938dcea darcs-hash:20090918100419-16a00-bd8423ddea7a4700d7e1c5300e4dafd35113897c.gz
author j.forth <j.forth@gold.ac.uk>
date Fri, 18 Sep 2009 11:04:19 +0100
parents 4a03a1478c02
children 46dd71ef9ab3
comparison
equal deleted inserted replaced
301:58a2d76bb243 302:ac78ce3d0b10
10 (:method (v e) (declare (ignore v)) e)) 10 (:method (v e) (declare (ignore v)) e))
11 (defmethod (setf midi-patch) (value (event midi-pitched-event)) 11 (defmethod (setf midi-patch) (value (event midi-pitched-event))
12 (setf (%midi-pitched-event-patch event) value) 12 (setf (%midi-pitched-event-patch event) value)
13 event) 13 event)
14 14
15 (Defgeneric midi-channel (midi-message) 15 (defgeneric midi-channel (midi-message)
16 (:documentation "MIDI channel. Also used for midi output")) 16 (:documentation "MIDI channel. Also used for midi output"))
17 (defmethod midi-channel ((midi-message midi-message)) 17 (defmethod midi-channel ((midi-message midi-message))
18 (%midi-message-channel midi-message)) 18 (%midi-message-channel midi-message))
19 19
20 (defgeneric midi-track (midi-message) 20 (defgeneric midi-track (midi-message)
33 (:documentation "MIDI patch (instrumental sound). Also used for 33 (:documentation "MIDI patch (instrumental sound). Also used for
34 midi output")) 34 midi output"))
35 (defmethod midi-patch ((event midi-pitched-event)) 35 (defmethod midi-patch ((event midi-pitched-event))
36 (%midi-pitched-event-patch event)) 36 (%midi-pitched-event-patch event))
37 37
38 (defgeneric midi-note-number (event)
39 (:documentation "Same as get-pitch-for-midi"))
40 (defmethod midi-note-number ((event midi-percussive-event))
41 (midi-drum-sound event))
42 (defmethod midi-note-number ((event midi-pitched-event))
43 (midi-pitch-number event))
44
38 (defgeneric midi-drum-sound (event) 45 (defgeneric midi-drum-sound (event)
39 (:documentation "MIDI pitch for unpitched events (usually, drum 46 (:documentation "MIDI pitch for unpitched events (usually, drum
40 sound for drum kits on channel 10, but also for semi-pitched 47 sound for drum kits on channel 10, but also for semi-pitched
41 SFX, etc). Also used for midi output")) 48 SFX, etc). Also used for midi output"))
42 (defmethod midi-drum-sound ((event midi-percussive-event)) 49 (defmethod midi-drum-sound ((event midi-percussive-event))
43 (%midi-percussive-event-sound event)) 50 (%midi-percussive-event-sound event))
51
52 (defgeneric midi-drum-sound= (event1 event2))
53 (defmethod midi-drum-sound= ((event1 midi-percussive-event)
54 (event2 midi-percussive-event))
55 (= (midi-drum-sound event1) (midi-drum-sound event2)))
56 (defmethod midi-drum-sound= ((event1 event)
57 (event2 event))
58 "Return nil for any comparisons involving non-percussive events."
59 nil)
44 60
45 (defmethod time-signatures ((composition midi-composition)) 61 (defmethod time-signatures ((composition midi-composition))
46 (%midi-time-signatures composition)) 62 (%midi-time-signatures composition))
47 (defmethod (setf time-signatures) (sequence (composition midi-composition)) 63 (defmethod (setf time-signatures) (sequence (composition midi-composition))
48 (setf (%midi-time-signatures composition) sequence)) 64 (setf (%midi-time-signatures composition) sequence))