annotate Lib/lib-stdwin/Soundogram.py @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents 1d06b1499eb9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 # Module 'Soundogram'
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 import audio
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 from Histogram import Histogram
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5
531
8331076cfe15 New class syntax.
Guido van Rossum <guido@python.org>
parents: 35
diff changeset
6 class Soundogram(Histogram):
33
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 #
1110
1d06b1499eb9 * Got entirely rid of path.py.
Guido van Rossum <guido@python.org>
parents: 531
diff changeset
8 def define(self, win, chunk):
33
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 width, height = corner = win.getwinsize()
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 bounds = (0, 0), corner
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 self.chunk = chunk
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 self.step = (len(chunk)-1)/(width/2+1) + 1
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 ydata = _make_ydata(chunk, self.step)
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 return Histogram.define(self, (win, bounds, ydata, (0, 128)))
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 #
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 def setchunk(self, chunk):
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 self.chunk = chunk
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 self.recompute()
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 #
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 def recompute(self):
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 (left, top), (right, bottom) = self.bounds
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 width = right - left
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 self.step = (len(chunk)-1)/width + 1
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 ydata = _make_ydata(chunk, self.step)
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 self.setdata(ydata, (0, 128))
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 #
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 def _make_ydata(chunk, step):
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 ydata = []
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 for i in range(0, len(chunk), step):
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 piece = audio.chr2num(chunk[i:i+step])
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 mi, ma = min(piece), max(piece)
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 y = max(abs(mi), abs(ma))
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 ydata.append(y)
b807c90c4a68 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 return ydata