To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Revision:

root / Vamp.v3.ipynb @ 6:c4eb7acfb989

History | View | Annotate | Download (68 KB)

1
{
2
 "metadata": {
3
  "kernelspec": {
4
   "display_name": "Python 2",
5
   "language": "python",
6
   "name": "python2"
7
  },
8
  "language_info": {
9
   "codemirror_mode": {
10
    "name": "ipython",
11
    "version": 2
12
   },
13
   "file_extension": ".py",
14
   "mimetype": "text/x-python",
15
   "name": "python",
16
   "nbconvert_exporter": "python",
17
   "pygments_lexer": "ipython2",
18
   "version": "2.7.10"
19
  },
20
  "name": ""
21
 },
22
 "nbformat": 3,
23
 "nbformat_minor": 0,
24
 "worksheets": [
25
  {
26
   "cells": [
27
    {
28
     "cell_type": "markdown",
29
     "metadata": {},
30
     "source": [
31
      "# Using Vamp plugins from Python\n",
32
      "This notebook illustrates processing an audio file using a Vamp plugin, showing the results in a simple plot, and saving to a .csv file. This could be useful when integrating with analysis software written in Python, or for a batch process. (Note that it is also possible to run Vamp plugins in batch using the [Sonic Annotator](http://vamp-plugins.org/sonic-annotator) command-line program.)"
33
     ]
34
    },
35
    {
36
     "cell_type": "markdown",
37
     "metadata": {},
38
     "source": [
39
      "### Setup\n",
40
      "\n",
41
      "First import some necessary modules.\n",
42
      "\n",
43
      "The `vamp` module loads and runs Vamp plugins.\n",
44
      "`librosa` is an audio analysis module from LabROSA at Columbia University. We are using it here only to load audio files, though it can also carry out some basic analysis functions.\n",
45
      "`matplotlib` is the plotting library."
46
     ]
47
    },
48
    {
49
     "cell_type": "code",
50
     "collapsed": true,
51
     "input": [
52
      "import vamp\n",
53
      "import librosa\n",
54
      "import matplotlib.pyplot as plt"
55
     ],
56
     "language": "python",
57
     "metadata": {},
58
     "outputs": [],
59
     "prompt_number": 26
60
    },
61
    {
62
     "cell_type": "markdown",
63
     "metadata": {},
64
     "source": [
65
      "This bit of magic ensures that plots show up in the notebook rather than in a separate window:"
66
     ]
67
    },
68
    {
69
     "cell_type": "code",
70
     "collapsed": true,
71
     "input": [
72
      "%matplotlib inline"
73
     ],
74
     "language": "python",
75
     "metadata": {},
76
     "outputs": [],
77
     "prompt_number": 27
78
    },
79
    {
80
     "cell_type": "markdown",
81
     "metadata": {},
82
     "source": [
83
      "### Getting started with the Vamp module\n",
84
      "\n",
85
      "List the plugins that are installed. The strings that are returned here are referred to in the module documentation as _plugin keys_ -- each one consists of the name of the library file that contains the plugin, then a colon, then the identifier for the plugin itself. So a set of plugins with the same text before the colon (such as `qm-vamp-plugins:`) were all distributed in the same plugin library file.\n",
86
      "\n",
87
      "You can find plugin descriptions and downloads at http://vamp-plugins.org/download.html."
88
     ]
89
    },
90
    {
91
     "cell_type": "code",
92
     "collapsed": false,
93
     "input": [
94
      "vamp.list_plugins()"
95
     ],
96
     "language": "python",
97
     "metadata": {
98
      "scrolled": true
99
     },
100
     "outputs": [
101
      {
102
       "metadata": {},
103
       "output_type": "pyout",
104
       "prompt_number": 28,
105
       "text": [
106
        "['bbc-vamp-plugins:bbc-energy',\n",
107
        " 'bbc-vamp-plugins:bbc-intensity',\n",
108
        " 'bbc-vamp-plugins:bbc-peaks',\n",
109
        " 'bbc-vamp-plugins:bbc-rhythm',\n",
110
        " 'bbc-vamp-plugins:bbc-spectral-contrast',\n",
111
        " 'bbc-vamp-plugins:bbc-spectral-flux',\n",
112
        " 'bbc-vamp-plugins:bbc-speechmusic-segmenter',\n",
113
        " 'cepstral-pitchtracker:cepstral-pitchtracker',\n",
114
        " 'chp:constrainedharmonicpeak',\n",
115
        " 'cqvamp:cqchromavamp',\n",
116
        " 'cqvamp:cqvamp',\n",
117
        " 'cqvamp:cqvampmidi',\n",
118
        " 'match-vamp-plugin:match',\n",
119
        " 'nnls-chroma:chordino',\n",
120
        " 'nnls-chroma:nnls-chroma',\n",
121
        " 'nnls-chroma:tuning',\n",
122
        " 'pyin:localcandidatepyin',\n",
123
        " 'pyin:pyin',\n",
124
        " 'pyin:yin',\n",
125
        " 'pyin:yinfc',\n",
126
        " 'qm-vamp-plugins:qm-adaptivespectrogram',\n",
127
        " 'qm-vamp-plugins:qm-barbeattracker',\n",
128
        " 'qm-vamp-plugins:qm-chromagram',\n",
129
        " 'qm-vamp-plugins:qm-constantq',\n",
130
        " 'qm-vamp-plugins:qm-dwt',\n",
131
        " 'qm-vamp-plugins:qm-keydetector',\n",
132
        " 'qm-vamp-plugins:qm-mfcc',\n",
133
        " 'qm-vamp-plugins:qm-onsetdetector',\n",
134
        " 'qm-vamp-plugins:qm-segmenter',\n",
135
        " 'qm-vamp-plugins:qm-similarity',\n",
136
        " 'qm-vamp-plugins:qm-tempotracker',\n",
137
        " 'qm-vamp-plugins:qm-tonalchange',\n",
138
        " 'qm-vamp-plugins:qm-transcription',\n",
139
        " 'segmentino:segmentino',\n",
140
        " 'silvet:silvet',\n",
141
        " 'simple-cepstrum:simple-cepstrum',\n",
142
        " 'tempogram:tempogram',\n",
143
        " 'vamp-aubio:aubionotes',\n",
144
        " 'vamp-aubio:aubioonset',\n",
145
        " 'vamp-aubio:aubiopitch',\n",
146
        " 'vamp-aubio:aubiosilence',\n",
147
        " 'vamp-aubio:aubiotempo',\n",
148
        " 'vamp-example-plugins:amplitudefollower',\n",
149
        " 'vamp-example-plugins:fixedtempo',\n",
150
        " 'vamp-example-plugins:percussiononsets',\n",
151
        " 'vamp-example-plugins:powerspectrum',\n",
152
        " 'vamp-example-plugins:spectralcentroid',\n",
153
        " 'vamp-example-plugins:zerocrossing',\n",
154
        " 'vamp-libxtract:amdf',\n",
155
        " 'vamp-libxtract:asdf',\n",
156
        " 'vamp-libxtract:autocorrelation',\n",
157
        " 'vamp-libxtract:average_deviation',\n",
158
        " 'vamp-libxtract:bark_coefficients',\n",
159
        " 'vamp-libxtract:crest',\n",
160
        " 'vamp-libxtract:dct',\n",
161
        " 'vamp-libxtract:f0',\n",
162
        " 'vamp-libxtract:failsafe_f0',\n",
163
        " 'vamp-libxtract:flatness',\n",
164
        " 'vamp-libxtract:harmonic_spectrum',\n",
165
        " 'vamp-libxtract:highest_value',\n",
166
        " 'vamp-libxtract:irregularity_j',\n",
167
        " 'vamp-libxtract:irregularity_k',\n",
168
        " 'vamp-libxtract:kurtosis',\n",
169
        " 'vamp-libxtract:loudness',\n",
170
        " 'vamp-libxtract:lowest_value',\n",
171
        " 'vamp-libxtract:mean',\n",
172
        " 'vamp-libxtract:mfcc',\n",
173
        " 'vamp-libxtract:noisiness',\n",
174
        " 'vamp-libxtract:nonzero_count',\n",
175
        " 'vamp-libxtract:odd_even_ratio',\n",
176
        " 'vamp-libxtract:peak_spectrum',\n",
177
        " 'vamp-libxtract:rms_amplitude',\n",
178
        " 'vamp-libxtract:rolloff',\n",
179
        " 'vamp-libxtract:sharpness',\n",
180
        " 'vamp-libxtract:skewness',\n",
181
        " 'vamp-libxtract:smoothness',\n",
182
        " 'vamp-libxtract:spectral_centroid',\n",
183
        " 'vamp-libxtract:spectral_inharmonicity',\n",
184
        " 'vamp-libxtract:spectral_kurtosis',\n",
185
        " 'vamp-libxtract:spectral_skewness',\n",
186
        " 'vamp-libxtract:spectral_slope',\n",
187
        " 'vamp-libxtract:spectral_standard_deviation',\n",
188
        " 'vamp-libxtract:spectral_variance',\n",
189
        " 'vamp-libxtract:spectrum',\n",
190
        " 'vamp-libxtract:spread',\n",
191
        " 'vamp-libxtract:standard_deviation',\n",
192
        " 'vamp-libxtract:sum',\n",
193
        " 'vamp-libxtract:tonality',\n",
194
        " 'vamp-libxtract:tristimulus_1',\n",
195
        " 'vamp-libxtract:tristimulus_2',\n",
196
        " 'vamp-libxtract:tristimulus_3',\n",
197
        " 'vamp-libxtract:variance',\n",
198
        " 'vamp-libxtract:zcr',\n",
199
        " 'vamp-rubberband:rubberband',\n",
200
        " 'vamp-test-plugin:vamp-test-plugin',\n",
201
        " 'vamp-test-plugin:vamp-test-plugin-freq']"
202
       ]
203
      }
204
     ],
205
     "prompt_number": 28
206
    },
207
    {
208
     "cell_type": "markdown",
209
     "metadata": {},
210
     "source": [
211
      "We'll be using the `librosa` module's `load` function to load the audio file. IPython will show documentation about a function if you just give its name with a \"?\" at the end."
212
     ]
213
    },
214
    {
215
     "cell_type": "code",
216
     "collapsed": true,
217
     "input": [
218
      "librosa.load?"
219
     ],
220
     "language": "python",
221
     "metadata": {},
222
     "outputs": [],
223
     "prompt_number": 29
224
    },
225
    {
226
     "cell_type": "markdown",
227
     "metadata": {},
228
     "source": [
229
      "And the main high-level Vamp module function to apply a plugin is called `collect`, because it runs a plugin and collects the results into a suitable structure rather than returning them individually."
230
     ]
231
    },
232
    {
233
     "cell_type": "code",
234
     "collapsed": true,
235
     "input": [
236
      "vamp.collect?"
237
     ],
238
     "language": "python",
239
     "metadata": {},
240
     "outputs": [],
241
     "prompt_number": 7
242
    },
243
    {
244
     "cell_type": "code",
245
     "collapsed": false,
246
     "input": [
247
      "data, rate = librosa.load(\"data/piano-scale.wav\")"
248
     ],
249
     "language": "python",
250
     "metadata": {},
251
     "outputs": [],
252
     "prompt_number": 8
253
    },
254
    {
255
     "cell_type": "code",
256
     "collapsed": false,
257
     "input": [
258
      "rate"
259
     ],
260
     "language": "python",
261
     "metadata": {},
262
     "outputs": [
263
      {
264
       "metadata": {},
265
       "output_type": "pyout",
266
       "prompt_number": 9,
267
       "text": [
268
        "22050"
269
       ]
270
      }
271
     ],
272
     "prompt_number": 9
273
    },
274
    {
275
     "cell_type": "code",
276
     "collapsed": true,
277
     "input": [
278
      "plugin_params = { \"tuningmode\": 1, \"s\": 0.9, \"chromanormalize\": 3 }"
279
     ],
280
     "language": "python",
281
     "metadata": {},
282
     "outputs": [],
283
     "prompt_number": 10
284
    },
285
    {
286
     "cell_type": "code",
287
     "collapsed": false,
288
     "input": [
289
      "out = vamp.collect(data, rate, \"nnls-chroma:nnls-chroma\", output = \"chroma\", parameters = plugin_params, process_timestamp_method = vamp.vampyhost.SHIFT_DATA)"
290
     ],
291
     "language": "python",
292
     "metadata": {},
293
     "outputs": [],
294
     "prompt_number": 11
295
    },
296
    {
297
     "cell_type": "code",
298
     "collapsed": false,
299
     "input": [
300
      "out"
301
     ],
302
     "language": "python",
303
     "metadata": {},
304
     "outputs": [
305
      {
306
       "metadata": {},
307
       "output_type": "pyout",
308
       "prompt_number": 12,
309
       "text": [
310
        "{'matrix': ( 0.092879819,\n",
311
        "  array([[  0.00000000e+00,   3.95574346e-02,   1.29732716e-05,\n",
312
        "            9.80210781e-01,   9.58022848e-03,   0.00000000e+00,\n",
313
        "            0.00000000e+00,   1.64232314e-01,   9.96426120e-02,\n",
314
        "            0.00000000e+00,   2.50873379e-02,   0.00000000e+00],\n",
315
        "         [  0.00000000e+00,   3.14951129e-02,   1.80668838e-04,\n",
316
        "            9.78162169e-01,   3.25743221e-02,   0.00000000e+00,\n",
317
        "            2.29330850e-03,   1.62046552e-01,   1.21343270e-01,\n",
318
        "            0.00000000e+00,   1.25381378e-02,   0.00000000e+00],\n",
319
        "         [  0.00000000e+00,   3.00429221e-02,   1.06590232e-04,\n",
320
        "            9.80653524e-01,   1.40791936e-02,   0.00000000e+00,\n",
321
        "            9.71607305e-03,   1.61771417e-01,   1.04309380e-01,\n",
322
        "            0.00000000e+00,   8.54655821e-03,   0.00000000e+00],\n",
323
        "         [  5.58154285e-02,   2.38421746e-02,   2.34732070e-04,\n",
324
        "            9.85957980e-01,   0.00000000e+00,   8.80511070e-04,\n",
325
        "            1.73822697e-02,   1.46616176e-01,   2.19904333e-02,\n",
326
        "            4.21529301e-02,   1.19695384e-02,   0.00000000e+00],\n",
327
        "         [  1.04891837e-01,   0.00000000e+00,   0.00000000e+00,\n",
328
        "            8.22632074e-01,   0.00000000e+00,   5.40932834e-01,\n",
329
        "            2.50056237e-02,   9.16116759e-02,   1.97594035e-02,\n",
330
        "            1.00487731e-01,   3.59659968e-03,   1.21216271e-02],\n",
331
        "         [  4.19154540e-02,   0.00000000e+00,   0.00000000e+00,\n",
332
        "            5.32641709e-01,   0.00000000e+00,   8.34550500e-01,\n",
333
        "            1.78163908e-02,   4.51259725e-02,   3.18069607e-02,\n",
334
        "            1.09734260e-01,   5.05780652e-02,   9.80062131e-03],\n",
335
        "         [  8.45797267e-03,   0.00000000e+00,   0.00000000e+00,\n",
336
        "            3.46328110e-01,   1.50650961e-03,   9.27628219e-01,\n",
337
        "            7.37146754e-03,   2.01032832e-02,   2.88057886e-02,\n",
338
        "            1.09431997e-01,   7.88086504e-02,   3.81295895e-03],\n",
339
        "         [  7.56919500e-04,   0.00000000e+00,   0.00000000e+00,\n",
340
        "            1.79450840e-01,   7.06915976e-04,   9.73997831e-01,\n",
341
        "            1.11817913e-02,   1.11172069e-02,   1.42024225e-02,\n",
342
        "            1.05667293e-01,   8.66513774e-02,   0.00000000e+00],\n",
343
        "         [  1.66557627e-04,   0.00000000e+00,   0.00000000e+00,\n",
344
        "            5.85122816e-02,   0.00000000e+00,   9.89142358e-01,\n",
345
        "            0.00000000e+00,   1.83676016e-02,   1.94070525e-02,\n",
346
        "            1.07398190e-01,   7.69759417e-02,   0.00000000e+00],\n",
347
        "         [  1.33603578e-04,   7.56053627e-03,   9.44652930e-02,\n",
348
        "            0.00000000e+00,   0.00000000e+00,   8.86209607e-01,\n",
349
        "            0.00000000e+00,   4.42017883e-01,   3.05218417e-02,\n",
350
        "            6.33440092e-02,   0.00000000e+00,   7.29914904e-02],\n",
351
        "         [  1.31346369e-02,   6.74642762e-03,   6.19773120e-02,\n",
352
        "            0.00000000e+00,   0.00000000e+00,   5.67794800e-01,\n",
353
        "            0.00000000e+00,   8.15741003e-01,   2.10058969e-02,\n",
354
        "            8.59899446e-03,   2.03802008e-02,   8.47698301e-02],\n",
355
        "         [  4.31743301e-02,   6.34776545e-04,   4.03778553e-02,\n",
356
        "            0.00000000e+00,   0.00000000e+00,   3.56203496e-01,\n",
357
        "            0.00000000e+00,   9.28523600e-01,   1.56203127e-02,\n",
358
        "            0.00000000e+00,   2.54802778e-02,   8.10867995e-02],\n",
359
        "         [  7.33419284e-02,   6.10208313e-04,   3.63619663e-02,\n",
360
        "            0.00000000e+00,   0.00000000e+00,   1.90394580e-01,\n",
361
        "            0.00000000e+00,   9.74134982e-01,   0.00000000e+00,\n",
362
        "            0.00000000e+00,   3.36330049e-02,   8.35358649e-02],\n",
363
        "         [  8.68176147e-02,   4.59924020e-04,   4.55667339e-02,\n",
364
        "            0.00000000e+00,   0.00000000e+00,   5.53724468e-02,\n",
365
        "            0.00000000e+00,   9.90521610e-01,   0.00000000e+00,\n",
366
        "            0.00000000e+00,   2.28140894e-02,   7.52758607e-02],\n",
367
        "         [  7.16657490e-02,   4.01280704e-04,   3.66930082e-03,\n",
368
        "            1.17143862e-01,   0.00000000e+00,   5.73444937e-04,\n",
369
        "            1.10340081e-02,   9.86149490e-01,   8.01642761e-02,\n",
370
        "            0.00000000e+00,   0.00000000e+00,   4.57016900e-02],\n",
371
        "         [  1.75292432e-01,   2.99866330e-02,   2.26163003e-03,\n",
372
        "            2.27569327e-01,   1.22354610e-03,   5.50737930e-03,\n",
373
        "            1.99322514e-02,   7.56762803e-01,   5.85586727e-01,\n",
374
        "            0.00000000e+00,   0.00000000e+00,   2.34449338e-02],\n",
375
        "         [  2.28524566e-01,   3.58712338e-02,   1.71243236e-03,\n",
376
        "            1.92382738e-01,   2.56250240e-03,   1.83521246e-03,\n",
377
        "            1.90234948e-02,   4.48429465e-01,   8.41433167e-01,\n",
378
        "            0.00000000e+00,   0.00000000e+00,   2.25367188e-03],\n",
379
        "         [  2.01807752e-01,   3.38590629e-02,   1.47551857e-03,\n",
380
        "            1.39506012e-01,   2.78139906e-03,   0.00000000e+00,\n",
381
        "            1.72728170e-02,   2.58494407e-01,   9.33561802e-01,\n",
382
        "            0.00000000e+00,   0.00000000e+00,   0.00000000e+00],\n",
383
        "         [  1.54486775e-01,   7.73785859e-02,   1.31765706e-03,\n",
384
        "            1.13231480e-01,   2.59730266e-03,   0.00000000e+00,\n",
385
        "            1.56198768e-02,   1.29941836e-01,   9.69632685e-01,\n",
386
        "            0.00000000e+00,   0.00000000e+00,   0.00000000e+00],\n",
387
        "         [  1.27307221e-01,   1.46335676e-01,   7.25547271e-03,\n",
388
        "            7.30697215e-02,   1.78271858e-03,   1.15589900e-02,\n",
389
        "            1.46873416e-02,   4.01094183e-02,   9.77254152e-01,\n",
390
        "            0.00000000e+00,   0.00000000e+00,   0.00000000e+00],\n",
391
        "         [  0.00000000e+00,   6.90020099e-02,   1.04619361e-01,\n",
392
        "            2.25574570e-03,   1.59145482e-02,   8.51853862e-02,\n",
393
        "            1.19112581e-02,   3.24970335e-02,   8.37207258e-01,\n",
394
        "            2.33193263e-02,   5.23565650e-01,   0.00000000e+00],\n",
395
        "         [  0.00000000e+00,   1.16285548e-01,   8.28386694e-02,\n",
396
        "            4.62941220e-03,   4.11567837e-02,   5.65895475e-02,\n",
397
        "            8.86768941e-03,   3.56909935e-03,   4.53278303e-01,\n",
398
        "            5.48035046e-03,   8.76992106e-01,   0.00000000e+00],\n",
399
        "         [  0.00000000e+00,   9.20006111e-02,   8.02344009e-02,\n",
400
        "            8.05004500e-03,   3.36742140e-02,   5.60967848e-02,\n",
401
        "            7.82551430e-03,   0.00000000e+00,   2.42856041e-01,\n",
402
        "            6.69736741e-03,   9.60035205e-01,   0.00000000e+00],\n",
403
        "         [  0.00000000e+00,   7.55143464e-02,   8.95384848e-02,\n",
404
        "            3.87140363e-02,   3.20630074e-02,   5.86400703e-02,\n",
405
        "            6.61307480e-03,   0.00000000e+00,   1.47289306e-01,\n",
406
        "            4.46502026e-03,   9.79059339e-01,   0.00000000e+00],\n",
407
        "         [  0.00000000e+00,   4.65285294e-02,   9.54503864e-02,\n",
408
        "            7.55635425e-02,   2.02768799e-02,   6.72976673e-02,\n",
409
        "            6.64060982e-03,   0.00000000e+00,   7.32876062e-02,\n",
410
        "            2.12864913e-02,   9.86005127e-01,   0.00000000e+00],\n",
411
        "         [  2.27480859e-01,   1.47993211e-04,   4.33240309e-02,\n",
412
        "            4.05451544e-02,   5.41272797e-02,   3.53963580e-03,\n",
413
        "            1.43123539e-02,   2.27174103e-01,   1.35128628e-02,\n",
414
        "            4.26806025e-02,   9.42322791e-01,   0.00000000e+00],\n",
415
        "         [  7.76776791e-01,   0.00000000e+00,   0.00000000e+00,\n",
416
        "            1.39830142e-01,   5.90621531e-02,   1.34550324e-02,\n",
417
        "            3.04677729e-02,   1.83764741e-01,   1.57451839e-03,\n",
418
        "            1.49140116e-02,   5.81655264e-01,   1.22662177e-02],\n",
419
        "         [  9.20188725e-01,   0.00000000e+00,   0.00000000e+00,\n",
420
        "            1.31064311e-01,   5.43982014e-02,   1.02829868e-02,\n",
421
        "            3.28366496e-02,   1.60479471e-01,   5.82212256e-03,\n",
422
        "            0.00000000e+00,   3.25354815e-01,   1.69819314e-02],\n",
423
        "         [  9.54825997e-01,   0.00000000e+00,   0.00000000e+00,\n",
424
        "            9.08428580e-02,   5.47444783e-02,   6.06109276e-02,\n",
425
        "            3.60330939e-02,   1.57885581e-01,   8.70869216e-03,\n",
426
        "            0.00000000e+00,   2.16832295e-01,   8.11457075e-03],\n",
427
        "         [  9.67904449e-01,   0.00000000e+00,   0.00000000e+00,\n",
428
        "            5.66124730e-02,   5.64976931e-02,   1.21210732e-01,\n",
429
        "            2.68668495e-02,   1.64355710e-01,   8.75006244e-03,\n",
430
        "            0.00000000e+00,   1.18906766e-01,   1.10401316e-02],\n",
431
        "         [  9.10301507e-01,   0.00000000e+00,   3.58769506e-01,\n",
432
        "            1.06141996e-02,   4.18055505e-02,   1.46602556e-01,\n",
433
        "            3.75781134e-02,   9.09660459e-02,   4.86972230e-03,\n",
434
        "            9.57466066e-02,   1.99975353e-02,   2.24707532e-03],\n",
435
        "         [  5.32060623e-01,   0.00000000e+00,   8.38650227e-01,\n",
436
        "            9.16879624e-03,   2.60610599e-04,   3.36099602e-02,\n",
437
        "            3.72139812e-02,   2.78077256e-02,   5.88112622e-02,\n",
438
        "            8.20663497e-02,   3.43208760e-03,   0.00000000e+00],\n",
439
        "         [  2.87455708e-01,   4.98069590e-03,   9.52399194e-01,\n",
440
        "            6.48918748e-03,   1.46152312e-02,   1.27553497e-03,\n",
441
        "            3.50150578e-02,   3.32775638e-02,   6.14331104e-02,\n",
442
        "            6.25745505e-02,   0.00000000e+00,   0.00000000e+00],\n",
443
        "         [  1.61070168e-01,   2.89101563e-02,   9.81492460e-01,\n",
444
        "            6.82534557e-03,   3.21710594e-02,   0.00000000e+00,\n",
445
        "            3.05393171e-02,   2.94240173e-02,   2.76064165e-02,\n",
446
        "            7.77955055e-02,   1.41078206e-02,   0.00000000e+00],\n",
447
        "         [  8.16927776e-02,   1.41722215e-02,   9.86824512e-01,\n",
448
        "            5.50024724e-03,   4.24346775e-02,   0.00000000e+00,\n",
449
        "            3.15050595e-02,   3.23357806e-02,   0.00000000e+00,\n",
450
        "            1.10492751e-01,   5.67878187e-02,   0.00000000e+00],\n",
451
        "         [  3.24949436e-02,   7.84328731e-04,   9.87073660e-01,\n",
452
        "            2.14368664e-02,   8.19184929e-02,   0.00000000e+00,\n",
453
        "            4.47093956e-02,   4.51755077e-02,   0.00000000e+00,\n",
454
        "            7.68498033e-02,   8.66795480e-02,   0.00000000e+00],\n",
455
        "         [  4.58201068e-03,   5.83841931e-04,   7.21634507e-01,\n",
456
        "            6.54176593e-01,   6.88196346e-03,   1.98839908e-03,\n",
457
        "            3.12678590e-02,   4.32215557e-02,   2.30717994e-02,\n",
458
        "            0.00000000e+00,   2.02596381e-01,   8.24658498e-02],\n",
459
        "         [  0.00000000e+00,   1.26990154e-02,   2.43063256e-01,\n",
460
        "            9.57038760e-01,   3.64562906e-02,   4.62111691e-03,\n",
461
        "            0.00000000e+00,   2.28635464e-02,   2.43536346e-02,\n",
462
        "            0.00000000e+00,   1.47804186e-01,   2.28763055e-02],\n",
463
        "         [  0.00000000e+00,   3.60645913e-02,   9.64465439e-02,\n",
464
        "            9.83903885e-01,   7.15166628e-02,   2.05014599e-03,\n",
465
        "            0.00000000e+00,   1.82101205e-02,   3.92813012e-02,\n",
466
        "            1.10990729e-03,   1.14122562e-01,   3.62179056e-02],\n",
467
        "         [  0.00000000e+00,   3.63094285e-02,   4.21216004e-02,\n",
468
        "            9.86869931e-01,   2.13347878e-02,   1.17978174e-02,\n",
469
        "            0.00000000e+00,   1.84751991e-02,   3.91156822e-02,\n",
470
        "            0.00000000e+00,   1.19885042e-01,   7.84666091e-02],\n",
471
        "         [  0.00000000e+00,   3.17818634e-02,   1.20548327e-02,\n",
472
        "            9.88725364e-01,   1.00220600e-02,   4.33316268e-02,\n",
473
        "            0.00000000e+00,   1.82445534e-02,   3.88606228e-02,\n",
474
        "            0.00000000e+00,   9.95126739e-02,   8.68492201e-02],\n",
475
        "         [  1.20896734e-01,   4.24718149e-02,   3.63281532e-03,\n",
476
        "            8.90641093e-01,   2.25664694e-02,   4.28505957e-01,\n",
477
        "            1.07771400e-02,   3.10042053e-02,   3.72265317e-02,\n",
478
        "            7.50589697e-03,   6.06563613e-02,   0.00000000e+00],\n",
479
        "         [  1.61590315e-02,   0.00000000e+00,   2.05814978e-03,\n",
480
        "            5.34187019e-01,   5.10551874e-03,   8.44328225e-01,\n",
481
        "            2.61573698e-02,   0.00000000e+00,   0.00000000e+00,\n",
482
        "            5.78178698e-03,   2.39303317e-02,   1.31363133e-02],\n",
483
        "         [  0.00000000e+00,   2.69280165e-03,   9.71267698e-04,\n",
484
        "            3.30787838e-01,   6.21950440e-03,   9.42233920e-01,\n",
485
        "            2.94584725e-02,   0.00000000e+00,   0.00000000e+00,\n",
486
        "            5.73373958e-03,   4.27455939e-02,   0.00000000e+00],\n",
487
        "         [  2.47827508e-02,   4.29236740e-02,   0.00000000e+00,\n",
488
        "            1.78738758e-01,   6.27625687e-03,   9.80933607e-01,\n",
489
        "            2.33737361e-02,   0.00000000e+00,   0.00000000e+00,\n",
490
        "            7.23603368e-03,   5.22218719e-02,   0.00000000e+00],\n",
491
        "         [  5.14810570e-02,   8.37553367e-02,   0.00000000e+00,\n",
492
        "            8.09028223e-02,   8.36077798e-03,   9.89670217e-01,\n",
493
        "            1.91887822e-02,   0.00000000e+00,   0.00000000e+00,\n",
494
        "            7.49138277e-03,   6.20334819e-02,   0.00000000e+00],\n",
495
        "         [  3.32303753e-05,   8.98099467e-02,   7.88206458e-02,\n",
496
        "            6.78930879e-02,   1.03781344e-02,   9.46214378e-01,\n",
497
        "            1.99007969e-02,   2.77829796e-01,   0.00000000e+00,\n",
498
        "            5.27049974e-03,   8.98295045e-02,   1.37303854e-04],\n",
499
        "         [  4.44915071e-02,   1.76926572e-02,   8.55404064e-02,\n",
500
        "            3.43059041e-02,   1.02791190e-02,   6.12779975e-01,\n",
501
        "            1.08479448e-02,   7.82902002e-01,   2.35577822e-02,\n",
502
        "            0.00000000e+00,   0.00000000e+00,   4.15841729e-04],\n",
503
        "         [  8.49419683e-02,   1.20955601e-03,   1.09671973e-01,\n",
504
        "            1.21201193e-02,   9.66064632e-03,   3.11394960e-01,\n",
505
        "            1.18757421e-02,   9.39238966e-01,   3.51763368e-02,\n",
506
        "            0.00000000e+00,   0.00000000e+00,   4.83505777e-04],\n",
507
        "         [  9.73264351e-02,   8.18368455e-04,   1.63447946e-01,\n",
508
        "            3.29327881e-02,   0.00000000e+00,   1.07415654e-01,\n",
509
        "            1.59726590e-02,   9.74627972e-01,   3.21203768e-02,\n",
510
        "            0.00000000e+00,   0.00000000e+00,   1.54338195e-03],\n",
511
        "         [  1.01416051e-01,   1.04169792e-03,   1.80728644e-01,\n",
512
        "            6.06901050e-02,   0.00000000e+00,   6.61162585e-02,\n",
513
        "            2.47565545e-02,   9.73594368e-01,   2.22180188e-02,\n",
514
        "            0.00000000e+00,   0.00000000e+00,   1.90866261e-03],\n",
515
        "         [  1.10513330e-01,   1.16068090e-03,   1.73820123e-01,\n",
516
        "            1.02041930e-01,   0.00000000e+00,   2.92204432e-02,\n",
517
        "            2.34890543e-02,   9.72198844e-01,   1.90163553e-02,\n",
518
        "            1.48797734e-02,   0.00000000e+00,   4.90254548e-04],\n",
519
        "         [  3.55627201e-02,   1.81428045e-02,   4.17622877e-03,\n",
520
        "            2.48133853e-01,   6.25082552e-02,   0.00000000e+00,\n",
521
        "            1.42965894e-02,   7.92297900e-01,   5.51682591e-01,\n",
522
        "            2.48422138e-02,   0.00000000e+00,   0.00000000e+00],\n",
523
        "         [  5.95075870e-03,   5.97717762e-02,   3.42534087e-03,\n",
524
        "            2.44145840e-01,   6.32875264e-02,   0.00000000e+00,\n",
525
        "            5.36254235e-02,   2.65350431e-01,   9.26052630e-01,\n",
526
        "            4.36774455e-02,   0.00000000e+00,   0.00000000e+00],\n",
527
        "         [  0.00000000e+00,   9.64460075e-02,   4.26064106e-03,\n",
528
        "            2.43948385e-01,   1.03570849e-01,   0.00000000e+00,\n",
529
        "            5.81620783e-02,   8.93463269e-02,   9.52694476e-01,\n",
530
        "            3.80766317e-02,   0.00000000e+00,   0.00000000e+00],\n",
531
        "         [  0.00000000e+00,   1.12178475e-01,   3.88786709e-03,\n",
532
        "            2.46120870e-01,   1.31447807e-01,   0.00000000e+00,\n",
533
        "            5.56226894e-02,   4.11828794e-02,   9.50674713e-01,\n",
534
        "            3.12177110e-02,   0.00000000e+00,   0.00000000e+00],\n",
535
        "         [  0.00000000e+00,   1.28379866e-01,   4.15798742e-03,\n",
536
        "            2.42848128e-01,   1.54101759e-01,   0.00000000e+00,\n",
537
        "            5.40410578e-02,   2.66808942e-02,   9.47005868e-01,\n",
538
        "            1.80636272e-02,   0.00000000e+00,   0.00000000e+00],\n",
539
        "         [  2.53865309e-03,   1.91127621e-02,   2.02243449e-03,\n",
540
        "            1.12406276e-01,   2.00758558e-02,   1.71211556e-01,\n",
541
        "            1.11278228e-01,   2.78214272e-02,   8.43058944e-01,\n",
542
        "            3.59242298e-02,   4.81743515e-01,   0.00000000e+00],\n",
543
        "         [  3.64949671e-03,   4.81741881e-04,   1.33294996e-03,\n",
544
        "            1.66589487e-02,   8.12750459e-02,   5.23330793e-02,\n",
545
        "            1.93934049e-02,   7.19395373e-03,   4.53242451e-01,\n",
546
        "            2.10740734e-02,   8.83749068e-01,   5.52243367e-02],\n",
547
        "         [  3.93255353e-02,   1.05348146e-02,   5.73153608e-04,\n",
548
        "            9.43983123e-02,   1.47002060e-02,   9.49143842e-02,\n",
549
        "            1.09301947e-01,   0.00000000e+00,   1.52132377e-01,\n",
550
        "            3.77451703e-02,   9.71437335e-01,   0.00000000e+00],\n",
551
        "         [  5.13472557e-02,   3.31028714e-03,   3.92159214e-04,\n",
552
        "            1.16105087e-01,   1.48322443e-02,   1.23555198e-01,\n",
553
        "            1.31526083e-01,   0.00000000e+00,   6.29847571e-02,\n",
554
        "            3.36713605e-02,   9.72449243e-01,   1.81256123e-02],\n",
555
        "         [  4.89317700e-02,   0.00000000e+00,   2.96047510e-04,\n",
556
        "            1.21519633e-01,   1.54881012e-02,   1.36466950e-01,\n",
557
        "            1.60353258e-01,   0.00000000e+00,   5.08026592e-02,\n",
558
        "            3.07973381e-02,   9.66688573e-01,   1.56879723e-02],\n",
559
        "         [  1.98805168e-01,   0.00000000e+00,   5.65945404e-04,\n",
560
        "            1.64412394e-01,   1.19373398e-02,   4.63520288e-02,\n",
561
        "            1.70583352e-01,   4.07661637e-03,   4.17408086e-02,\n",
562
        "            8.87884125e-02,   9.44411874e-01,   2.23336332e-02],\n",
563
        "         [  6.47660553e-01,   1.09090870e-02,   1.12898178e-01,\n",
564
        "            3.67569447e-01,   2.99617252e-03,   6.21701553e-02,\n",
565
        "            1.54504150e-01,   4.67437133e-02,   1.10933185e-01,\n",
566
        "            7.35432431e-02,   6.20417595e-01,   0.00000000e+00],\n",
567
        "         [  8.65435898e-01,   1.29718129e-02,   1.31817251e-01,\n",
568
        "            4.10883605e-01,   2.92400713e-03,   3.68153490e-02,\n",
569
        "            1.44890234e-01,   4.59817313e-02,   6.56576604e-02,\n",
570
        "            7.75373355e-02,   1.72791988e-01,   0.00000000e+00],\n",
571
        "         [  8.88324201e-01,   6.67957403e-03,   1.39935628e-01,\n",
572
        "            4.00488734e-01,   4.18466097e-03,   2.89282724e-02,\n",
573
        "            1.33017287e-01,   3.70216854e-02,   4.46694382e-02,\n",
574
        "            9.21769366e-02,   2.12607980e-02,   0.00000000e+00],\n",
575
        "         [  9.02807713e-01,   2.10447935e-04,   1.41207904e-01,\n",
576
        "            3.53729814e-01,   3.70743335e-03,   2.84916237e-02,\n",
577
        "            1.24700516e-01,   3.85591500e-02,   7.32387602e-02,\n",
578
        "            1.29023820e-01,   0.00000000e+00,   0.00000000e+00],\n",
579
        "         [  9.03710365e-01,   7.44168297e-04,   1.43547714e-01,\n",
580
        "            3.72946084e-01,   2.09493097e-03,   0.00000000e+00,\n",
581
        "            8.42517391e-02,   3.97068709e-02,   2.67486330e-02,\n",
582
        "            1.19236149e-01,   0.00000000e+00,   0.00000000e+00],\n",
583
        "         [  6.47389770e-01,   9.62956576e-04,   6.64771974e-01,\n",
584
        "            2.39137374e-03,   4.67590615e-02,   3.20941329e-01,\n",
585
        "            0.00000000e+00,   4.35641073e-02,   7.85760134e-02,\n",
586
        "            8.59864429e-03,   0.00000000e+00,   1.60069823e-01],\n",
587
        "         [  3.28709215e-01,   1.69933238e-03,   8.70308340e-01,\n",
588
        "            4.05057380e-03,   1.12228401e-01,   3.07389766e-01,\n",
589
        "            0.00000000e+00,   9.21808649e-03,   4.08464074e-02,\n",
590
        "            2.30031274e-02,   7.12022707e-02,   1.41627774e-01],\n",
591
        "         [  5.96006438e-02,   4.15985996e-04,   9.20822084e-01,\n",
592
        "            4.98715788e-03,   1.42810524e-01,   2.99190283e-01,\n",
593
        "            0.00000000e+00,   2.82171019e-03,   9.67504531e-02,\n",
594
        "            2.13448349e-02,   6.86788633e-02,   1.55108571e-01],\n",
595
        "         [  1.00534863e-03,   4.87674290e-04,   9.16018307e-01,\n",
596
        "            4.97340411e-03,   1.85771078e-01,   3.13747913e-01,\n",
597
        "            9.55010357e-04,   5.11498714e-04,   9.01460797e-02,\n",
598
        "            1.34017579e-02,   4.05923054e-02,   1.34093180e-01],\n",
599
        "         [  0.00000000e+00,   0.00000000e+00,   9.05534029e-01,\n",
600
        "            5.09170676e-03,   1.82564944e-01,   3.44701409e-01,\n",
601
        "            8.97256471e-03,   2.26824824e-03,   1.00266904e-01,\n",
602
        "            1.87462308e-02,   2.89424807e-02,   1.28471538e-01],\n",
603
        "         [  2.77297825e-01,   6.03795843e-03,   8.73157024e-01,\n",
604
        "            1.08850159e-01,   1.63998351e-01,   1.86085239e-01,\n",
605
        "            1.12378791e-01,   3.68778827e-03,   1.07245937e-01,\n",
606
        "            3.08599211e-02,   2.12714560e-02,   2.48486638e-01],\n",
607
        "         [  1.69244453e-01,   4.37403657e-02,   3.03969860e-01,\n",
608
        "            8.75151455e-01,   7.77170341e-03,   2.06874907e-01,\n",
609
        "            2.50959158e-01,   0.00000000e+00,   8.39735847e-03,\n",
610
        "            7.22065493e-02,   8.75575293e-04,   5.66987647e-03],\n",
611
        "         [  1.40741259e-01,   2.77895574e-02,   1.73567645e-02,\n",
612
        "            9.07734573e-01,   7.42862932e-03,   2.24477738e-01,\n",
613
        "            3.04128051e-01,   5.42865787e-03,   5.90750622e-03,\n",
614
        "            1.04962960e-01,   1.62259471e-02,   2.91900449e-02],\n",
615
        "         [  1.27348348e-01,   1.07598603e-02,   1.18422986e-03,\n",
616
        "            8.94889832e-01,   7.23825302e-03,   2.36309320e-01,\n",
617
        "            3.41708928e-01,   1.28864544e-02,   0.00000000e+00,\n",
618
        "            9.47451070e-02,   9.87819675e-03,   3.06219123e-02],\n",
619
        "         [  1.17779538e-01,   0.00000000e+00,   1.24025333e-03,\n",
620
        "            8.85621727e-01,   7.06024608e-03,   2.27433771e-01,\n",
621
        "            3.75163913e-01,   1.33218318e-02,   0.00000000e+00,\n",
622
        "            8.89331475e-02,   1.81943830e-02,   2.93087736e-02],\n",
623
        "         [  1.02612011e-01,   0.00000000e+00,   1.19107720e-02,\n",
624
        "            8.53048503e-01,   7.52635021e-03,   2.57968783e-01,\n",
625
        "            4.22296256e-01,   1.49089722e-02,   0.00000000e+00,\n",
626
        "            1.20436154e-01,   2.86021344e-02,   3.39591093e-02],\n",
627
        "         [  2.23645344e-01,   7.00941384e-02,   2.90339235e-02,\n",
628
        "            8.11006844e-01,   1.22231124e-02,   1.77608401e-01,\n",
629
        "            4.94134247e-01,   6.94465777e-03,   0.00000000e+00,\n",
630
        "            8.01459849e-02,   2.53690537e-02,   5.93009964e-02],\n",
631
        "         [  3.20195317e-01,   0.00000000e+00,   5.79862818e-02,\n",
632
        "            8.01172554e-01,   1.55903110e-02,   1.03361912e-01,\n",
633
        "            4.87446874e-01,   1.80881284e-03,   0.00000000e+00,\n",
634
        "            0.00000000e+00,   3.16866152e-02,   5.19289337e-02]], dtype=float32))}"
635
       ]
636
      }
637
     ],
638
     "prompt_number": 12
639
    },
640
    {
641
     "cell_type": "code",
642
     "collapsed": false,
643
     "input": [
644
      "step, chroma = out[\"matrix\"]"
645
     ],
646
     "language": "python",
647
     "metadata": {},
648
     "outputs": [],
649
     "prompt_number": 13
650
    },
651
    {
652
     "cell_type": "code",
653
     "collapsed": false,
654
     "input": [
655
      "step"
656
     ],
657
     "language": "python",
658
     "metadata": {},
659
     "outputs": [
660
      {
661
       "metadata": {},
662
       "output_type": "pyout",
663
       "prompt_number": 14,
664
       "text": [
665
        " 0.092879819"
666
       ]
667
      }
668
     ],
669
     "prompt_number": 14
670
    },
671
    {
672
     "cell_type": "code",
673
     "collapsed": false,
674
     "input": [
675
      "float(step) * rate"
676
     ],
677
     "language": "python",
678
     "metadata": {},
679
     "outputs": [
680
      {
681
       "metadata": {},
682
       "output_type": "pyout",
683
       "prompt_number": 15,
684
       "text": [
685
        "2048.00000895"
686
       ]
687
      }
688
     ],
689
     "prompt_number": 15
690
    },
691
    {
692
     "cell_type": "code",
693
     "collapsed": false,
694
     "input": [
695
      "vamp.vampyhost.RealTime.to_frame(step, rate)"
696
     ],
697
     "language": "python",
698
     "metadata": {},
699
     "outputs": [
700
      {
701
       "metadata": {},
702
       "output_type": "pyout",
703
       "prompt_number": 16,
704
       "text": [
705
        "2048"
706
       ]
707
      }
708
     ],
709
     "prompt_number": 16
710
    },
711
    {
712
     "cell_type": "code",
713
     "collapsed": false,
714
     "input": [
715
      "plt.imshow(chroma.transpose(), origin=\"lower\")"
716
     ],
717
     "language": "python",
718
     "metadata": {},
719
     "outputs": [
720
      {
721
       "metadata": {},
722
       "output_type": "pyout",
723
       "prompt_number": 17,
724
       "text": [
725
        "<matplotlib.image.AxesImage at 0x7f1b8e6ca7d0>"
726
       ]
727
      },
728
      {
729
       "metadata": {},
730
       "output_type": "display_data",
731
       "png": "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\nYII=\n",
732
       "text": [
733
        "<matplotlib.figure.Figure at 0x7f1b8e99ee10>"
734
       ]
735
      }
736
     ],
737
     "prompt_number": 17
738
    },
739
    {
740
     "cell_type": "code",
741
     "collapsed": true,
742
     "input": [
743
      "import csv"
744
     ],
745
     "language": "python",
746
     "metadata": {},
747
     "outputs": [],
748
     "prompt_number": 18
749
    },
750
    {
751
     "cell_type": "code",
752
     "collapsed": true,
753
     "input": [
754
      "out_file = open('features.csv', 'w')"
755
     ],
756
     "language": "python",
757
     "metadata": {},
758
     "outputs": [],
759
     "prompt_number": 19
760
    },
761
    {
762
     "cell_type": "code",
763
     "collapsed": true,
764
     "input": [
765
      "writer = csv.writer(out_file)"
766
     ],
767
     "language": "python",
768
     "metadata": {},
769
     "outputs": [],
770
     "prompt_number": 20
771
    },
772
    {
773
     "cell_type": "code",
774
     "collapsed": true,
775
     "input": [
776
      "writer.writerows(chroma)"
777
     ],
778
     "language": "python",
779
     "metadata": {},
780
     "outputs": [],
781
     "prompt_number": 21
782
    },
783
    {
784
     "cell_type": "code",
785
     "collapsed": true,
786
     "input": [
787
      "out_file.close()"
788
     ],
789
     "language": "python",
790
     "metadata": {},
791
     "outputs": [],
792
     "prompt_number": 22
793
    },
794
    {
795
     "cell_type": "code",
796
     "collapsed": true,
797
     "input": [
798
      "import os, glob"
799
     ],
800
     "language": "python",
801
     "metadata": {},
802
     "outputs": [],
803
     "prompt_number": 23
804
    },
805
    {
806
     "cell_type": "code",
807
     "collapsed": true,
808
     "input": [
809
      "def extract_chroma(audiofile):\n",
810
      "    data, rate = librosa.load(audiofile, sr = None)\n",
811
      "    out = vamp.collect(data, rate,\n",
812
      "                       plugin_key = \"nnls-chroma:nnls-chroma\",\n",
813
      "                       output = \"chroma\",\n",
814
      "                       process_timestamp_method = vamp.vampyhost.SHIFT_DATA)\n",
815
      "    step, chroma = out[\"matrix\"]\n",
816
      "    print(\"File \" + audiofile +\n",
817
      "          \": sample rate = \" + str(rate) +\n",
818
      "          \", chroma step = \" + str(vamp.vampyhost.RealTime.to_frame(step, rate)))\n",
819
      "    out_file = open(os.path.splitext(audiofile)[0] + \"_chroma.csv\", \"w\")\n",
820
      "    csv.writer(out_file).writerows(chroma)\n",
821
      "    out_file.close()"
822
     ],
823
     "language": "python",
824
     "metadata": {},
825
     "outputs": [],
826
     "prompt_number": 24
827
    },
828
    {
829
     "cell_type": "code",
830
     "collapsed": false,
831
     "input": [
832
      "for file in glob.glob(\"data/Music/*.flac\"):\n",
833
      "    extract_chroma(file)"
834
     ],
835
     "language": "python",
836
     "metadata": {},
837
     "outputs": [
838
      {
839
       "output_type": "stream",
840
       "stream": "stdout",
841
       "text": [
842
        "File data/Music/07 - King Henry.flac: sample rate = 44100, chroma step = 2048\n"
843
       ]
844
      }
845
     ],
846
     "prompt_number": 25
847
    },
848
    {
849
     "cell_type": "code",
850
     "collapsed": true,
851
     "input": [],
852
     "language": "python",
853
     "metadata": {},
854
     "outputs": [],
855
     "prompt_number": null
856
    }
857
   ],
858
   "metadata": {}
859
  }
860
 ]
861
}