# Module 'Soundogram' import audio 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