The Tooba
 All Data Structures Namespaces Files Functions Variables Macros Pages
testit.py
Go to the documentation of this file.
1 import instrument
2 
3 assert instrument.Key is not None
4 assert instrument.Queue is not None
5 assert instrument.Voice is not None
6 assert instrument.Oscillator is not None
7 assert instrument.ADSR is not None
8 assert instrument.mult_signed is not None
9 
10 q = instrument.Queue()
11 assert q.write(4) == 0
12 
13 # this should succeed (0) with result 4
14 x = q.read()
15 assert x == [0, 4]
16 
17 # this should fail (1)
18 x = q.read()
19 assert x[0] == 1
20 
21 # fill up the queue, remember it holds only 1023 samples
22 for i in range(1023):
23  assert q.write(i) == 0, i
24 
25 # queue is now full, expect failure
26 assert q.write(1023) == 1
27 
28 # verify queue contents
29 for i in range(1023):
30  r, j = q.read()
31  assert r == 0, r
32  assert j == i, (j, i)
33 
34 osc = instrument.Oscillator()
35 osc.setfreq(2000.0)
36 osc.setwaveform(0)
37 assert osc.output() == -0x80000000, hex(osc.output()) # ramp
38 osc.setwaveform(1)
39 assert osc.output() == -0x80000000, hex(osc.output()) # triangle
40 osc.setwaveform(2)
41 assert osc.output() == -0x80000000, hex(osc.output()) # square
42 for i in range(4):
43  osc.step()
44 osc.setwaveform(0)
45 assert osc.output() == -0x4cccccc0, hex(osc.output())
46 osc.setwaveform(1)
47 assert osc.output() == -0x19999980, hex(osc.output())
48 osc.setwaveform(2)
49 assert osc.output() == -0x80000000, hex(osc.output())
50 for i in range(6):
51  osc.step()
52 osc.setwaveform(0)
53 assert osc.output() == 0x20, hex(osc.output())
54 osc.setwaveform(1)
55 assert osc.output() == 0x7fffffbe, hex(osc.output())
56 osc.setwaveform(2)
57 assert osc.output() == 0x7fffffff, hex(osc.output())
58 for i in range(9):
59  osc.step()
60 osc.setwaveform(0)
61 assert osc.output() == 0x73333370, hex(osc.output())
62 osc.setwaveform(1)
63 assert osc.output() == -0x666666e2, hex(osc.output())
64 osc.setwaveform(2)
65 assert osc.output() == 0x7fffffff, hex(osc.output())
66 osc.step()
67 osc.setwaveform(0)
68 assert osc.output() == -0x7fffffc0, hex(osc.output())
69 osc.setwaveform(1)
70 assert osc.output() == -0x7fffff80, hex(osc.output())
71 osc.setwaveform(2)
72 assert osc.output() == -0x80000000, hex(osc.output())
73 
74 adsr = instrument.ADSR()
75 adsr.setA(0.01)
76 adsr.setD(0.1)
77 adsr.setS(0.1)
78 adsr.setR(0.1)
79 assert adsr.output() == 0, hex(adsr.output())
80 adsr.keydown(1)
81 adsr.step()
82 assert adsr.output() == 0xa3d70a, hex(adsr.output())
83 adsr.step()
84 assert adsr.output() == 0x147ae14, hex(adsr.output())
85 adsr.step()
86 assert adsr.output() == 0x1eb851e, hex(adsr.output())
87 adsr.step()
88 assert adsr.output() == 0x28f5c28, hex(adsr.output())
89 for i in range(400 - 4):
90  adsr.step()
91 assert adsr.state() == 1, adsr.state()
92 assert adsr.output() == 0xffffffa0, hex(adsr.output())
93 adsr.step()
94 assert adsr.state() == 2, adsr.state()
95 assert adsr.output() == 0xffffffff, hex(adsr.output())
96 adsr.step()
97 assert adsr.output() == 0xffffffff, hex(adsr.output())
98 adsr.step()
99 assert adsr.output() == 0xfff14197, hex(adsr.output())
100 for i in range(4000):
101  adsr.step()
102 assert adsr.output() == 0x6e568fc8, hex(adsr.output())
103 for i in range(4000):
104  adsr.step()
105 assert adsr.output() == 0x38c5f8f4, hex(adsr.output())
106 adsr.keydown(0)
107 adsr.step()
108 assert adsr.output() == 0x38c256e5, hex(adsr.output())
109 adsr.step()
110 assert adsr.output() == 0x38beb511, hex(adsr.output())
111 for i in range(25000):
112  adsr.step()
113 assert adsr.output() == 0x1c033c, hex(adsr.output())
114 for i in range(25000):
115  adsr.step()
116 assert adsr.output() == 0, hex(adsr.output())