Mercurial > hg > vampy-host
view vamp/process.py @ 87:dd56716714e0
Add output_index to the returned output descriptor as well; use it
author | Chris Cannam |
---|---|
date | Wed, 21 Jan 2015 15:04:05 +0000 |
parents | d91a2285fbb2 |
children | 1a08dd72f4d2 |
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 load_and_query(data, sample_rate, key, parameters): plug, step_size, block_size = load.load_and_configure(data, sample_rate, key, parameters) plug_outs = plug.get_outputs() out_indices = dict([(o["identifier"], o["output_index"]) for o in plug_outs]) return plug, step_size, block_size, out_indices def process_multiple_outputs(data, sample_rate, key, outputs, parameters = {}): #!!! docstring plug, step_size, block_size, out_indices = load_and_query(data, sample_rate, key, parameters) for o in outputs: assert o in out_indices ff = frames.frames_from_array(data, step_size, block_size) fi = 0 for f in ff: results = plug.process_block(f, vampyhost.frame_to_realtime(fi, sample_rate)) # results is a dict mapping output number -> list of feature dicts for o in outputs: outix = out_indices[o] if outix in results: for r in results[outix]: yield { o: r } fi = fi + step_size results = plug.get_remaining_features() for o in outputs: outix = out_indices[o] if outix in results: for r in results[outix]: yield { o: r } plug.unload() def process(data, sample_rate, key, output = "", parameters = {}): #!!! docstring plug, step_size, block_size = load.load_and_configure(data, sample_rate, key, parameters) if output == "": out = plug.get_output(0) else: out = plug.get_output(output) outix = out["output_index"] ff = frames.frames_from_array(data, step_size, block_size) fi = 0 for f in ff: results = plug.process_block(f, vampyhost.frame_to_realtime(fi, sample_rate)) # results is a dict mapping output number -> list of feature dicts if outix in results: for r in results[outix]: yield r fi = fi + step_size results = plug.get_remaining_features() if outix in results: for r in results[outix]: yield r plug.unload()