Chris@71: Chris@71: import vamp Chris@71: import numpy as np Chris@71: Chris@82: plugin_key = "vamp-test-plugin:vamp-test-plugin" Chris@82: plugin_key_freq = "vamp-test-plugin:vamp-test-plugin-freq" Chris@71: Chris@71: rate = 44100 Chris@71: Chris@71: # Throughout this file we have the assumption that the plugin gets run with a Chris@71: # blocksize of 1024, and with a step of 1024 for the time-domain version or 512 Chris@71: # for the frequency-domain one. That is certainly expected to be the norm for a Chris@71: # plugin like this that declares no preference, and the Python Vamp module is Chris@71: # expected to follow the norm Chris@71: Chris@71: blocksize = 1024 Chris@92: eps = 1e-6 Chris@71: Chris@71: def input_data(n): Chris@71: # start at 1, not 0 so that all elts are non-zero Chris@71: return np.arange(n) + 1 Chris@71: Chris@71: def test_collect_runs_at_all(): Chris@88: buf = input_data(blocksize * 10) Chris@88: results = list(vamp.collect(buf, rate, plugin_key, "input-timestamp")) Chris@88: assert results != [] Chris@88: Chris@88: def test_collect_one_sample_per_step(): Chris@88: buf = input_data(blocksize * 10) Chris@88: results = list(vamp.collect(buf, rate, plugin_key, "input-timestamp")) Chris@88: assert len(results) == 10 Chris@88: for r in results: Chris@88: assert r["timestamp"] == vamp.vampyhost.frame_to_realtime(r["values"][0], rate) Chris@88: Chris@92: def test_collect_fixed_sample_rate(): Chris@92: buf = input_data(blocksize * 10) Chris@92: results = list(vamp.collect(buf, rate, plugin_key, "curve-fsr")) Chris@92: assert len(results) == 10 Chris@92: i = 0 Chris@92: for r in results: Chris@92: assert r["timestamp"] == vamp.vampyhost.RealTime('seconds', i * 0.4) Chris@92: assert abs(r["values"][0] - i * 0.1) < eps Chris@92: i = i + 1 Chris@92: Chris@92: def test_collect_fixed_sample_rate_2(): Chris@92: buf = input_data(blocksize * 10) Chris@92: results = list(vamp.collect(buf, rate, plugin_key, "curve-fsr-timed")) Chris@92: assert len(results) == 10 Chris@92: i = 0 Chris@92: for r in results: Chris@92: assert r["timestamp"] == vamp.vampyhost.RealTime('seconds', i * 0.4) Chris@92: assert abs(r["values"][0] - i * 0.1) < eps Chris@92: i = i + 1 Chris@92: Chris@92: def test_collect_variable_sample_rate(): Chris@92: buf = input_data(blocksize * 10) Chris@92: results = list(vamp.collect(buf, rate, plugin_key, "curve-vsr")) Chris@92: assert len(results) == 10 Chris@92: i = 0 Chris@92: for r in results: Chris@92: assert r["timestamp"] == vamp.vampyhost.RealTime('seconds', i * 0.75) Chris@92: assert abs(r["values"][0] - i * 0.1) < eps Chris@92: i = i + 1