# HG changeset patch # User j.forth # Date 1251477654 -3600 # Node ID 204d6d1f4f6ab63b6add7bcec6c3fa17cd6e9fb9 # Parent 6be947d9e7c3f72ce289cd6fb3c011375e4790fe add composition slot to event (geerdes) Ignore-this: 7ece48560d6cc689711c5864e49a0360 darcs-hash:20090828164054-16a00-57b981532296c149640ab1e48439cdb88c41f2cf.gz diff -r 6be947d9e7c3 -r 204d6d1f4f6a implementations/geerdes/classes.lisp --- a/implementations/geerdes/classes.lisp Fri Aug 28 17:36:17 2009 +0100 +++ b/implementations/geerdes/classes.lisp Fri Aug 28 17:40:54 2009 +0100 @@ -64,14 +64,15 @@ (defclass geerdes-event (geerdes-object) () (:documentation "Base class for geerdes events.")) -(defclass geerdes-pitched-event (midi-pitched-event geerdes-event) +(defclass geerdes-pitched-event (midi-pitched-event geerdes-event + linked-event) ((identifier :initarg :identifier :reader identifier)) (:documentation "Only adds a database identifier to midi-pitched-event")) (defclass geerdes-percussive-event (midi-percussive-event - geerdes-event) + geerdes-event linked-event) ((identifier :initarg :identifier :reader identifier)) (:documentation "Only adds a database identifier to diff -r 6be947d9e7c3 -r 204d6d1f4f6a implementations/geerdes/constructors.lisp --- a/implementations/geerdes/constructors.lisp Fri Aug 28 17:36:17 2009 +0100 +++ b/implementations/geerdes/constructors.lisp Fri Aug 28 17:40:54 2009 +0100 @@ -34,7 +34,8 @@ (%fast-track row) (%fast-onset row timebase) (%fast-duration row timebase) - (%fast-id row)) + (%fast-id row) + composition) (make-geerdes-percussive-event (%fast-pitch row) (%fast-velocity row) (%fast-patch row) @@ -42,7 +43,8 @@ (%fast-track row) (%fast-onset row timebase) (%fast-duration row timebase) - (%fast-id row))))) + (%fast-id row) + composition)))) (when (%fast-monodyp row) (let ((monody-note (copy-event note))) (setf (duration monody-note) (%fast-monody-duration row timebase)) @@ -129,7 +131,8 @@ (< (%fast-patch event-row) 112))) (defun make-geerdes-pitched-event (pitch-number velocity patch channel - track onset duration event-id) + track onset duration event-id + composition) (make-instance 'geerdes-pitched-event :number pitch-number :velocity velocity @@ -139,11 +142,12 @@ :time onset :interval duration :identifier (make-geerdes-event-identifier - event-id))) + event-id) + :composition composition)) (defun make-geerdes-percussive-event (pitch-number velocity patch channel track onset duration - event-id) + event-id composition) (make-instance 'geerdes-percussive-event :sound pitch-number :velocity velocity @@ -153,7 +157,8 @@ :time onset :interval duration :identifier (make-geerdes-event-identifier - event-id))) + event-id) + :composition composition)) (defmethod copy-event ((event geerdes-pitched-event)) (with-slots ((channel amuse-midi::channel) @@ -163,7 +168,8 @@ (interval amuse::interval) (velocity amuse-midi::velocity) (patch amuse-midi::patch) - identifier) + identifier + composition) event (make-instance 'geerdes-pitched-event :channel channel @@ -173,7 +179,8 @@ :interval interval :velocity velocity :patch patch - :identifier identifier))) + :identifier identifier + :composition composition))) (defmethod copy-event ((event geerdes-percussive-event)) (with-slots ((channel amuse-midi::channel) @@ -183,7 +190,8 @@ (velocity amuse-midi::velocity) (patch amuse-midi::patch) (sound amuse-midi::sound) - identifier) + identifier + composition) event (make-instance 'geerdes-percussive-event :channel channel @@ -193,7 +201,8 @@ :velocity velocity :patch patch :sound sound - :identifier identifier))) + :identifier identifier + :composition composition))) ;; We want any function that generates a sequence from a geerdes ;; composition to preserve all slot values: