OLD | NEW |
1 var sampleRate = 44100.0; | 1 var sampleRate = 44100.0; |
2 | 2 |
3 var renderLengthSeconds = 4; | 3 var renderLengthSeconds = 4; |
4 var delayTimeSeconds = 0.5; | 4 var delayTimeSeconds = 0.5; |
5 var toneLengthSeconds = 2; | 5 var toneLengthSeconds = 2; |
6 | 6 |
7 function createToneBuffer(context, frequency, numberOfCycles, sampleRate) { | 7 function createToneBuffer(context, frequency, numberOfCycles, sampleRate) { |
8 var duration = numberOfCycles / frequency; | 8 let duration = numberOfCycles / frequency; |
9 var sampleFrameLength = duration * sampleRate; | 9 let sampleFrameLength = duration * sampleRate; |
10 | |
11 var audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate); | |
12 | 10 |
13 var n = audioBuffer.length; | 11 let audioBuffer = context.createBuffer(1, sampleFrameLength, sampleRate); |
14 var data = audioBuffer.getChannelData(0); | |
15 | 12 |
16 for (var i = 0; i < n; ++i) | 13 let n = audioBuffer.length; |
17 data[i] = Math.sin(frequency * 2.0*Math.PI * i / sampleRate); | 14 let data = audioBuffer.getChannelData(0); |
18 | 15 |
19 return audioBuffer; | 16 for (let i = 0; i < n; ++i) |
| 17 data[i] = Math.sin(frequency * 2.0 * Math.PI * i / sampleRate); |
| 18 |
| 19 return audioBuffer; |
20 } | 20 } |
21 | 21 |
22 function checkDelayedResult(renderedBuffer, toneBuffer, should) { | 22 function checkDelayedResult(renderedBuffer, toneBuffer, should) { |
23 var sourceData = toneBuffer.getChannelData(0); | 23 let sourceData = toneBuffer.getChannelData(0); |
24 var renderedData = renderedBuffer.getChannelData(0); | 24 let renderedData = renderedBuffer.getChannelData(0); |
25 | 25 |
26 var delayTimeFrames = delayTimeSeconds * sampleRate; | 26 let delayTimeFrames = delayTimeSeconds * sampleRate; |
27 var toneLengthFrames = toneLengthSeconds * sampleRate; | 27 let toneLengthFrames = toneLengthSeconds * sampleRate; |
28 | 28 |
29 var success = true; | 29 let success = true; |
30 | 30 |
31 var n = renderedBuffer.length; | 31 let n = renderedBuffer.length; |
32 | 32 |
33 for (var i = 0; i < n; ++i) { | 33 for (let i = 0; i < n; ++i) { |
34 if (i < delayTimeFrames) { | 34 if (i < delayTimeFrames) { |
35 // Check that initial portion is 0 (since signal is delayed). | 35 // Check that initial portion is 0 (since signal is delayed). |
36 if (renderedData[i] != 0) { | 36 if (renderedData[i] != 0) { |
37 should(renderedData[i], | 37 should( |
38 "Initial portion expected to be 0 at frame " + i) | 38 renderedData[i], 'Initial portion expected to be 0 at frame ' + i) |
39 .beEqualTo(0); | 39 .beEqualTo(0); |
40 success = false; | 40 success = false; |
41 break; | 41 break; |
42 } | 42 } |
43 } else if (i >= delayTimeFrames && i < delayTimeFrames + | 43 } else if (i >= delayTimeFrames && i < delayTimeFrames + toneLengthFrames) { |
44 toneLengthFrames) { | 44 // Make sure that the tone data is delayed by exactly the expected number |
45 // Make sure that the tone data is delayed by exactly the expected n
umber of frames. | 45 // of frames. |
46 var j = i - delayTimeFrames; | 46 let j = i - delayTimeFrames; |
47 if (renderedData[i] != sourceData[j]) { | 47 if (renderedData[i] != sourceData[j]) { |
48 should(renderedData[i], | 48 should(renderedData[i], 'Actual data at frame ' + i) |
49 "Actual data at frame " + i) | 49 .beEqualTo(sourceData[j]); |
50 .beEqualTo(sourceData[j]); | 50 success = false; |
51 success = false; | 51 break; |
52 break; | 52 } |
53 } | 53 } else { |
54 } else { | 54 // Make sure we have silence after the delayed tone. |
55 // Make sure we have silence after the delayed tone. | 55 if (renderedData[i] != 0) { |
56 if (renderedData[i] != 0) { | 56 should(renderedData[j], 'Final portion at frame ' + i).beEqualTo(0); |
57 should(renderedData[j], | 57 success = false; |
58 "Final portion at frame " + i) | 58 break; |
59 .beEqualTo(0); | 59 } |
60 success = false; | |
61 break; | |
62 } | |
63 } | |
64 } | 60 } |
| 61 } |
65 | 62 |
66 should(success, "Delaying test signal by " + delayTimeSeconds + " sec was do
ne") | 63 should( |
67 .message("correctly", "incorrectly") | 64 success, 'Delaying test signal by ' + delayTimeSeconds + ' sec was done') |
| 65 .message('correctly', 'incorrectly') |
68 } | 66 } |
OLD | NEW |