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)