|
1 <!DOCTYPE html> |
|
2 |
|
3 <html> |
|
4 <head> |
|
5 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
6 <script type="text/javascript" src="webaudio.js"></script> |
|
7 <script type="text/javascript" src="layouttest-glue.js"></script> |
|
8 <script type="text/javascript" src="blink/audio-testing.js"></script> |
|
9 <script type="text/javascript" src="blink/convolution-testing.js"></script> |
|
10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> |
|
11 </head> |
|
12 |
|
13 <body> |
|
14 |
|
15 <div id="description"></div> |
|
16 <div id="console"></div> |
|
17 |
|
18 <script> |
|
19 description("Tests ConvolverNode processing a mono channel with mono impulse response."); |
|
20 SimpleTest.waitForExplicitFinish(); |
|
21 |
|
22 // To test the convolver, we convolve two square pulses together to |
|
23 // produce a triangular pulse. To verify the result is correct we |
|
24 // check several parts of the result. First, we make sure the initial |
|
25 // part of the result is zero (due to the latency in the convolver). |
|
26 // Next, the triangular pulse should match the theoretical result to |
|
27 // within some roundoff. After the triangular pulse, the result |
|
28 // should be exactly zero, but round-off prevents that. We make sure |
|
29 // the part after the pulse is sufficiently close to zero. Finally, |
|
30 // the result should be exactly zero because the inputs are exactly |
|
31 // zero. |
|
32 function runTest() { |
|
33 if (window.testRunner) { |
|
34 testRunner.dumpAsText(); |
|
35 testRunner.waitUntilDone(); |
|
36 } |
|
37 |
|
38 window.jsTestIsAsync = true; |
|
39 |
|
40 // Create offline audio context. |
|
41 var context = new OfflineAudioContext(2, sampleRate * renderLengthSeconds, sampleRate); |
|
42 |
|
43 var squarePulse = createSquarePulseBuffer(context, pulseLengthFrames); |
|
44 var trianglePulse = createTrianglePulseBuffer(context, 2 * pulseLengthFrames); |
|
45 |
|
46 var bufferSource = context.createBufferSource(); |
|
47 bufferSource.buffer = squarePulse; |
|
48 |
|
49 var convolver = context.createConvolver(); |
|
50 convolver.normalize = false; |
|
51 convolver.buffer = squarePulse; |
|
52 |
|
53 bufferSource.connect(convolver); |
|
54 convolver.connect(context.destination); |
|
55 |
|
56 bufferSource.start(0); |
|
57 |
|
58 context.oncomplete = checkConvolvedResult(trianglePulse); |
|
59 context.startRendering(); |
|
60 } |
|
61 |
|
62 function finishJSTest() { |
|
63 SimpleTest.finish(); |
|
64 } |
|
65 |
|
66 runTest(); |
|
67 successfullyParsed = true; |
|
68 |
|
69 </script> |
|
70 |
|
71 <script src="../fast/js/resources/js-test-post.js"></script> |
|
72 </body> |
|
73 </html> |