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