Mercurial > hg > vampy-host
view vamp/process.py @ 76:b2afd385586f
Split out process, processMultipleOutputs
author | Chris Cannam |
---|---|
date | Wed, 21 Jan 2015 12:13:45 +0000 |
parents | ad08a0fe6673 |
children | 650f0697812f |
line wrap: on
line source
'''A high-level interface to the vampyhost extension module, for quickly and easily running Vamp audio analysis plugins on audio files and buffers.''' import vampyhost import frames import load def loadAndQuery(data, sampleRate, key, parameters): plug, stepSize, blockSize = load.loadAndConfigureFor(data, sampleRate, key, parameters) plugOuts = plug.getOutputs() outIndices = dict(zip([o["identifier"] for o in plugOuts], range(0, len(plugOuts)))) # id -> n return plug, stepSize, blockSize, outIndices def processMultipleOutputs(data, sampleRate, key, outputs, parameters = {}): #!!! docstring plug, stepSize, blockSize, outIndices = loadAndQuery(data, sampleRate, key, parameters) for o in outputs: assert o in outIndices ff = frames.framesFromArray(data, stepSize, blockSize) fi = 0 for f in ff: results = plug.processBlock(f, vampyhost.frame2RealTime(fi, sampleRate)) # results is a dict mapping output number -> list of feature dicts for o in outputs: outix = outIndices[o] if outix in results: for r in results[outix]: yield { o: r } fi = fi + stepSize results = plug.getRemainingFeatures() for o in outputs: outix = outIndices[o] if outix in results: for r in results[outix]: yield { o: r } plug.unload() def process(data, sampleRate, key, output = "", parameters = {}): #!!! docstring plug, stepSize, blockSize, outIndices = loadAndQuery(data, sampleRate, key, parameters) if output == "": outix = 0 else: assert output in outIndices outix = outIndices[output] ff = frames.framesFromArray(data, stepSize, blockSize) fi = 0 for f in ff: results = plug.processBlock(f, vampyhost.frame2RealTime(fi, sampleRate)) # results is a dict mapping output number -> list of feature dicts if outix in results: for r in results[outix]: yield r fi = fi + stepSize results = plug.getRemainingFeatures() if outix in results: for r in results[outix]: yield r plug.unload()