Mercurial > hg > amuse
comparison generics.lisp @ 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 | e854a73b0328 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:92b28dfc3938 |
---|---|
1 ;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- | |
2 ;;;; ====================================================================== | |
3 ;;;; File: generics.lisp | |
4 ;;;; Author: Marcus Pearce <m.pearce@gold.ac.uk> | |
5 ;;;; Created: <2006-10-12 15:14:51 marcusp> | |
6 ;;;; Time-stamp: <2006-10-12 16:57:51 marcusp> | |
7 ;;;; ====================================================================== | |
8 | |
9 ;;; Accessors (do we need the get- prefix?) | |
10 | |
11 (defgeneric get-pitch (object &key kind)) ; ? | |
12 (defgeneric get-chromatic-pitch (object)) | |
13 (defgeneric get-diatonic-pitch (object)) | |
14 (defgeneric get-frequency (object)) | |
15 | |
16 (defgeneric get-duration (object)) | |
17 | |
18 (defgeneric get-onset (object)) ; get-time? | |
19 | |
20 | |
21 ;;; Time Protocol (or moments?) | |
22 | |
23 ;; negative times/durations -> ERROR? | |
24 | |
25 ;; time+: <time> <duration> -> <time> | |
26 ;; <duration> <time> -> <time> (same as previous?) | |
27 ;; <duration> <duration> -> <duration> (or a distinct duration+?) | |
28 ;; <time> <time> -> ERROR? | |
29 ;; | |
30 ;; time-: <time> <time> -> <duration> | |
31 ;; <time> <duration> -> <time> | |
32 ;; <duration> <duration> -> <duration> (or a distinct duration-?) | |
33 ;; <duration> <time> -> ERROR? | |
34 | |
35 (defgeneric time+ (object1 object2)) | |
36 (defgeneric time- (object1 object2)) | |
37 | |
38 (defgeneric time> (object1 object2)) | |
39 (defgeneric time< (object1 object2)) | |
40 (defgeneric time>= (object1 object2)) | |
41 (defgeneric time<= (object1 object2)) | |
42 (defgeneric time= (object1 object2)) | |
43 (defgeneric time/= (object1 object2)) | |
44 | |
45 ;;; Duration protocol | |
46 | |
47 (defgeneric duration> (object1 object2)) | |
48 (defgeneric duration< (object1 object2)) | |
49 (defgeneric duration>= (object1 object2)) | |
50 (defgeneric duration<= (object1 object2)) | |
51 (defgeneric duration= (object1 object2)) | |
52 (defgeneric duration/= (object1 object2)) | |
53 | |
54 | |
55 ;;; Pitch protocol | |
56 | |
57 ;; pitch+: <pitch> <pitch> -> <pitch> | |
58 ;; <pitch> <interval> -> <pitch> | |
59 ;; <interval> <pitch> -> <pitch> (same as previous?) | |
60 ;; <interval> <interval> -> <interval> (or a distinct interval+?) | |
61 ;; | |
62 ;; pitch-: <pitch> <pitch> -> <interval> | |
63 ;; <pitch> <interval> -> <pitch> | |
64 ;; <interval> <interval> -> <interval> (or a distinct interval-? | |
65 ;; <interval> <pitch> -> ERROR? | |
66 | |
67 (defgeneric pitch+ (object1 object2)) | |
68 (defgeneric pitch- (object1 object2)) | |
69 | |
70 (defgeneric pitch> (object1 object2)) | |
71 (defgeneric pitch< (object1 object2)) | |
72 (defgeneric pitch>= (object1 object2)) | |
73 (defgeneric pitch<= (object1 object2)) | |
74 (defgeneric pitch= (object1 object2)) | |
75 (defgeneric pitch/= (object1 object2)) | |
76 | |
77 ;;; Interval protocol (emphasise _pitch_ not _time_ interval?) | |
78 | |
79 (defgeneric interval> (object1 object2)) | |
80 (defgeneric interval< (object1 object2)) | |
81 (defgeneric interval>= (object1 object2)) | |
82 (defgeneric interval<= (object1 object2)) | |
83 (defgeneric interval= (object1 object2)) | |
84 (defgeneric interval/= (object1 object2)) | |
85 | |
86 ;;; Time Signature | |
87 ;;; Tempo | |
88 ;;; Tonality (Key Signature / Mode) | |
89 ;;; Dynamics | |
90 ;;; Voice | |
91 ;;; Boundary Strength (phrasing) |