| 
									
										
										
										
											1992-12-14 15:06:32 +00:00
										 |  |  | # 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-10-07 10:23:49 +00:00
										 |  |  | class Cmpaf: | 
					
						
							|  |  |  | 	def __init__(self): | 
					
						
							| 
									
										
										
										
											1992-12-14 15:06:32 +00:00
										 |  |  | 		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() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-10-07 10:23:49 +00:00
										 |  |  | cmpaf = Cmpaf() | 
					
						
							| 
									
										
										
										
											1992-12-14 15:06:32 +00:00
										 |  |  | cmpaf.run() |