blob: 65c018b08ca643ec4d72d1f5880d5ca5d0fed433 [file] [log] [blame]
Guido van Rossum36ddc9e1990-10-31 11:24:22 +00001# Module VUMeter
2
3import audio
4from StripChart import StripChart
5
6K = 1024
7Rates = [0, 32*K, 16*K, 8*K]
8
9class VUMeter() = StripChart():
10 #
11 # Override define() and timer() methods
12 #
13 def define(self, (win, bounds)):
14 self = StripChart.define(self, (win, bounds, 128))
15 self.sampling = 0
16 self.rate = 3
17 self.enable(0)
18 return self
19 #
20 def timer(self):
21 if self.sampling:
22 chunk = audio.wait_recording()
23 self.sampling = 0
24 nums = audio.chr2num(chunk)
25 ampl = max(abs(min(nums)), abs(max(nums)))
26 self.append(ampl)
27 if self.enabled and not self.sampling:
28 audio.setrate(self.rate)
29 size = Rates[self.rate]/10
30 size = size/48*48
31 audio.start_recording(size)
32 self.sampling = 1
33 if self.sampling:
34 self.win.settimer(1)
35 #
36 # New methods: start() and stop()
37 #
38 def stop(self):
39 if self.sampling:
40 chunk = audio.stop_recording()
41 self.sampling = 0
42 self.enable(0)
43 #
44 def start(self):
45 self.enable(1)
46 self.timer()