Added function ttob.
[python/dscho.git] / Demo / sgi / al / cmpaf.py
blob509f0aad18a9babf843cbec30481f88ebe4012b6
1 # Compare different audio compression schemes.
3 # This copies mono audio data from the input port to the output port,
4 # and puts up a window with 4 toggle buttons:
6 # uLAW : convert the data to uLAW and back
7 # ADPCM : convert the data to ADPCM and back
8 # Difference : make only the difference between the converted and the
9 # original data audible
10 # Exit : quit from the program
12 import fl
13 import FL
14 import flp
15 import al
16 import AL
17 import audioop
18 import sys
20 class Cmpaf():
21 def init(self):
22 parsetree = flp.parse_form('cmpaf_form','form')
23 flp.create_full_form(self, parsetree)
24 c = al.newconfig()
25 c.setchannels(AL.MONO)
26 c.setqueuesize(1800)
27 self.iport = al.openport('cmpaf','r', c)
28 self.oport = al.openport('cmpaf','w', c)
29 self.do_adpcm = self.do_ulaw = self.do_diff = 0
30 self.acstate = None
31 self.form.show_form(FL.PLACE_SIZE, 1, 'compare audio formats')
32 return self
34 def run(self):
35 while 1:
36 olddata = data = self.iport.readsamps(600)
37 if self.do_ulaw:
38 data = audioop.lin2ulaw(data, 2)
39 data = audioop.ulaw2lin(data, 2)
40 if self.do_adpcm:
41 data, nacstate = audioop.lin2adpcm(data, 2, \
42 self.acstate)
43 data, dummy = audioop.adpcm2lin(data, 2, \
44 self.acstate)
45 self.acstate = nacstate
46 if self.do_diff:
47 olddata = audioop.mul(olddata, 2, -1)
48 data = audioop.add(olddata, data, 2)
49 self.oport.writesamps(data)
50 fl.check_forms()
52 def cb_exit(self, *args):
53 sys.exit(0)
55 def cb_adpcm(self, obj, val):
56 self.do_adpcm = obj.get_button()
58 def cb_ulaw(self, obj, val):
59 self.do_ulaw = obj.get_button()
61 def cb_diff(self, obj, val):
62 self.do_diff = obj.get_button()
64 cmpaf = Cmpaf().init()
65 cmpaf.run()