annotate vamp/process.py @ 84:d91a2285fbb2

naming: local variables snake_case
author Chris Cannam
date Wed, 21 Jan 2015 13:04:01 +0000
parents a11b57e9fb0b
children dd56716714e0
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@84 7 def load_and_query(data, sample_rate, key, parameters):
Chris@84 8 plug, step_size, block_size = load.load_and_configure(data, sample_rate, key, parameters)
Chris@84 9 plug_outs = plug.get_outputs()
Chris@84 10 out_indices = dict(zip([o["identifier"] for o in plug_outs],
Chris@84 11 range(0, len(plug_outs)))) # id -> n
Chris@84 12 return plug, step_size, block_size, out_indices
Chris@76 13
Chris@76 14
Chris@84 15 def process_multiple_outputs(data, sample_rate, key, outputs, parameters = {}):
Chris@68 16 #!!! docstring
Chris@68 17
Chris@84 18 plug, step_size, block_size, out_indices = load_and_query(data, sample_rate, key, parameters)
Chris@64 19
Chris@64 20 for o in outputs:
Chris@84 21 assert o in out_indices
Chris@64 22
Chris@84 23 ff = frames.frames_from_array(data, step_size, block_size)
Chris@61 24 fi = 0
Chris@64 25
Chris@61 26 for f in ff:
Chris@84 27 results = plug.process_block(f, vampyhost.frame_to_realtime(fi, sample_rate))
Chris@64 28 # results is a dict mapping output number -> list of feature dicts
Chris@66 29 for o in outputs:
Chris@84 30 outix = out_indices[o]
Chris@76 31 if outix in results:
Chris@76 32 for r in results[outix]:
Chris@70 33 yield { o: r }
Chris@84 34 fi = fi + step_size
Chris@61 35
Chris@80 36 results = plug.get_remaining_features()
Chris@66 37 for o in outputs:
Chris@84 38 outix = out_indices[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@84 45 def process(data, sample_rate, key, output = "", parameters = {}):
Chris@76 46 #!!! docstring
Chris@76 47
Chris@84 48 plug, step_size, block_size, out_indices = load_and_query(data, sample_rate, key, parameters)
Chris@76 49
Chris@76 50 if output == "":
Chris@76 51 outix = 0
Chris@76 52 else:
Chris@84 53 assert output in out_indices
Chris@84 54 outix = out_indices[output]
Chris@76 55
Chris@84 56 ff = frames.frames_from_array(data, step_size, block_size)
Chris@76 57 fi = 0
Chris@76 58
Chris@76 59 for f in ff:
Chris@84 60 results = plug.process_block(f, vampyhost.frame_to_realtime(fi, sample_rate))
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@84 65 fi = fi + step_size
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