annotate vamp/collect.py @ 77:aa8491a11530
Naming: Constants -> CONSTANTS
author |
Chris Cannam |
date |
Wed, 21 Jan 2015 12:22:13 +0000 |
parents |
ad08a0fe6673 |
children |
650f0697812f |
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 load
|
Chris@75
|
5 import frames
|
Chris@66
|
6
|
Chris@74
|
7 def selectFeaturesForOutput(output, features):
|
Chris@74
|
8 for ff in features:
|
Chris@74
|
9 if output in ff:
|
Chris@74
|
10 for f in ff[output]:
|
Chris@74
|
11 yield f
|
Chris@74
|
12
|
Chris@72
|
13 ##!!!
|
Chris@72
|
14 ##
|
Chris@72
|
15 ## We could also devise a generator for the timestamps that need
|
Chris@72
|
16 ## filling: provide the output type & rate and get back a timestamp
|
Chris@72
|
17 ## generator
|
Chris@72
|
18 ##
|
Chris@72
|
19 ##!!!
|
Chris@72
|
20
|
Chris@74
|
21 # def timestampFeatures(sampleRate, stepSize, outputDescriptor, features):
|
Chris@72
|
22
|
Chris@74
|
23 # n = 0
|
Chris@71
|
24
|
Chris@77
|
25 # if outputDict.sampleType == vampyhost.ONE_SAMPLE_PER_STEP:
|
Chris@74
|
26 # for True:
|
Chris@74
|
27 # yield vampyhost.frame2RealTime(n * stepSize, sampleRate)
|
Chris@74
|
28 # n = n + 1
|
Chris@74
|
29
|
Chris@77
|
30 # elif outputDict.sampleType == vampyhost.FIXED_SAMPLE_RATE:
|
Chris@74
|
31 # for True:
|
Chris@74
|
32
|
Chris@74
|
33
|
Chris@74
|
34
|
Chris@74
|
35 def collect(data, sampleRate, key, parameters = {}, output = ""):
|
Chris@74
|
36
|
Chris@75
|
37 plug, stepSize, blockSize = load.loadAndConfigureFor(data, sampleRate, key, parameters)
|
Chris@71
|
38
|
Chris@71
|
39 plugOuts = plug.getOutputs()
|
Chris@71
|
40 if plugOuts == []:
|
Chris@71
|
41 return
|
Chris@71
|
42
|
Chris@71
|
43 outNo = -1
|
Chris@71
|
44 for n, o in zip(range(0, len(plugOuts)), plugOuts):
|
Chris@71
|
45 if output == "" or o["identifier"] == output:
|
Chris@71
|
46 outNo = n
|
Chris@71
|
47 break
|
Chris@71
|
48
|
Chris@71
|
49 assert outNo >= 0 #!!! todo proper error reporting
|
Chris@71
|
50
|
Chris@75
|
51 ff = frames.framesFromArray(data, stepSize, blockSize)
|
Chris@71
|
52 fi = 0
|
Chris@71
|
53
|
Chris@71
|
54 #!!! todo!
|
Chris@71
|
55
|
Chris@71
|
56 plug.unload()
|
Chris@71
|
57
|
Chris@71
|
58 return {}
|
Chris@71
|
59
|
Chris@71
|
60
|