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]);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |