Chris@19
|
1
|
Chris@19
|
2 import vampyhost as vh
|
Chris@40
|
3 import numpy as np
|
Chris@19
|
4
|
Chris@82
|
5 plugin_key = "vamp-test-plugin:vamp-test-plugin"
|
Chris@19
|
6
|
Chris@19
|
7 rate = 44100
|
Chris@19
|
8
|
Chris@19
|
9 def test_load_unload():
|
Chris@82
|
10 plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE)
|
Chris@23
|
11 plug.unload()
|
Chris@19
|
12 try:
|
Chris@23
|
13 plug.unload() # should throw but not crash
|
Chris@19
|
14 assert(False)
|
Chris@19
|
15 except AttributeError:
|
Chris@19
|
16 pass
|
Chris@19
|
17
|
Chris@20
|
18 def test_get_set_parameter():
|
Chris@82
|
19 plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE)
|
Chris@80
|
20 value = plug.get_parameter_value("produce_output")
|
Chris@20
|
21 assert(value == 1.0)
|
Chris@80
|
22 plug.set_parameter_value("produce_output", 0.0)
|
Chris@80
|
23 value = plug.get_parameter_value("produce_output")
|
Chris@20
|
24 assert(value == 0.0)
|
Chris@20
|
25
|
Chris@19
|
26 def test_process_without_initialise():
|
Chris@82
|
27 plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE)
|
Chris@19
|
28 try:
|
Chris@80
|
29 plug.process_block([[1,2,3,4]], vh.RealTime(0, 0))
|
Chris@40
|
30 assert False
|
Chris@102
|
31 except Exception:
|
Chris@19
|
32 pass
|
Chris@19
|
33
|
Chris@40
|
34 def test_process_input_format():
|
Chris@82
|
35 plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE)
|
Chris@40
|
36 plug.initialise(2, 4, 4) # channels, stepsize, blocksize
|
Chris@80
|
37 result = plug.process_block([[1,2,3,4],[5,6,7,8]], vh.RealTime(0, 0))
|
Chris@80
|
38 result = plug.process_block([np.array([1,2,3,4]),np.array([5,6,7,8])], vh.RealTime(0, 0))
|
Chris@80
|
39 result = plug.process_block(np.array([[1,2,3,4],[5,6,7,8]]), vh.RealTime(0, 0))
|
Chris@40
|
40 try:
|
Chris@40
|
41 # Wrong number of channels
|
Chris@80
|
42 result = plug.process_block(np.array([[1,2,3,4]]), vh.RealTime(0, 0))
|
Chris@40
|
43 assert False
|
Chris@40
|
44 except TypeError:
|
Chris@40
|
45 pass
|
Chris@40
|
46 try:
|
Chris@40
|
47 # Wrong number of samples per channel
|
Chris@80
|
48 result = plug.process_block(np.array([[1,2,3],[4,5,6]]), vh.RealTime(0, 0))
|
Chris@40
|
49 assert False
|
Chris@40
|
50 except TypeError:
|
Chris@40
|
51 pass
|
Chris@40
|
52 try:
|
Chris@40
|
53 # Differing numbers of samples per channel
|
Chris@80
|
54 result = plug.process_block(np.array([[1,2,3,4],[5,6,7]]), vh.RealTime(0, 0))
|
Chris@40
|
55 assert False
|
Chris@40
|
56 except TypeError:
|
Chris@40
|
57 pass
|
Chris@20
|
58
|
Chris@43
|
59 def test_process_output_1ch():
|
Chris@82
|
60 plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE)
|
Chris@43
|
61 plug.initialise(1, 2, 2)
|
Chris@43
|
62 try:
|
Chris@43
|
63 # Too many channels
|
Chris@80
|
64 result = plug.process_block([[3,4],[5,6]], vh.RealTime(0, 0))
|
Chris@43
|
65 assert False
|
Chris@43
|
66 except TypeError:
|
Chris@43
|
67 pass
|
Chris@80
|
68 result = plug.process_block([[3,3]], vh.RealTime(0, 0))
|
Chris@148
|
69 assert result[9] == [ { "label" : "", "values" : np.array([5.0]) } ]
|
Chris@80
|
70 result = plug.process_block([[3,0]], vh.RealTime(0, 0))
|
Chris@148
|
71 assert result[9] == [ { "label" : "", "values" : np.array([4.0]) } ]
|
Chris@40
|
72
|
Chris@44
|
73 def test_process_output_2ch():
|
Chris@82
|
74 plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE)
|
Chris@44
|
75 plug.initialise(2, 2, 2)
|
Chris@44
|
76 try:
|
Chris@44
|
77 # Too few channels
|
Chris@80
|
78 result = plug.process_block([[3,4]], vh.RealTime(0, 0))
|
Chris@44
|
79 assert False
|
Chris@44
|
80 except TypeError:
|
Chris@44
|
81 pass
|
Chris@44
|
82 try:
|
Chris@44
|
83 # Too many channels
|
Chris@80
|
84 result = plug.process_block([[3,4],[5,6],[7,8]], vh.RealTime(0, 0))
|
Chris@44
|
85 assert False
|
Chris@44
|
86 except TypeError:
|
Chris@44
|
87 pass
|
Chris@80
|
88 result = plug.process_block([[3,3],[4,4]], vh.RealTime(0, 0))
|
Chris@148
|
89 assert (result[9][0]["values"] == np.array([5.0,6.0])).all()
|
Chris@80
|
90 result = plug.process_block([[3,0],[4,0]], vh.RealTime(0, 0))
|
Chris@148
|
91 assert (result[9][0]["values"] == np.array([4.0,5.0])).all()
|
Chris@44
|
92
|
Chris@44
|
93 def test_process_output_3ch():
|
Chris@82
|
94 plug = vh.load_plugin(plugin_key, rate, vh.ADAPT_NONE)
|
Chris@44
|
95 plug.initialise(3, 2, 2)
|
Chris@44
|
96 try:
|
Chris@44
|
97 # Too few channels
|
Chris@80
|
98 result = plug.process_block([[3,4],[5,6]], vh.RealTime(0, 0))
|
Chris@44
|
99 assert False
|
Chris@44
|
100 except TypeError:
|
Chris@44
|
101 pass
|
Chris@44
|
102 try:
|
Chris@44
|
103 # Too many channels
|
Chris@80
|
104 result = plug.process_block([[3,4],[5,6],[7,8],[9,10]], vh.RealTime(0, 0))
|
Chris@44
|
105 assert False
|
Chris@44
|
106 except TypeError:
|
Chris@44
|
107 pass
|
Chris@80
|
108 result = plug.process_block([[3,3],[4,4],[5,5]], vh.RealTime(0, 0))
|
Chris@148
|
109 assert (result[9][0]["values"] == np.array([5.0,6.0,7.0])).all()
|
Chris@80
|
110 result = plug.process_block([[3,0],[4,0],[5,0]], vh.RealTime(0, 0))
|
Chris@148
|
111 assert (result[9][0]["values"] == np.array([4.0,5.0,6.0])).all()
|
Chris@44
|
112
|
Chris@44
|
113
|
Chris@43
|
114
|