Mercurial > hg > amuse
changeset 0:92b28dfc3938
Initial import of generics.lisp.
darcs-hash:20061016144327-aa3d6-7ca926f2defa3eae7b9a0a19cd67fd5fec3fe2f0.gz
author | m.pearce <m.pearce@gold.ac.uk> |
---|---|
date | Mon, 16 Oct 2006 15:43:27 +0100 |
parents | |
children | cbb5b478307e |
files | generics.lisp |
diffstat | 1 files changed, 91 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/generics.lisp Mon Oct 16 15:43:27 2006 +0100 @@ -0,0 +1,91 @@ +;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- +;;;; ====================================================================== +;;;; File: generics.lisp +;;;; Author: Marcus Pearce <m.pearce@gold.ac.uk> +;;;; Created: <2006-10-12 15:14:51 marcusp> +;;;; Time-stamp: <2006-10-12 16:57:51 marcusp> +;;;; ====================================================================== + +;;; 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)) + +;;; Time Signature +;;; Tempo +;;; Tonality (Key Signature / Mode) +;;; Dynamics +;;; Voice +;;; Boundary Strength (phrasing)