mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| # Compare different audio compression schemes.
 | |
| #
 | |
| # This copies mono audio data from the input port to the output port,
 | |
| # and puts up a window with 4 toggle buttons:
 | |
| #
 | |
| # uLAW       : convert the data to uLAW and back
 | |
| # ADPCM      : convert the data to ADPCM and back
 | |
| # Difference : make only the difference between the converted and the
 | |
| #              original data audible
 | |
| # Exit       : quit from the program
 | |
| 
 | |
| import fl
 | |
| import FL
 | |
| import flp
 | |
| import al
 | |
| import AL
 | |
| import audioop
 | |
| import sys
 | |
| 
 | |
| class Cmpaf:
 | |
| 	def __init__(self):
 | |
| 		parsetree = flp.parse_form('cmpaf_form','form')
 | |
| 		flp.create_full_form(self, parsetree)
 | |
| 		c = al.newconfig()
 | |
| 		c.setchannels(AL.MONO)
 | |
| 		c.setqueuesize(1800)
 | |
| 		self.iport = al.openport('cmpaf','r', c)
 | |
| 		self.oport = al.openport('cmpaf','w', c)
 | |
| 		self.do_adpcm = self.do_ulaw = self.do_diff = 0
 | |
| 		self.acstate = None
 | |
| 		self.form.show_form(FL.PLACE_SIZE, 1, 'compare audio formats')
 | |
| 
 | |
| 	def run(self):
 | |
| 		while 1:
 | |
| 			olddata = data = self.iport.readsamps(600)
 | |
| 			if self.do_ulaw:
 | |
| 				data = audioop.lin2ulaw(data, 2)
 | |
| 				data = audioop.ulaw2lin(data, 2)
 | |
| 			if self.do_adpcm:
 | |
| 				data, nacstate = audioop.lin2adpcm(data, 2, \
 | |
| 					  self.acstate)
 | |
| 				data, dummy = audioop.adpcm2lin(data, 2, \
 | |
| 					  self.acstate)
 | |
| 				self.acstate = nacstate
 | |
| 			if self.do_diff:
 | |
| 				olddata = audioop.mul(olddata, 2, -1)
 | |
| 				data = audioop.add(olddata, data, 2)
 | |
| 			self.oport.writesamps(data)
 | |
| 			fl.check_forms()
 | |
| 
 | |
| 	def cb_exit(self, *args):
 | |
| 		sys.exit(0)
 | |
| 
 | |
| 	def cb_adpcm(self, obj, val):
 | |
| 		self.do_adpcm = obj.get_button()
 | |
| 
 | |
| 	def cb_ulaw(self, obj, val):
 | |
| 		self.do_ulaw = obj.get_button()
 | |
| 
 | |
| 	def cb_diff(self, obj, val):
 | |
| 		self.do_diff = obj.get_button()
 | |
| 
 | |
| cmpaf = Cmpaf()
 | |
| cmpaf.run()
 | 
