| # Module 'VUMeter' |
| |
| import audio |
| from StripChart import StripChart |
| |
| K = 1024 |
| Rates = [0, 32*K, 16*K, 8*K] |
| |
| class VUMeter(StripChart): |
| # |
| # Override define() and timer() methods |
| # |
| def define(self, parent): |
| self = StripChart.define(self, (parent, 128)) |
| self.parent.need_timer(self) |
| self.sampling = 0 |
| self.rate = 3 |
| self.enable(0) |
| return self |
| # |
| def timer(self): |
| if self.sampling: |
| chunk = audio.wait_recording() |
| self.sampling = 0 |
| nums = audio.chr2num(chunk) |
| ampl = max(abs(min(nums)), abs(max(nums))) |
| self.append(ampl) |
| if self.enabled and not self.sampling: |
| audio.setrate(self.rate) |
| size = Rates[self.rate]/10 |
| size = size/48*48 |
| audio.start_recording(size) |
| self.sampling = 1 |
| if self.sampling: |
| self.parent.settimer(1) |
| # |
| # New methods: start() and stop() |
| # |
| def stop(self): |
| if self.sampling: |
| chunk = audio.stop_recording() |
| self.sampling = 0 |
| self.enable(0) |
| # |
| def start(self): |
| self.enable(1) |
| self.timer() |