comparison base/charm/example/eg-constituent-constructors.lisp @ 253:b5ffec94ae6d

some very sketchy Charm constituent code
author Jamie Forth <j.forth@gold.ac.uk>
date Thu, 24 Feb 2011 11:23:18 +0000
parents
children
comparison
equal deleted inserted replaced
252:b518b9f904e3 253:b5ffec94ae6d
1 (cl:in-package #:amuse-geerdes)
2
3 ;;; The idea of Charm constituents here is closely tied up with the
4 ;;; database. The basic constructors below will work without a working
5 ;;; database, but obviously not the store and get stuff.
6
7 (asdf:oos 'asdf:load-op 'amuse-geerdes)
8 (asdf:oos 'asdf:load-op 'geerdes-tools)
9 (asdf:oos 'asdf:load-op 'amuse-charm)
10 (use-package 'amuse-charm)
11
12 (defparameter *charm-database* ; just for testing
13 (connect-to-database :database-name "amuse_charm"
14 :username "jamie"
15 :make-default nil))
16 (disconnect-from-database *charm-database*)
17
18 (connect-to-database) ; default amuse connection for getting geerdes data
19 (disconnect-from-database)
20
21 ;(create-charm-db-tables *charm-database*)
22 ;(drop-charm-db-tables *charm-database*)
23
24 (defparameter *composition*
25 (get-composition (g-id-file-id 1)))
26
27 (defparameter *charm-constituent-composition*
28 (composition->charm-constituent *composition*
29 (make-charm-property-list
30 'composition)
31 (make-charm-property-list
32 'polyphonic)))
33
34 (defparameter *charm-constituent-composition-identifier*
35 (store-charm-constituent *charm-constituent-composition*
36 *charm-database*))
37
38 (defparameter *charm-constituent-composition-db*
39 (get-charm-constituent *charm-constituent-composition-identifier*
40 *charm-database*))
41
42
43 ;;; Slice composition into segments
44
45 (defparameter *onset-segments-constituent*
46 (make-onset-segment-constituent *composition*))
47
48 (defparameter *onset-segment-constituent-identifier*
49 (store-charm-constituent *onset-segments-constituent*
50 *charm-database*))
51
52 (defparameter *charm-constituent-composition-db*
53 (get-charm-constituent *onset-segment-constituent-identifier* ;1922
54 *charm-database*))
55
56 ;;; Bar segments
57
58 (defparameter *bar-segments-constituent*
59 (segment-at-bar *composition*))
60
61
62 ;;; Part-like constituents.
63
64 (defparameter *lead-vocals*
65 (geerdes-tools:vocal-part *composition*))
66
67 (defparameter *charm-vocals*
68 (composition->charm-constituent *lead-vocals*
69 (make-charm-property-list 'voice
70 'monophonic)
71 (make-charm-property-list 'song)))
72
73 (defparameter *charm-vocals-identifier*
74 (store-charm-constituent *charm-vocals* *charm-database*))
75
76 (defparameter *charm-vocals-db*
77 (get-charm-constituent *charm-vocals-identifier*
78 *charm-database*))
79
80 (defparameter *bass-guitar*
81 (geerdes-tools:bass-part *composition*))
82
83 (defparameter *charm-bass*
84 (composition->charm-constituent *bass-guitar*
85 (make-charm-property-list 'guitar
86 'polyphonic)
87 (make-charm-property-list 'song)))
88
89 (defparameter *charm-bass-identifier*
90 (store-charm-constituent *charm-bass* *charm-database*))
91
92 (defparameter *charm-bass-db*
93 (get-charm-constituent *charm-bass-identifier* *charm-database*))
94
95
96 ;;; Combine above as events.
97
98 (defparameter *bass+vocals-constituent1*
99 (make-standard-charm-constituent
100 (append (%list-slot-sequence-data *charm-bass*)
101 (%list-slot-sequence-data *charm-vocals*)) *composition*
102 (make-charm-property-list 'vocal 'bass-guitar 'polyphonic)
103 (make-charm-property-list 'song)))
104
105 (defparameter *bass+vocals-constituent1-identifier*
106 (store-charm-constituent *bass+vocals-constituent1* *charm-database*))
107
108 (defparameter *bass+vocals-constituent1-db*
109 (get-charm-constituent *bass+vocals-constituent1-identifier*
110 *charm-database*))
111
112
113 ;;; Combine above as constituents
114
115 (defparameter *bass+vocals-constituent2*
116 (make-standard-charm-constituent
117 (list *charm-bass* *charm-vocals*)
118 *composition*
119 (make-charm-property-list 'vocal 'bass-guitar 'polyphonic)
120 (make-charm-property-list 'song)))
121
122 (defparameter *bass+vocals-constituent2-identifier*
123 (store-charm-constituent *bass+vocals-constituent2*
124 *charm-database*))
125
126 (defparameter *bass+vocals-constituent2-db*
127 (get-charm-constituent *bass+vocals-constituent2-identifier*
128 *charm-database*))