forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package kha.audio2; | ||
|  | 
 | ||
|  | import kha.Sound; | ||
|  | import kha.internal.IntBox; | ||
|  | 
 | ||
|  | class Audio { | ||
|  | 	public static var disableGcInteractions = false; | ||
|  | 	static var intBox: IntBox = new IntBox(0); | ||
|  | 	static var buffer: Buffer; | ||
|  | 
 | ||
|  | 	public static function _init() { | ||
|  | 		var bufferSize = 1024 * 2; | ||
|  | 		buffer = new Buffer(bufferSize * 4, 2, samplesPerSecond); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function _callCallback(samples: Int): Void { | ||
|  | 		if (buffer == null) | ||
|  | 			return; | ||
|  | 		if (audioCallback != null) { | ||
|  | 			intBox.value = samples; | ||
|  | 			audioCallback(intBox, buffer); | ||
|  | 		} | ||
|  | 		else { | ||
|  | 			for (i in 0...samples) { | ||
|  | 				buffer.data.set(buffer.writeLocation, 0); | ||
|  | 				buffer.writeLocation += 1; | ||
|  | 				if (buffer.writeLocation >= buffer.size) { | ||
|  | 					buffer.writeLocation = 0; | ||
|  | 				} | ||
|  | 			} | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function _readSample(): FastFloat { | ||
|  | 		if (buffer == null) | ||
|  | 			return 0; | ||
|  | 		var value: FastFloat = buffer.data.get(buffer.readLocation); | ||
|  | 		++buffer.readLocation; | ||
|  | 		if (buffer.readLocation >= buffer.size) { | ||
|  | 			buffer.readLocation = 0; | ||
|  | 		} | ||
|  | 		return value; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static var samplesPerSecond: Int; | ||
|  | 
 | ||
|  | 	public static var audioCallback: IntBox->Buffer->Void; | ||
|  | 
 | ||
|  | 	public static function stream(sound: Sound, loop: Bool = false): kha.audio1.AudioChannel { | ||
|  | 		return null; | ||
|  | 	} | ||
|  | } |