diff options
author | Guido van Rossum <guido@python.org> | 1990-10-25 18:51:42 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1990-10-25 18:51:42 (GMT) |
commit | e1f069ec9831c263ddbf6fd5b997a115212f9262 (patch) | |
tree | 81a4f93ee6d5483c5002767136dcd2c84ed2875f /Lib/stdwin/Soundogram.py | |
parent | 4de12876a9b41fa0c701f91191d1a588b69fcaf9 (diff) | |
download | cpython-e1f069ec9831c263ddbf6fd5b997a115212f9262.zip cpython-e1f069ec9831c263ddbf6fd5b997a115212f9262.tar.gz cpython-e1f069ec9831c263ddbf6fd5b997a115212f9262.tar.bz2 |
Initial revision
Diffstat (limited to 'Lib/stdwin/Soundogram.py')
-rwxr-xr-x | Lib/stdwin/Soundogram.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/Lib/stdwin/Soundogram.py b/Lib/stdwin/Soundogram.py new file mode 100755 index 0000000..a362eb2 --- /dev/null +++ b/Lib/stdwin/Soundogram.py @@ -0,0 +1,37 @@ +# Module 'Soundogram' + +import audio +from minmax import min, max +from Histogram import Histogram + +class Soundogram() = Histogram(): + # + def define(self, (win, chunk)): + width, height = corner = win.getwinsize() + bounds = (0, 0), corner + self.chunk = chunk + self.step = (len(chunk)-1)/(width/2+1) + 1 + ydata = _make_ydata(chunk, self.step) + return Histogram.define(self, (win, bounds, ydata, (0, 128))) + # + def setchunk(self, chunk): + self.chunk = chunk + self.recompute() + # + def recompute(self): + (left, top), (right, bottom) = self.bounds + width = right - left + self.step = (len(chunk)-1)/width + 1 + ydata = _make_ydata(chunk, self.step) + self.setdata(ydata, (0, 128)) + # + + +def _make_ydata(chunk, step): + ydata = [] + for i in range(0, len(chunk), step): + piece = audio.chr2num(chunk[i:i+step]) + mi, ma = min(piece), max(piece) + y = max(abs(mi), abs(ma)) + ydata.append(y) + return ydata |