Guido van Rossum | 36ddc9e | 1990-10-31 11:24:22 +0000 | [diff] [blame^] | 1 | # Module VUMeter |
| 2 | |
| 3 | import audio |
| 4 | from StripChart import StripChart |
| 5 | |
| 6 | K = 1024 |
| 7 | Rates = [0, 32*K, 16*K, 8*K] |
| 8 | |
| 9 | class 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() |