annotate vamp/process.py @ 75:ad08a0fe6673
Split out the module code
author |
Chris Cannam |
date |
Wed, 21 Jan 2015 11:16:50 +0000 |
parents |
vamp/__init__.py@78a4034c3830 |
children |
b2afd385586f |
rev |
line source |
Chris@56
|
1 '''A high-level interface to the vampyhost extension module, for quickly and easily running Vamp audio analysis plugins on audio files and buffers.'''
|
Chris@56
|
2
|
Chris@56
|
3 import vampyhost
|
Chris@75
|
4 import frames
|
Chris@75
|
5 import load
|
Chris@68
|
6
|
Chris@74
|
7 def process(data, sampleRate, key, parameters = {}, outputs = []):
|
Chris@68
|
8 #!!! docstring
|
Chris@68
|
9
|
Chris@75
|
10 plug, stepSize, blockSize = load.loadAndConfigureFor(data, sampleRate, key, parameters)
|
Chris@68
|
11
|
Chris@64
|
12 plugOuts = plug.getOutputs()
|
Chris@68
|
13 if plugOuts == []:
|
Chris@68
|
14 return
|
Chris@64
|
15
|
Chris@64
|
16 outIndices = dict(zip([o["identifier"] for o in plugOuts],
|
Chris@64
|
17 range(0, len(plugOuts)))) # id -> n
|
Chris@64
|
18
|
Chris@64
|
19 for o in outputs:
|
Chris@64
|
20 assert o in outIndices
|
Chris@64
|
21
|
Chris@66
|
22 if outputs == []:
|
Chris@67
|
23 outputs = [plugOuts[0]["identifier"]]
|
Chris@66
|
24
|
Chris@75
|
25 ff = frames.framesFromArray(data, stepSize, blockSize)
|
Chris@61
|
26 fi = 0
|
Chris@64
|
27
|
Chris@71
|
28 #!!! should we fill in the correct timestamps here?
|
Chris@71
|
29
|
Chris@61
|
30 for f in ff:
|
Chris@74
|
31 results = plug.processBlock(f, vampyhost.frame2RealTime(fi, sampleRate))
|
Chris@64
|
32 # results is a dict mapping output number -> list of feature dicts
|
Chris@66
|
33 for o in outputs:
|
Chris@66
|
34 if outIndices[o] in results:
|
Chris@66
|
35 for r in results[outIndices[o]]:
|
Chris@70
|
36 yield { o: r }
|
Chris@61
|
37 fi = fi + stepSize
|
Chris@61
|
38
|
Chris@66
|
39 results = plug.getRemainingFeatures()
|
Chris@66
|
40 for o in outputs:
|
Chris@66
|
41 if outIndices[o] in results:
|
Chris@66
|
42 for r in results[outIndices[o]]:
|
Chris@70
|
43 yield { o: r }
|
Chris@66
|
44
|
Chris@66
|
45 plug.unload()
|
Chris@66
|
46
|