Mercurial > hg > amuse
view generics.lisp @ 9:22d090e96582
generics.lisp: Allen's interval relations.
darcs-hash:20061113190010-aa3d6-dcf1cd62eaabdf5819ab0e64c414bdbef59f50f2.gz
author | m.pearce <m.pearce@gold.ac.uk> |
---|---|
date | Mon, 13 Nov 2006 19:00:10 +0000 |
parents | 169e6d42dd51 |
children | 356ee92313be |
line wrap: on
line source
(cl:in-package #:amuse) ;;; Pulling compositions from the database (defgeneric get-composition (identifier)) ;;; 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-duration (object)) (defgeneric get-onset (object)) ; get-time? ;;; Time Protocol (or moments?) ;; negative times/durations -> ERROR? ;; time+: <time> <duration> -> <time> ;; <duration> <time> -> <time> (same as previous?) ;; <duration> <duration> -> <duration> (or a distinct duration+?) ;; <time> <time> -> ERROR? ;; ;; time-: <time> <time> -> <duration> ;; <time> <duration> -> <time> ;; <duration> <duration> -> <duration> (or a distinct duration-?) ;; <duration> <time> -> ERROR? (defgeneric time+ (object1 object2)) (defgeneric time- (object1 object2)) (defgeneric time> (object1 object2)) (defgeneric time< (object1 object2)) (defgeneric time>= (object1 object2)) (defgeneric time<= (object1 object2)) (defgeneric time= (object1 object2)) (defgeneric time/= (object1 object2)) ;;; Duration protocol (defgeneric duration> (object1 object2)) (defgeneric duration< (object1 object2)) (defgeneric duration>= (object1 object2)) (defgeneric duration<= (object1 object2)) (defgeneric duration= (object1 object2)) (defgeneric duration/= (object1 object2)) ;;; Pitch protocol ;; pitch+: <pitch> <pitch> -> <pitch> ;; <pitch> <interval> -> <pitch> ;; <interval> <pitch> -> <pitch> (same as previous?) ;; <interval> <interval> -> <interval> (or a distinct interval+?) ;; ;; pitch-: <pitch> <pitch> -> <interval> ;; <pitch> <interval> -> <pitch> ;; <interval> <interval> -> <interval> (or a distinct interval-? ;; <interval> <pitch> -> ERROR? (defgeneric pitch+ (object1 object2)) (defgeneric pitch- (object1 object2)) (defgeneric pitch> (object1 object2)) (defgeneric pitch< (object1 object2)) (defgeneric pitch>= (object1 object2)) (defgeneric pitch<= (object1 object2)) (defgeneric pitch= (object1 object2)) (defgeneric pitch/= (object1 object2)) ;;; Interval protocol (emphasise _pitch_ not _time_ interval?) (defgeneric interval> (object1 object2)) (defgeneric interval< (object1 object2)) (defgeneric interval>= (object1 object2)) (defgeneric interval<= (object1 object2)) (defgeneric interval= (object1 object2)) (defgeneric interval/= (object1 object2)) ;;; Allen's (1984) interval relations ;;; . equals already defined as INTERVAL= above ;;; . can all be defined in terms of MEETS (defgeneric meets (object1 object2)) (defgeneric before (object1 object2)) (defgeneric overlaps (object1 object2)) (defgeneric during (object1 object2)) (defgeneric starts (object1 object2)) (defgeneric ends (object1 object2)) ;;; and extensions ... ;;; i subinterval j if i starts j or i during j or i ends j (defgeneric subinterval (object1 object2)) ;;; i disjoint j if i before j or i meets j or j meets i or j before i (defgeneric disjoint (object1 object2)) ;;; Time Signature ;;; Tempo ;;; Tonality (Key Signature / Mode) ;;; Dynamics ;;; Voice ;;; Boundary Strength (phrasing)