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-2chroma.ipynb @ 5:c5482b2a4bdd

History | View | Annotate | Download (47.9 KB)

1
{
2
 "cells": [
3
  {
4
   "cell_type": "code",
5
   "execution_count": 1,
6
   "metadata": {
7
    "collapsed": true
8
   },
9
   "outputs": [],
10
   "source": [
11
    "import vamp"
12
   ]
13
  },
14
  {
15
   "cell_type": "code",
16
   "execution_count": 2,
17
   "metadata": {
18
    "collapsed": false
19
   },
20
   "outputs": [
21
    {
22
     "name": "stderr",
23
     "output_type": "stream",
24
     "text": [
25
      "/usr/lib/python2.7/site-packages/librosa/core/audio.py:33: UserWarning: Could not import scikits.samplerate. Falling back to scipy.signal\n",
26
      "  warnings.warn('Could not import scikits.samplerate. '\n"
27
     ]
28
    }
29
   ],
30
   "source": [
31
    "import librosa"
32
   ]
33
  },
34
  {
35
   "cell_type": "code",
36
   "execution_count": 3,
37
   "metadata": {
38
    "collapsed": true
39
   },
40
   "outputs": [],
41
   "source": [
42
    "import matplotlib.pyplot as plt"
43
   ]
44
  },
45
  {
46
   "cell_type": "code",
47
   "execution_count": 4,
48
   "metadata": {
49
    "collapsed": true
50
   },
51
   "outputs": [],
52
   "source": [
53
    "%matplotlib inline"
54
   ]
55
  },
56
  {
57
   "cell_type": "code",
58
   "execution_count": 5,
59
   "metadata": {
60
    "collapsed": false
61
   },
62
   "outputs": [
63
    {
64
     "data": {
65
      "text/plain": [
66
       "['bbc-vamp-plugins:bbc-energy',\n",
67
       " 'bbc-vamp-plugins:bbc-intensity',\n",
68
       " 'bbc-vamp-plugins:bbc-peaks',\n",
69
       " 'bbc-vamp-plugins:bbc-rhythm',\n",
70
       " 'bbc-vamp-plugins:bbc-spectral-contrast',\n",
71
       " 'bbc-vamp-plugins:bbc-spectral-flux',\n",
72
       " 'bbc-vamp-plugins:bbc-speechmusic-segmenter',\n",
73
       " 'chp:constrainedharmonicpeak',\n",
74
       " 'cqvamp:cqchromavamp',\n",
75
       " 'cqvamp:cqvamp',\n",
76
       " 'cqvamp:cqvampmidi',\n",
77
       " 'match-vamp-plugin:match',\n",
78
       " 'nnls-chroma:chordino',\n",
79
       " 'nnls-chroma:nnls-chroma',\n",
80
       " 'nnls-chroma:tuning',\n",
81
       " 'pyin:localcandidatepyin',\n",
82
       " 'pyin:pyin',\n",
83
       " 'pyin:yin',\n",
84
       " 'pyin:yinfc',\n",
85
       " 'qm-vamp-plugins:qm-adaptivespectrogram',\n",
86
       " 'qm-vamp-plugins:qm-barbeattracker',\n",
87
       " 'qm-vamp-plugins:qm-chromagram',\n",
88
       " 'qm-vamp-plugins:qm-constantq',\n",
89
       " 'qm-vamp-plugins:qm-dwt',\n",
90
       " 'qm-vamp-plugins:qm-keydetector',\n",
91
       " 'qm-vamp-plugins:qm-mfcc',\n",
92
       " 'qm-vamp-plugins:qm-onsetdetector',\n",
93
       " 'qm-vamp-plugins:qm-segmenter',\n",
94
       " 'qm-vamp-plugins:qm-similarity',\n",
95
       " 'qm-vamp-plugins:qm-tempotracker',\n",
96
       " 'qm-vamp-plugins:qm-tonalchange',\n",
97
       " 'qm-vamp-plugins:qm-transcription',\n",
98
       " 'segmentino:segmentino',\n",
99
       " 'silvet:silvet',\n",
100
       " 'simple-cepstrum:simple-cepstrum',\n",
101
       " 'tempogram:tempogram',\n",
102
       " 'vamp-aubio:aubionotes',\n",
103
       " 'vamp-aubio:aubioonset',\n",
104
       " 'vamp-aubio:aubiopitch',\n",
105
       " 'vamp-aubio:aubiosilence',\n",
106
       " 'vamp-aubio:aubiotempo',\n",
107
       " 'vamp-example-plugins:amplitudefollower',\n",
108
       " 'vamp-example-plugins:fixedtempo',\n",
109
       " 'vamp-example-plugins:percussiononsets',\n",
110
       " 'vamp-example-plugins:powerspectrum',\n",
111
       " 'vamp-example-plugins:spectralcentroid',\n",
112
       " 'vamp-example-plugins:zerocrossing',\n",
113
       " 'vamp-libxtract:amdf',\n",
114
       " 'vamp-libxtract:asdf',\n",
115
       " 'vamp-libxtract:autocorrelation',\n",
116
       " 'vamp-libxtract:average_deviation',\n",
117
       " 'vamp-libxtract:bark_coefficients',\n",
118
       " 'vamp-libxtract:crest',\n",
119
       " 'vamp-libxtract:dct',\n",
120
       " 'vamp-libxtract:f0',\n",
121
       " 'vamp-libxtract:failsafe_f0',\n",
122
       " 'vamp-libxtract:flatness',\n",
123
       " 'vamp-libxtract:harmonic_spectrum',\n",
124
       " 'vamp-libxtract:highest_value',\n",
125
       " 'vamp-libxtract:irregularity_j',\n",
126
       " 'vamp-libxtract:irregularity_k',\n",
127
       " 'vamp-libxtract:kurtosis',\n",
128
       " 'vamp-libxtract:loudness',\n",
129
       " 'vamp-libxtract:lowest_value',\n",
130
       " 'vamp-libxtract:mean',\n",
131
       " 'vamp-libxtract:mfcc',\n",
132
       " 'vamp-libxtract:noisiness',\n",
133
       " 'vamp-libxtract:nonzero_count',\n",
134
       " 'vamp-libxtract:odd_even_ratio',\n",
135
       " 'vamp-libxtract:peak_spectrum',\n",
136
       " 'vamp-libxtract:rms_amplitude',\n",
137
       " 'vamp-libxtract:rolloff',\n",
138
       " 'vamp-libxtract:sharpness',\n",
139
       " 'vamp-libxtract:skewness',\n",
140
       " 'vamp-libxtract:smoothness',\n",
141
       " 'vamp-libxtract:spectral_centroid',\n",
142
       " 'vamp-libxtract:spectral_inharmonicity',\n",
143
       " 'vamp-libxtract:spectral_kurtosis',\n",
144
       " 'vamp-libxtract:spectral_skewness',\n",
145
       " 'vamp-libxtract:spectral_slope',\n",
146
       " 'vamp-libxtract:spectral_standard_deviation',\n",
147
       " 'vamp-libxtract:spectral_variance',\n",
148
       " 'vamp-libxtract:spectrum',\n",
149
       " 'vamp-libxtract:spread',\n",
150
       " 'vamp-libxtract:standard_deviation',\n",
151
       " 'vamp-libxtract:sum',\n",
152
       " 'vamp-libxtract:tonality',\n",
153
       " 'vamp-libxtract:tristimulus_1',\n",
154
       " 'vamp-libxtract:tristimulus_2',\n",
155
       " 'vamp-libxtract:tristimulus_3',\n",
156
       " 'vamp-libxtract:variance',\n",
157
       " 'vamp-libxtract:zcr',\n",
158
       " 'vamp-rubberband:rubberband',\n",
159
       " 'vamp-test-plugin:vamp-test-plugin',\n",
160
       " 'vamp-test-plugin:vamp-test-plugin-freq']"
161
      ]
162
     },
163
     "execution_count": 5,
164
     "metadata": {},
165
     "output_type": "execute_result"
166
    }
167
   ],
168
   "source": [
169
    "vamp.list_plugins()"
170
   ]
171
  },
172
  {
173
   "cell_type": "code",
174
   "execution_count": 6,
175
   "metadata": {
176
    "collapsed": true
177
   },
178
   "outputs": [],
179
   "source": [
180
    "librosa.load?"
181
   ]
182
  },
183
  {
184
   "cell_type": "code",
185
   "execution_count": 7,
186
   "metadata": {
187
    "collapsed": true
188
   },
189
   "outputs": [],
190
   "source": [
191
    "vamp.collect?"
192
   ]
193
  },
194
  {
195
   "cell_type": "code",
196
   "execution_count": 8,
197
   "metadata": {
198
    "collapsed": false
199
   },
200
   "outputs": [],
201
   "source": [
202
    "data, rate = librosa.load(\"data/Music/piano-scale.wav\", 44100)"
203
   ]
204
  },
205
  {
206
   "cell_type": "code",
207
   "execution_count": 9,
208
   "metadata": {
209
    "collapsed": false
210
   },
211
   "outputs": [
212
    {
213
     "data": {
214
      "text/plain": [
215
       "44100"
216
      ]
217
     },
218
     "execution_count": 9,
219
     "metadata": {},
220
     "output_type": "execute_result"
221
    }
222
   ],
223
   "source": [
224
    "rate"
225
   ]
226
  },
227
  {
228
   "cell_type": "code",
229
   "execution_count": 10,
230
   "metadata": {
231
    "collapsed": false
232
   },
233
   "outputs": [],
234
   "source": [
235
    "out = vamp.collect(data, rate, \"nnls-chroma:nnls-chroma\", output = \"chroma\", process_timestamp_method = vamp.vampyhost.SHIFT_DATA)"
236
   ]
237
  },
238
  {
239
   "cell_type": "code",
240
   "execution_count": 11,
241
   "metadata": {
242
    "collapsed": true
243
   },
244
   "outputs": [],
245
   "source": [
246
    "out2 = vamp.collect(data, rate, \"qm-vamp-plugins:qm-chromagram\", output = \"chromagram\", process_timestamp_method = vamp.vampyhost.SHIFT_DATA)"
247
   ]
248
  },
249
  {
250
   "cell_type": "code",
251
   "execution_count": 12,
252
   "metadata": {
253
    "collapsed": false
254
   },
255
   "outputs": [
256
    {
257
     "data": {
258
      "text/plain": [
259
       "{'matrix': ( 0.046439909,\n",
260
       "  array([[ 0.        ,  0.23465359,  0.        , ...,  0.08958804,\n",
261
       "           1.2546041 ,  0.28356144],\n",
262
       "         [ 0.        ,  0.39042693,  0.00177656, ...,  0.09287024,\n",
263
       "           1.21442342,  0.1496222 ],\n",
264
       "         [ 0.        ,  0.52906221,  0.00219605, ...,  0.05372851,\n",
265
       "           1.21060038,  0.06183077],\n",
266
       "         ..., \n",
267
       "         [ 1.29977727,  0.        ,  0.16230981, ...,  0.37326023,\n",
268
       "           0.11922166,  0.38857883],\n",
269
       "         [ 0.44108227,  0.0647972 ,  0.77132535, ...,  0.23604083,\n",
270
       "           0.10995618,  0.39924181],\n",
271
       "         [ 0.02858954,  0.54281044,  0.70990545, ...,  0.17574874,\n",
272
       "           0.15729675,  0.1570534 ]], dtype=float32))}"
273
      ]
274
     },
275
     "execution_count": 12,
276
     "metadata": {},
277
     "output_type": "execute_result"
278
    }
279
   ],
280
   "source": [
281
    "out"
282
   ]
283
  },
284
  {
285
   "cell_type": "code",
286
   "execution_count": 13,
287
   "metadata": {
288
    "collapsed": false
289
   },
290
   "outputs": [
291
    {
292
     "data": {
293
      "text/plain": [
294
       "{'matrix': ( 0.046439909,\n",
295
       "  array([[  1.46356169e-02,   1.00284042e-02,   6.13229116e-03, ...,\n",
296
       "            6.37824275e-03,   1.12555586e-02,   1.49770780e-02],\n",
297
       "         [  7.01050684e-02,   2.52935681e-02,   2.90200301e-03, ...,\n",
298
       "            9.44275782e-03,   1.47002591e-02,   4.58300859e-02],\n",
299
       "         [  7.85880536e-02,   3.01746875e-02,   1.63351605e-03, ...,\n",
300
       "            7.24899024e-03,   1.12466933e-02,   4.71907593e-02],\n",
301
       "         ..., \n",
302
       "         [  8.20661895e-03,   3.76351969e-03,   1.84410776e-04, ...,\n",
303
       "            7.19304080e-05,   1.89329934e-04,   3.95213813e-03],\n",
304
       "         [  2.96376343e-03,   1.39251188e-03,   1.14867362e-04, ...,\n",
305
       "            7.17425646e-05,   8.96208439e-05,   1.87694619e-03],\n",
306
       "         [  1.85929565e-03,   9.64637962e-04,   1.16197378e-04, ...,\n",
307
       "            5.40428482e-05,   4.73081054e-05,   1.41351460e-03]], dtype=float32))}"
308
      ]
309
     },
310
     "execution_count": 13,
311
     "metadata": {},
312
     "output_type": "execute_result"
313
    }
314
   ],
315
   "source": [
316
    "out2"
317
   ]
318
  },
319
  {
320
   "cell_type": "code",
321
   "execution_count": 14,
322
   "metadata": {
323
    "collapsed": false
324
   },
325
   "outputs": [],
326
   "source": [
327
    "step, chroma = out[\"matrix\"]"
328
   ]
329
  },
330
  {
331
   "cell_type": "code",
332
   "execution_count": 15,
333
   "metadata": {
334
    "collapsed": false
335
   },
336
   "outputs": [
337
    {
338
     "data": {
339
      "text/plain": [
340
       "<matplotlib.image.AxesImage at 0x7f1b00878790>"
341
      ]
342
     },
343
     "execution_count": 15,
344
     "metadata": {},
345
     "output_type": "execute_result"
346
    },
347
    {
348
     "data": {
349
      "image/png": "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\nTkSuQmCC\n",
350
      "text/plain": [
351
       "<matplotlib.figure.Figure at 0x7f1b00bd4cd0>"
352
      ]
353
     },
354
     "metadata": {},
355
     "output_type": "display_data"
356
    }
357
   ],
358
   "source": [
359
    "plt.imshow(chroma.transpose(), origin=\"lower\")"
360
   ]
361
  },
362
  {
363
   "cell_type": "code",
364
   "execution_count": 16,
365
   "metadata": {
366
    "collapsed": false
367
   },
368
   "outputs": [
369
    {
370
     "data": {
371
      "text/plain": [
372
       "<matplotlib.image.AxesImage at 0x7f1b00755cd0>"
373
      ]
374
     },
375
     "execution_count": 16,
376
     "metadata": {},
377
     "output_type": "execute_result"
378
    },
379
    {
380
     "data": {
381
      "image/png": "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\n6AAAAABJRU5ErkJggg==\n",
382
      "text/plain": [
383
       "<matplotlib.figure.Figure at 0x7f1b007dddd0>"
384
      ]
385
     },
386
     "metadata": {},
387
     "output_type": "display_data"
388
    }
389
   ],
390
   "source": [
391
    "plt.imshow(out2[\"matrix\"][1].transpose(), origin=\"lower\")"
392
   ]
393
  },
394
  {
395
   "cell_type": "code",
396
   "execution_count": 17,
397
   "metadata": {
398
    "collapsed": true
399
   },
400
   "outputs": [],
401
   "source": [
402
    "import csv"
403
   ]
404
  },
405
  {
406
   "cell_type": "code",
407
   "execution_count": 18,
408
   "metadata": {
409
    "collapsed": true
410
   },
411
   "outputs": [],
412
   "source": [
413
    "out_file = open('features.csv', 'w')"
414
   ]
415
  },
416
  {
417
   "cell_type": "code",
418
   "execution_count": 19,
419
   "metadata": {
420
    "collapsed": true
421
   },
422
   "outputs": [],
423
   "source": [
424
    "writer = csv.writer(out_file)"
425
   ]
426
  },
427
  {
428
   "cell_type": "code",
429
   "execution_count": 20,
430
   "metadata": {
431
    "collapsed": true
432
   },
433
   "outputs": [],
434
   "source": [
435
    "writer.writerows(chroma)"
436
   ]
437
  },
438
  {
439
   "cell_type": "code",
440
   "execution_count": 21,
441
   "metadata": {
442
    "collapsed": true
443
   },
444
   "outputs": [],
445
   "source": [
446
    "out_file.close()"
447
   ]
448
  },
449
  {
450
   "cell_type": "code",
451
   "execution_count": null,
452
   "metadata": {
453
    "collapsed": true
454
   },
455
   "outputs": [],
456
   "source": []
457
  }
458
 ],
459
 "metadata": {
460
  "kernelspec": {
461
   "display_name": "Python 2",
462
   "language": "python",
463
   "name": "python2"
464
  },
465
  "language_info": {
466
   "codemirror_mode": {
467
    "name": "ipython",
468
    "version": 2
469
   },
470
   "file_extension": ".py",
471
   "mimetype": "text/x-python",
472
   "name": "python",
473
   "nbconvert_exporter": "python",
474
   "pygments_lexer": "ipython2",
475
   "version": "2.7.10"
476
  }
477
 },
478
 "nbformat": 4,
479
 "nbformat_minor": 0
480
}