Mercurial > hg > amuse
comparison implementations/viewpointable/viewpointable.lisp @ 116:b4f4df48337d
Addition of viewpointable classes and methods
These may be in the wrong place, but are designed to facilitate pluggability of viewpoints for well-behaved implementations
darcs-hash:20070726160347-f76cc-6e6da5d488b3f252d0575e42daa566130481f955.gz
author | David Lewis <d.lewis@gold.ac.uk> |
---|---|
date | Thu, 26 Jul 2007 17:03:47 +0100 |
parents | |
children | 0190c6ad759e |
comparison
equal
deleted
inserted
replaced
115:cf198383852d | 116:b4f4df48337d |
---|---|
1 (in-package #:amuse-viewpointing-implementation) | |
2 | |
3 ;; A set of classes and methods such that, if the amuse-form methods | |
4 ;; are implemented, a viewpointable-composition can be made and have | |
5 ;; viewpoint operations carried out without loss of context. | |
6 | |
7 (defclass viewpointable-event (event) | |
8 ((source-event :initarg :source-event | |
9 :accessor %viewpointable-event-source-event) | |
10 (source-composition :initarg :source-composition | |
11 :accessor %viewpointable-event-source-composition))) | |
12 | |
13 (defclass viewpointable-composition (composition) ()) | |
14 | |
15 (defmethod timepoint ((event viewpointable-event)) | |
16 (timepoint (%viewpointable-event-source-event event))) | |
17 | |
18 (defmethod duration ((event viewpointable-event)) | |
19 (duration (%viewpointable-event-source-event event))) | |
20 | |
21 (defmethod midi-pitch-number ((event viewpointable-event)) | |
22 (midi-pitch-number (%viewpointable-event-source-event event))) | |
23 | |
24 (defmethod get-applicable-key-signatures ((event viewpointable-event) foo) | |
25 (declare (ignore foo)) | |
26 (get-applicable-key-signatures (%viewpointable-event-source-event event) | |
27 (%viewpointable-event-source-composition event))) | |
28 | |
29 (defmethod get-applicable-time-signatures ((event viewpointable-event) foo) | |
30 (declare (ignore foo)) | |
31 (get-applicable-time-signatures (%viewpointable-event-source-event event) | |
32 (%viewpointable-event-source-composition event))) | |
33 | |
34 | |
35 (defmethod get-applicable-tempi ((event viewpointable-event) foo) | |
36 (declare (ignore foo)) | |
37 (get-applicable-tempi (%viewpointable-event-source-event event) | |
38 (%viewpointable-event-source-composition event))) | |
39 | |
40 (defmethod crotchet ((event viewpointable-event)) | |
41 (crotchet (%viewpointable-event-source-event event))) | |
42 | |
43 (defmethod diatonic-pitch ((event viewpointable-event)) | |
44 (diatonic-pitch (%viewpointable-event-source-event event))) | |
45 | |
46 (defmethod amuse-segmentation:ground-truth-segmenter-after ((composition viewpointable-composition)) | |
47 (amuse-segmentation:ground-truth-segmenter-after composition)) | |
48 | |
49 (defmethod amuse-segmentation:ground-truth-segmenter-before ((composition viewpointable-composition)) | |
50 (amuse-segmentation:ground-truth-segmenter-before composition)) | |
51 | |
52 (defmethod amuse-segmentation:boundary-strength (segmenter (event viewpointable-event) (composition viewpointable-composition)) | |
53 (declare (ignore composition)) | |
54 (amuse-segmentation:boundary-strength segmenter | |
55 (%viewpointable-event-source-event event) | |
56 (%viewpointable-event-source-composition event))) | |
57 | |
58 (defun make-viewpointable-composition (composition) | |
59 (let ((new-comp (make-instance 'viewpointable-composition | |
60 :time (timepoint composition) | |
61 :interval (duration composition))) | |
62 (event-list) (i 0)) | |
63 (sequence:dosequence (event composition) | |
64 (push (make-instance 'viewpointable-event :source-event event | |
65 :source-composition composition) | |
66 event-list) | |
67 (incf i)) | |
68 (sequence:adjust-sequence new-comp i :initial-contents (reverse event-list)) | |
69 new-comp)) |