68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package auratests.dsp;
 | 
						|
 | 
						|
import utest.Assert;
 | 
						|
 | 
						|
import aura.Aura;
 | 
						|
import aura.dsp.FractionalDelayLine;
 | 
						|
import aura.types.AudioBuffer;
 | 
						|
import aura.utils.TestSignals;
 | 
						|
 | 
						|
@:access(aura.dsp.FractionalDelayLine)
 | 
						|
class TestFractionalDelayLine extends utest.Test {
 | 
						|
	var audioBuffer: AudioBuffer;
 | 
						|
	var delayLine: FractionalDelayLine;
 | 
						|
 | 
						|
	function setup() {
 | 
						|
		audioBuffer = new AudioBuffer(2, 8);
 | 
						|
		delayLine = new FractionalDelayLine(2, 8);
 | 
						|
	}
 | 
						|
 | 
						|
	function test_zeroDelayTime_noDelay() {
 | 
						|
		TestSignals.fillUnitImpulse(audioBuffer.getChannelView(0));
 | 
						|
		TestSignals.fillUnitImpulse(audioBuffer.getChannelView(1));
 | 
						|
 | 
						|
		delayLine.at_setDelayLength(Left, 0.0);
 | 
						|
		delayLine.at_setDelayLength(Right, 0.0);
 | 
						|
 | 
						|
		delayLine.process(audioBuffer);
 | 
						|
 | 
						|
		Assert.floatEquals(1.0, audioBuffer.getChannelView(0)[0]);
 | 
						|
		Assert.floatEquals(0.0, audioBuffer.getChannelView(0)[1]);
 | 
						|
 | 
						|
		Assert.floatEquals(1.0, audioBuffer.getChannelView(1)[0]);
 | 
						|
		Assert.floatEquals(0.0, audioBuffer.getChannelView(1)[1]);
 | 
						|
	}
 | 
						|
 | 
						|
	function test_integralDelayTime_independentChannels() {
 | 
						|
		TestSignals.fillUnitImpulse(audioBuffer.getChannelView(0));
 | 
						|
		TestSignals.fillUnitImpulse(audioBuffer.getChannelView(1));
 | 
						|
 | 
						|
		delayLine.at_setDelayLength(Left, 1.0);
 | 
						|
		delayLine.at_setDelayLength(Right, 3.0);
 | 
						|
 | 
						|
		delayLine.process(audioBuffer);
 | 
						|
 | 
						|
		Assert.floatEquals(0.0, audioBuffer.getChannelView(0)[0]);
 | 
						|
		Assert.floatEquals(1.0, audioBuffer.getChannelView(0)[1]);
 | 
						|
 | 
						|
		Assert.floatEquals(0.0, audioBuffer.getChannelView(1)[0]);
 | 
						|
		Assert.floatEquals(1.0, audioBuffer.getChannelView(1)[3]);
 | 
						|
	}
 | 
						|
 | 
						|
	function test_floatDelayTime_independentChannels() {
 | 
						|
		TestSignals.fillUnitImpulse(audioBuffer.getChannelView(0));
 | 
						|
		TestSignals.fillUnitImpulse(audioBuffer.getChannelView(1));
 | 
						|
 | 
						|
		delayLine.at_setDelayLength(Left, 0.8);
 | 
						|
		delayLine.at_setDelayLength(Right, 3.4);
 | 
						|
 | 
						|
		delayLine.process(audioBuffer);
 | 
						|
 | 
						|
		Assert.floatEquals(0.2, audioBuffer.getChannelView(0)[0]);
 | 
						|
		Assert.floatEquals(0.8, audioBuffer.getChannelView(0)[1]);
 | 
						|
 | 
						|
		Assert.floatEquals(0.6, audioBuffer.getChannelView(1)[3]);
 | 
						|
		Assert.floatEquals(0.4, audioBuffer.getChannelView(1)[4]);
 | 
						|
	}
 | 
						|
}
 |