mirror of
				https://github.com/python/cpython.git
				synced 2025-10-26 11:14:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			970 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			970 B
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| # Module 'VUMeter'
 | |
| 
 | |
| import audio
 | |
| from StripChart import StripChart
 | |
| 
 | |
| K = 1024
 | |
| Rates = [0, 32*K, 16*K, 8*K]
 | |
| 
 | |
| class VUMeter(StripChart):
 | |
| 	#
 | |
| 	# Override define() and timer() methods
 | |
| 	#
 | |
| 	def define(self, parent):
 | |
| 		self = StripChart.define(self, (parent, 128))
 | |
| 		self.parent.need_timer(self)
 | |
| 		self.sampling = 0
 | |
| 		self.rate = 3
 | |
| 		self.enable(0)
 | |
| 		return self
 | |
| 	#
 | |
| 	def timer(self):
 | |
| 		if self.sampling:
 | |
| 			chunk = audio.wait_recording()
 | |
| 			self.sampling = 0
 | |
| 			nums = audio.chr2num(chunk)
 | |
| 			ampl = max(abs(min(nums)), abs(max(nums)))
 | |
| 			self.append(ampl)
 | |
| 		if self.enabled and not self.sampling:
 | |
| 			audio.setrate(self.rate)
 | |
| 			size = Rates[self.rate]/10
 | |
| 			size = size/48*48
 | |
| 			audio.start_recording(size)
 | |
| 			self.sampling = 1
 | |
| 		if self.sampling:
 | |
| 			self.parent.settimer(1)
 | |
| 	#
 | |
| 	# New methods: start() and stop()
 | |
| 	#
 | |
| 	def stop(self):
 | |
| 		if self.sampling:
 | |
| 			chunk = audio.stop_recording()
 | |
| 			self.sampling = 0
 | |
| 		self.enable(0)
 | |
| 	#
 | |
| 	def start(self):
 | |
| 		self.enable(1)
 | |
| 		self.timer()
 | 
