# HG changeset patch # User David Lewis # Date 1166010049 0 # Node ID 70e76c1c87b7987441a921cc94a3135dbfbe20d1 # Parent 930e9880ed3f0eaf6d6daeee147deabe65cdf126 Bug fixes and exports in package.lisp darcs-hash:20061213114049-f76cc-4c4175a1ad8b24e1c5df82c9fb67445ac32977d9.gz diff -r 930e9880ed3f -r 70e76c1c87b7 classes.lisp --- a/classes.lisp Tue Dec 12 14:44:22 2006 +0000 +++ b/classes.lisp Wed Dec 13 11:40:49 2006 +0000 @@ -44,4 +44,5 @@ (defclass event (anchored-period) ()) (defclass pitched-event (event pitch-designator) ()) +(defclass midi-pitched-event (pitched-event chromatic-pitch) ()) (defclass percussive-event (event) ()) diff -r 930e9880ed3f -r 70e76c1c87b7 constructors.lisp --- a/constructors.lisp Tue Dec 12 14:44:22 2006 +0000 +++ b/constructors.lisp Wed Dec 13 11:40:49 2006 +0000 @@ -30,3 +30,10 @@ (defun make-pitch-interval (span) (make-instance 'pitch-interval :span span)) +;; Events + +(defun make-midi-pitched-event (pitch-number onset duration) + (make-instance 'midi-pitched-event + :number pitch-number + :time onset + :interval duration)) \ No newline at end of file diff -r 930e9880ed3f -r 70e76c1c87b7 generics.lisp --- a/generics.lisp Tue Dec 12 14:44:22 2006 +0000 +++ b/generics.lisp Wed Dec 13 11:40:49 2006 +0000 @@ -11,6 +11,12 @@ (defgeneric chromatic-pitch (pitch-designator)) ; How simple are these (defgeneric diatonic-pitch (pitch-designator)) ; if has to be computed? (defgeneric frequency (object)) ;? +(defgeneric chromatic-pitch-number (pitch-designator)) +(defgeneric meredith-chromatic-pitch-number (pitch-designator) + ;; David Meredith's PhD and ps13 code + (:method (p) (- (midi-chromatic-pitch-number p) 21))) +(defgeneric pitch-class (pitch-designator) + (:method (p) (mod (chromatic-pitch-number p) 12))) (defgeneric span (pitch-interval-designator)) (defgeneric duration (period-designator)) @@ -21,7 +27,7 @@ (:method (apd) (timepoint apd))) (defgeneric (setf onset) (value anchored-period-designator)) (defgeneric cut-off (anchored-period-designator) ; name? - (:method (apd) (time+ (onset apd) (duration apd)))) + (:method (apd) (time+ (moment apd) (floating-period apd)))) ;;; Coerce-type accessors @@ -51,6 +57,7 @@ ;;