Mercurial > hg > amuse
changeset 154:edf2322ea33f
Added copy key and time sigs and tempo. Need to do general version. Only midi-type currently
darcs-hash:20071119173147-40ec0-779ffe4dc4bbc356cc6decf6d0f50cb42f943b83.gz
author | d.lewis <d.lewis@gold.ac.uk> |
---|---|
date | Mon, 19 Nov 2007 17:31:47 +0000 |
parents | 74fc4c6cbf6c |
children | fc6848dda767 |
files | implementations/geerdes/constructors.lisp implementations/midi/methods.lisp |
diffstat | 2 files changed, 32 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/implementations/geerdes/constructors.lisp Wed Nov 14 15:36:11 2007 +0000 +++ b/implementations/geerdes/constructors.lisp Mon Nov 19 17:31:47 2007 +0000 @@ -172,6 +172,7 @@ ;; We want any function that generates a sequence from a geerdes ;; composition to preserve all slot values: +#+nil (defmethod sequence:make-sequence-like :around ((o geerdes-composition) length &key (initial-element nil iep)
--- a/implementations/midi/methods.lisp Wed Nov 14 15:36:11 2007 +0000 +++ b/implementations/midi/methods.lisp Mon Nov 19 17:31:47 2007 +0000 @@ -68,10 +68,41 @@ :velocity velocity :patch patch :sound sound))) +(defgeneric copy-time-signature (time-signature)) +(defmethod copy-time-signature ((time-signature standard-time-signature)) + (make-instance (class-of time-signature) + :numerator (time-signature-numerator time-signature) + :denominator (time-signature-denominator time-signature))) +(defmethod copy-time-signature ((time-signature-period standard-time-signature-period)) + (let ((sig (call-next-method))) + (setf (timepoint sig) (timepoint time-signature-period) + (duration sig) (duration time-signature-period)) + sig)) +(defgeneric copy-tempo (tempo)) +(defmethod copy-tempo ((tempo standard-tempo)) + (make-instance (class-of tempo) + :bpm (bpm tempo))) +(defmethod copy-tempo ((tempo-period standard-tempo-period)) + (let ((tp (call-next-method))) + (setf (timepoint tp) (timepoint tempo-period) + (duration tp) (duration tempo-period)) + tp)) +(defgeneric copy-key-signature (key-signature)) +(defmethod copy-key-signature ((key-signature standard-key-signature)) + (make-instance (class-of key-signature) + :sharp-count (key-signature-sharps key-signature) + :mode (key-signature-mode key-signature))) +(defmethod copy-key-signature ((key-signature-period standard-key-signature-period)) + (let ((sig (call-next-method))) + (setf (timepoint sig) (timepoint key-signature-period) + (duration sig) (duration key-signature-period)) + sig)) + ;; Allow derived sequences from remove-if, etc. to preserve other slot ;; info (timesigs, etc) +#+nil (defmethod sequence:make-sequence-like :around ((o midi-composition) length &key (initial-element nil iep) (initial-contents nil icp))