| 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 |