Class around PixMap objects that allows more python-like access. By Joe Strout.
[python/dscho.git] / Lib / lib-stdwin / VUMeter.py
blobed9a4738c118253f0d8891ac045d4a2d659e26b6
1 # Module 'VUMeter'
3 import audio
4 from StripChart import StripChart
6 K = 1024
7 Rates = [0, 32*K, 16*K, 8*K]
9 class VUMeter(StripChart):
11 # Override define() and timer() methods
13 def define(self, parent):
14 self = StripChart.define(self, (parent, 128))
15 self.parent.need_timer(self)
16 self.sampling = 0
17 self.rate = 3
18 self.enable(0)
19 return self
21 def timer(self):
22 if self.sampling:
23 chunk = audio.wait_recording()
24 self.sampling = 0
25 nums = audio.chr2num(chunk)
26 ampl = max(abs(min(nums)), abs(max(nums)))
27 self.append(ampl)
28 if self.enabled and not self.sampling:
29 audio.setrate(self.rate)
30 size = Rates[self.rate]/10
31 size = size/48*48
32 audio.start_recording(size)
33 self.sampling = 1
34 if self.sampling:
35 self.parent.settimer(1)
37 # New methods: start() and stop()
39 def stop(self):
40 if self.sampling:
41 chunk = audio.stop_recording()
42 self.sampling = 0
43 self.enable(0)
45 def start(self):
46 self.enable(1)
47 self.timer()