Database » History » Version 3

Jeremy Gow, 2013-02-21 03:32 PM

1 2 Jeremy Gow
h1. Database management
2 1 Jeremy Gow
3 3 Jeremy Gow
During [[Installation]] you should have set up the database that IDyOM will use to store musical data.  To recap, every time you run the system you will need to connect to the database, e.g. as follows:
4 1 Jeremy Gow
<pre>
5 3 Jeremy Gow
(clsql:connect '("DIR/example.db") :if-exists :old :database-type :sqlite3)
6 1 Jeremy Gow
</pre>
7 3 Jeremy Gow
The first time you connect to a new database, you need to setup the database tables before you can import any data:
8 1 Jeremy Gow
<pre>
9 1 Jeremy Gow
CL-USER> (mtp-admin:initialise-database)
10 1 Jeremy Gow
</pre>
11 1 Jeremy Gow
12 1 Jeremy Gow
h2. Describing the contents of the database  
13 1 Jeremy Gow
14 1 Jeremy Gow
<pre>
15 1 Jeremy Gow
16 1 Jeremy Gow
CL-USER> (mtp-admin:describe-database)
17 1 Jeremy Gow
18 1 Jeremy Gow
 Songs and ballads from Nova Scotia, Canada.
19 1 Jeremy Gow
 -----------------------------------------------------------------------------
20 1 Jeremy Gow
 ID         No. Compositions     No. events           Mean events/composition
21 1 Jeremy Gow
 0          152                  8552                 56.263157           
22 1 Jeremy Gow
 -----------------------------------------------------------------------------
23 1 Jeremy Gow
24 1 Jeremy Gow
 Chorale melodies harmonised by J.S. Bach.
25 1 Jeremy Gow
 -----------------------------------------------------------------------------
26 1 Jeremy Gow
 ID         No. Compositions     No. events           Mean events/composition
27 1 Jeremy Gow
 1          185                  9227                 49.875675           
28 1 Jeremy Gow
 -----------------------------------------------------------------------------
29 1 Jeremy Gow
30 1 Jeremy Gow
 Chorale soprano melodies harmonised by J.S. Bach.
31 1 Jeremy Gow
 -----------------------------------------------------------------------------
32 1 Jeremy Gow
 ID         No. Compositions     No. events           Mean events/composition
33 1 Jeremy Gow
 2          100                  4693                 46.93               
34 1 Jeremy Gow
 -----------------------------------------------------------------------------
35 1 Jeremy Gow
36 1 Jeremy Gow
 Alsatian folk songs from the Essen Folk Song Collection.
37 1 Jeremy Gow
 -----------------------------------------------------------------------------
38 1 Jeremy Gow
 ID         No. Compositions     No. events           Mean events/composition
39 1 Jeremy Gow
 3          91                   4496                 49.406593           
40 1 Jeremy Gow
 -----------------------------------------------------------------------------
41 1 Jeremy Gow
42 1 Jeremy Gow
... 
43 1 Jeremy Gow
44 1 Jeremy Gow
 Pop melodies used in a segmentation experiment by Daniel Muellensiefen.
45 1 Jeremy Gow
 -----------------------------------------------------------------------------
46 1 Jeremy Gow
 ID         No. Compositions     No. events           Mean events/composition
47 1 Jeremy Gow
 29         15                   1265                 84.333336           
48 1 Jeremy Gow
 -----------------------------------------------------------------------------
49 1 Jeremy Gow
50 1 Jeremy Gow
 Hymn melodies from Hymns Ancient and Modern.
51 1 Jeremy Gow
 -----------------------------------------------------------------------------
52 1 Jeremy Gow
 ID         No. Compositions     No. events           Mean events/composition
53 1 Jeremy Gow
 30         120                  4280                 35.666668           
54 1 Jeremy Gow
 -----------------------------------------------------------------------------
55 1 Jeremy Gow
(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30)
56 1 Jeremy Gow
</pre> 
57 1 Jeremy Gow
58 1 Jeremy Gow
<pre> 
59 1 Jeremy Gow
CL-USER> (mtp-admin:describe-dataset 0 :verbose t)
60 1 Jeremy Gow
61 1 Jeremy Gow
 Songs and ballads from Nova Scotia, Canada.
62 1 Jeremy Gow
 -----------------------------------------------------------------------------
63 1 Jeremy Gow
 ID         No. Compositions     No. events           Mean events/composition
64 1 Jeremy Gow
 0          152                  8552                 56.263157           
65 1 Jeremy Gow
 -----------------------------------------------------------------------------
66 1 Jeremy Gow
 CPITCH (26):     (54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
67 1 Jeremy Gow
                   72 73 74 75 76 77 79 81)
68 1 Jeremy Gow
 MPITCH (17):     (31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47)
69 1 Jeremy Gow
 ACCIDENTAL (3):  (-1 0 1)
70 1 Jeremy Gow
 DUR (14):        (3 4 6 8 12 16 18 24 36 48 60 72 96 120)
71 1 Jeremy Gow
 DELTAST (7):     (0 12 24 36 48 60 72)
72 1 Jeremy Gow
 BIOI (17):       (1 3 4 6 8 12 16 18 24 30 36 48 60 72 84 96 120)
73 1 Jeremy Gow
 KEYSIG (9):      (-4 -3 -2 -1 0 1 2 3 4)
74 1 Jeremy Gow
 MODE (2):        (0 9)
75 1 Jeremy Gow
 BARLENGTH (7):   (36 48 72 96 120 144 168)
76 1 Jeremy Gow
 PULSES (6):      (2 3 4 5 6 7)
77 1 Jeremy Gow
 PHRASE (3):      (-1 0 1)
78 1 Jeremy Gow
 DYN (1):         (NIL)
79 1 Jeremy Gow
 TEMPO (19):      (52 54 60 64 76 80 82 84 92 96 100 108 110 112 120 132
80 1 Jeremy Gow
                   144 152 172)
81 1 Jeremy Gow
 VOICE (1):       (1)
82 1 Jeremy Gow
 -----------------------------------------------------------------------------NIL
83 1 Jeremy Gow
CL-USER> 
84 1 Jeremy Gow
85 1 Jeremy Gow
</pre> 
86 1 Jeremy Gow
87 1 Jeremy Gow
A quick way of listing the database contents is:
88 1 Jeremy Gow
89 1 Jeremy Gow
<pre>
90 1 Jeremy Gow
(clsql:enable-sql-reader-syntax)
91 1 Jeremy Gow
(clsql:print-query [select [dataset-id][description] :from [mtp-dataset] :order-by [dataset-id]])
92 1 Jeremy Gow
...
93 1 Jeremy Gow
</pre>
94 1 Jeremy Gow
95 1 Jeremy Gow
96 1 Jeremy Gow
h2. Importing Data  
97 1 Jeremy Gow
98 1 Jeremy Gow
Before you can do this you will need to import some data. Methods exist for **kern files and midi files.
99 1 Jeremy Gow
100 1 Jeremy Gow
<pre> 
101 1 Jeremy Gow
CL-USER> (mtp-admin:import-data :krn "/home/mas01mtp/research/data/kern/shanxi237/" "A test dataset" 31)
102 1 Jeremy Gow
Inserting data into database: dataset 31.
103 1 Jeremy Gow
NIL
104 1 Jeremy Gow
CL-USER> (mtp-admin:describe-dataset 31)
105 1 Jeremy Gow
106 1 Jeremy Gow
 A test dataset
107 1 Jeremy Gow
 -----------------------------------------------------------------------------
108 1 Jeremy Gow
 ID         No. Compositions     No. events           Mean events/composition
109 1 Jeremy Gow
 31         237                  11056                46.649788           
110 1 Jeremy Gow
 -----------------------------------------------------------------------------NIL
111 1 Jeremy Gow
CL-USER> 
112 1 Jeremy Gow
</pre>
113 1 Jeremy Gow
114 1 Jeremy Gow
<pre> 
115 1 Jeremy Gow
CL-USER> (mtp-admin:import-data :mid "/home/marcusp/research/data/midi/Witchcraft/" "Melodies used in de Noojier et al. (2008)" 32)
116 1 Jeremy Gow
117 1 Jeremy Gow
Inserting data into database: dataset 32.NIL
118 1 Jeremy Gow
CL-USER> (mtp-admin:describe-dataset 32)
119 1 Jeremy Gow
120 1 Jeremy Gow
 Melodies used in de Noojier et al. (2008)
121 1 Jeremy Gow
 -----------------------------------------------------------------------------
122 1 Jeremy Gow
 ID         No. Compositions     No. events           Mean events/composition
123 1 Jeremy Gow
 32         10                   313                  31.3                
124 1 Jeremy Gow
 -----------------------------------------------------------------------------
125 1 Jeremy Gow
</pre> 
126 1 Jeremy Gow
127 1 Jeremy Gow
h2. Exporting Data  
128 1 Jeremy Gow
129 1 Jeremy Gow
<pre>
130 1 Jeremy Gow
CL-USER> (mtp-admin:export-data (mtp-admin:get-composition 31 0) :mid "/tmp/")
131 1 Jeremy Gow
NIL
132 1 Jeremy Gow
</pre> 
133 1 Jeremy Gow
134 1 Jeremy Gow
Produces a midi file.
135 1 Jeremy Gow
136 1 Jeremy Gow
<pre>
137 1 Jeremy Gow
CL-USER> (mtp-admin:export-data (mtp-admin:get-composition 31 0) :lisp "/tmp/")
138 1 Jeremy Gow
NIL
139 1 Jeremy Gow
</pre> 
140 1 Jeremy Gow
141 1 Jeremy Gow
Produces a lisp readable representation of the dataset.
142 1 Jeremy Gow
143 1 Jeremy Gow
<pre>
144 1 Jeremy Gow
CL-USER> (mtp-admin:export-data (mtp-admin:get-composition 31 0) :ly "/tmp/")
145 1 Jeremy Gow
NIL
146 1 Jeremy Gow
</pre> 
147 1 Jeremy Gow
148 1 Jeremy Gow
Produces a lilypond file.
149 1 Jeremy Gow
150 1 Jeremy Gow
<pre>
151 1 Jeremy Gow
CL-USER> (mtp-admin:export-data (mtp-admin:get-composition 31 0) :pdf "/tmp/")
152 1 Jeremy Gow
NIL
153 1 Jeremy Gow
</pre> 
154 1 Jeremy Gow
155 1 Jeremy Gow
Produces a pdf score (via lilypond).
156 1 Jeremy Gow
157 1 Jeremy Gow
h2. Deleting a dataset  
158 1 Jeremy Gow
159 1 Jeremy Gow
<pre>
160 1 Jeremy Gow
CL-USER> (mtp-admin:delete-dataset 735)
161 1 Jeremy Gow
</pre>
162 1 Jeremy Gow
163 1 Jeremy Gow
deletes dataset 735 from the database.