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)