Mercurial > hg > amuse
changeset 12:f6c08ad94c8a
Updated class structure
darcs-hash:20061205123526-f76cc-2112d3e005b124983905d50fb07f5833b10d215c.gz
author | David Lewis <d.lewis@gold.ac.uk> |
---|---|
date | Tue, 05 Dec 2006 12:35:26 +0000 |
parents | 9f05ce23e71e |
children | ccb65e2f7382 |
files | classes.lisp generics.lisp |
diffstat | 2 files changed, 49 insertions(+), 35 deletions(-) [+] |
line wrap: on
line diff
--- a/classes.lisp Wed Nov 29 12:22:29 2006 +0000 +++ b/classes.lisp Tue Dec 05 12:35:26 2006 +0000 @@ -1,38 +1,41 @@ (cl:in-package #:amuse) -;; basic musical object classes +;; collections of more than one event -(defclass composition () - ()) +(defclass constituent () ()) +(defclass composition (constituent) ()) +(defclass monody (constituent) ()) -(defclass event () - ()) +;; types of information-specifiers -(defclass pitched-event (event) - ()) +(defclass moment-designator () ()) +(defclass time-interval-designator () ()) +(defclass anchored-time-interval-designator (moment-designator time-interval-designator) ()) +(defclass pitch-designator () ()) +(defclass pitch-interval-designator () ()) + +;; time-related classes + +(defclass moment (moment-designator) ()) +(defclass time-interval (time-interval-designator) ()) +(defclass floating-time-interval (time-interval) ()) +(defclass anchored-time-interval (time-interval anchored-time-interval-designator) ()) ;; pitch-related classes -(defclass pitch () +(defclass pitch (pitch-designator) ()) +(defclass chromatic-pitch (pitch) ()) +(defclass diatonic-pitch (pitch) ()) +(defclass frequency (pitch) + ;; I'm having serious doubts about this - frequency, `real'-time and + ;; other non- or partially symbolic elements will probably want to be + ;; expressed differently. ()) -(defclass chromatic-pitch (pitch) - ()) +(defclass pitch-interval (pitch-interval-designator) ()) -(defclass diatonic-pitch (pitch) - ()) +;; events -(defclass frequency (pitch) - ()) - -(defclass interval () - ()) - -;; time-related classes - -(defclass moment () - ()) - -(defclass duration () - ()) - +(defclass event (anchored-time-interval-designator) ()) +(defclass pitched-event (event pitch-designator) ()) +(defclass percussive-event (event) ()) \ No newline at end of file
--- a/generics.lisp Wed Nov 29 12:22:29 2006 +0000 +++ b/generics.lisp Tue Dec 05 12:35:26 2006 +0000 @@ -6,15 +6,15 @@ ;;; Accessors (do we need the get- prefix?) -(defgeneric get-pitch (object &key kind)) ; ? -(defgeneric get-chromatic-pitch (object)) -(defgeneric get-diatonic-pitch (object)) -(defgeneric get-frequency (object)) +(defgeneric get-pitch (object &key kind)) ; ? +(defgeneric get-chromatic-pitch (pitch-designator)) +(defgeneric get-diatonic-pitch (pitch-designator)) +(defgeneric get-frequency (object)) ;? -(defgeneric get-duration (object)) - -(defgeneric get-onset (object)) ; get-time? - +(defgeneric get-duration (time-interval-designator)) +(defgeneric get-time (moment-designator)) +(defgeneric get-onset (moment-designator) + (:method (m-d) (get-time m-d))) ;;; Time Protocol (or moments?) @@ -44,7 +44,6 @@ (defgeneric time/= (object1 object2) (:method (o1 o2) (not (time= o1 o2)))) - ;;; Duration protocol (defgeneric duration> (object1 object2)) @@ -58,6 +57,9 @@ (defgeneric duration/= (object1 object2) (:method (o1 o2) (not (duration= o1 o2)))) +;; for linear scaling: +(defgeneric duration* (object1 object2)) +(defgeneric duration/ (object1 number)) ;;; Pitch protocol @@ -119,6 +121,14 @@ (:method (o1 o2) (or (before o1 o2) (meets o1 o2) (meets o2 o1) (before o2 o1)))) +;; Another time-based function, returning the anchored-time-interval +;; representing the intersection of two +;; anchored-time-interval-specifiers. +(defgeneric intersection (anchored-time-interval-specifier1 + anchored-time-interval-specifier2)) + + + ;;; Time Signature ;;; Tempo @@ -126,3 +136,4 @@ ;;; Dynamics ;;; Voice ;;; Boundary Strength (phrasing) +