annotate vamp/process.py @ 81:0a2f2e7803ea

naming: PyPluginObject members snake_case
author Chris Cannam
date Wed, 21 Jan 2015 12:32:32 +0000
parents de501b7e165a
children a11b57e9fb0b
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@76 7 def loadAndQuery(data, sampleRate, key, parameters):
Chris@76 8 plug, stepSize, blockSize = load.loadAndConfigureFor(data, sampleRate, key, parameters)
Chris@80 9 plugOuts = plug.get_outputs()
Chris@76 10 outIndices = dict(zip([o["identifier"] for o in plugOuts],
Chris@76 11 range(0, len(plugOuts)))) # id -> n
Chris@76 12 return plug, stepSize, blockSize, outIndices
Chris@76 13
Chris@76 14
Chris@76 15 def processMultipleOutputs(data, sampleRate, key, outputs, parameters = {}):
Chris@68 16 #!!! docstring
Chris@68 17
Chris@76 18 plug, stepSize, blockSize, outIndices = loadAndQuery(data, sampleRate, key, parameters)
Chris@64 19
Chris@64 20 for o in outputs:
Chris@64 21 assert o in outIndices
Chris@64 22
Chris@75 23 ff = frames.framesFromArray(data, stepSize, blockSize)
Chris@61 24 fi = 0
Chris@64 25
Chris@61 26 for f in ff:
Chris@80 27 results = plug.process_block(f, vampyhost.frame_to_realtime(fi, sampleRate))
Chris@64 28 # results is a dict mapping output number -> list of feature dicts
Chris@66 29 for o in outputs:
Chris@76 30 outix = outIndices[o]
Chris@76 31 if outix in results:
Chris@76 32 for r in results[outix]:
Chris@70 33 yield { o: r }
Chris@61 34 fi = fi + stepSize
Chris@61 35
Chris@80 36 results = plug.get_remaining_features()
Chris@66 37 for o in outputs:
Chris@76 38 outix = outIndices[o]
Chris@76 39 if outix in results:
Chris@76 40 for r in results[outix]:
Chris@70 41 yield { o: r }
Chris@66 42
Chris@66 43 plug.unload()
Chris@66 44
Chris@76 45 def process(data, sampleRate, key, output = "", parameters = {}):
Chris@76 46 #!!! docstring
Chris@76 47
Chris@76 48 plug, stepSize, blockSize, outIndices = loadAndQuery(data, sampleRate, key, parameters)
Chris@76 49
Chris@76 50 if output == "":
Chris@76 51 outix = 0
Chris@76 52 else:
Chris@76 53 assert output in outIndices
Chris@76 54 outix = outIndices[output]
Chris@76 55
Chris@76 56 ff = frames.framesFromArray(data, stepSize, blockSize)
Chris@76 57 fi = 0
Chris@76 58
Chris@76 59 for f in ff:
Chris@80 60 results = plug.process_block(f, vampyhost.frame_to_realtime(fi, sampleRate))
Chris@76 61 # results is a dict mapping output number -> list of feature dicts
Chris@76 62 if outix in results:
Chris@76 63 for r in results[outix]:
Chris@76 64 yield r
Chris@76 65 fi = fi + stepSize
Chris@76 66
Chris@80 67 results = plug.get_remaining_features()
Chris@76 68 if outix in results:
Chris@76 69 for r in results[outix]:
Chris@76 70 yield r
Chris@76 71
Chris@76 72 plug.unload()
Chris@76 73