OLD | NEW |
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
| 4 <title> |
| 5 panner-loop.html |
| 6 </title> |
4 <script src="../../resources/testharness.js"></script> | 7 <script src="../../resources/testharness.js"></script> |
5 <script src="../../resources/testharnessreport.js"></script> | 8 <script src="../../resources/testharnessreport.js"></script> |
6 <script src="../resources/audit-util.js"></script> | 9 <script src="../resources/audit-util.js"></script> |
7 <script src="../resources/audit.js"></script> | 10 <script src="../resources/audit.js"></script> |
8 <script src="../resources/panner-model-testing.js"></script> | 11 <script src="../resources/panner-model-testing.js"></script> |
9 </head> | 12 </head> |
10 | |
11 <body> | 13 <body> |
12 <script> | 14 <script id="layout-test-code"> |
13 let audit = Audit.createTaskRunner(); | 15 let audit = Audit.createTaskRunner(); |
14 | 16 |
15 // See crbug.com/331446. | 17 // See crbug.com/331446. |
16 | 18 |
17 // Create a simple feedback loop and make sure the panner node processes i
t correctly. | 19 // Create a simple feedback loop and make sure the panner node processes |
| 20 // it correctly. |
18 | 21 |
19 audit.define( | 22 audit.define( |
20 {label: 'test', description: 'PannerNode handling of feedback loops'}, | 23 {label: 'test', description: 'PannerNode handling of feedback loops'}, |
21 (task, should) => { | 24 (task, should) => { |
22 | 25 |
23 var sampleRate = 44100; | 26 let sampleRate = 44100; |
24 var renderLengthSeconds = 1; | 27 let renderLengthSeconds = 1; |
25 | 28 |
26 // Create offline audio context. | 29 // Create offline audio context. |
27 var context = new OfflineAudioContext( | 30 let context = new OfflineAudioContext( |
28 2, sampleRate * renderLengthSeconds, sampleRate); | 31 2, sampleRate * renderLengthSeconds, sampleRate); |
29 | 32 |
30 // Create nodes in graph. This is based on the test given in | 33 // Create nodes in graph. This is based on the test given in |
31 // crbug.com/331446. | 34 // crbug.com/331446. |
32 var source = context.createBufferSource(); | 35 let source = context.createBufferSource(); |
33 source.buffer = | 36 source.buffer = |
34 createImpulseBuffer(context, sampleRate * renderLengthSeconds); | 37 createImpulseBuffer(context, sampleRate * renderLengthSeconds); |
35 var activateNode = context.createGain(); | 38 let activateNode = context.createGain(); |
36 var dry = context.createGain(); | 39 let dry = context.createGain(); |
37 var wet = context.createGain(); | 40 let wet = context.createGain(); |
38 var filter = context.createBiquadFilter(); | 41 let filter = context.createBiquadFilter(); |
39 var delay = context.createDelay(); | 42 let delay = context.createDelay(); |
40 var feedbackNode = context.createGain(); | 43 let feedbackNode = context.createGain(); |
41 var output = context.createGain(); | 44 let output = context.createGain(); |
42 | 45 |
43 delay.delayTime.value = 0.1; | 46 delay.delayTime.value = 0.1; |
44 wet.gain.value = 0.5; | 47 wet.gain.value = 0.5; |
45 dry.gain.value = 1; | 48 dry.gain.value = 1; |
46 feedbackNode.gain.value = 0.45; | 49 feedbackNode.gain.value = 0.45; |
47 filter.frequency.value = 20000; | 50 filter.frequency.value = 20000; |
48 | 51 |
49 source.connect(activateNode); | 52 source.connect(activateNode); |
50 activateNode.connect(delay); | 53 activateNode.connect(delay); |
51 activateNode.connect(dry); | 54 activateNode.connect(dry); |
52 delay.connect(filter); | 55 delay.connect(filter); |
53 filter.connect(feedbackNode); | 56 filter.connect(feedbackNode); |
54 feedbackNode.connect(delay); | 57 feedbackNode.connect(delay); |
55 feedbackNode.connect(wet); | 58 feedbackNode.connect(wet); |
56 wet.connect(output); | 59 wet.connect(output); |
57 dry.connect(output); | 60 dry.connect(output); |
58 | 61 |
59 var panner = context.createPanner(); | 62 let panner = context.createPanner(); |
60 panner.coneOuterGain = 0.1; | 63 panner.coneOuterGain = 0.1; |
61 panner.coneOuterAngle = 180; | 64 panner.coneOuterAngle = 180; |
62 panner.coneInnerAngle = 0; | 65 panner.coneInnerAngle = 0; |
63 | 66 |
64 panner.connect(context.destination); | 67 panner.connect(context.destination); |
65 | 68 |
66 output.connect(panner); | 69 output.connect(panner); |
67 | 70 |
68 // Render. We don't care what the output is, though. | 71 // Render. We don't care what the output is, though. |
69 | 72 |
70 should(context.startRendering(), 'Rendering of offline context') | 73 should(context.startRendering(), 'Rendering of offline context') |
71 .beResolved() | 74 .beResolved() |
72 .then(() => task.done()); | 75 .then(() => task.done()); |
73 }); | 76 }); |
74 | 77 |
75 audit.run(); | 78 audit.run(); |
76 </script> | 79 </script> |
77 | |
78 </body> | 80 </body> |
79 </html> | 81 </html> |
OLD | NEW |