test_convolverNodeWithGain.html (1682B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test ConvolverNode after a GainNode - Bug 891254 </title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 7 </head> 8 <body> 9 <pre id="test"> 10 <script src="webaudio.js" type="text/javascript"></script> 11 <script class="testbody" type="text/javascript"> 12 13 const signalLength = 2048; 14 const responseLength = 100; 15 const outputLength = 4096; // > signalLength + responseLength 16 17 var gTest = { 18 length: outputLength, 19 numberOfChannels: 1, 20 createGraph(context) { 21 var buffer = context.createBuffer(1, signalLength, context.sampleRate); 22 for (var i = 0; i < signalLength; ++i) { 23 buffer.getChannelData(0)[i] = Math.sin(2 * Math.PI * i / signalLength); 24 } 25 26 var source = context.createBufferSource(); 27 source.buffer = buffer; 28 source.start(0); 29 30 var response = context.createBuffer(1, responseLength, context.sampleRate); 31 for (var i = 0; i < responseLength; ++i) { 32 response.getChannelData(0)[i] = i / responseLength; 33 } 34 35 var gain = context.createGain(); 36 gain.gain.value = -1; 37 source.connect(gain); 38 39 var convolver1 = context.createConvolver(); 40 convolver1.buffer = response; 41 gain.connect(convolver1); 42 43 var convolver2 = context.createConvolver(); 44 convolver2.buffer = response; 45 source.connect(convolver2); 46 47 // The output of convolver1 should be the inverse of convolver2, so blend 48 // them together and expect silence. 49 var blend = context.createGain(); 50 convolver1.connect(blend); 51 convolver2.connect(blend); 52 53 return blend; 54 }, 55 }; 56 57 runTest(); 58 59 </script> 60 </pre> 61 </body> 62 </html>