test_waveShaperGain.html (2028B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test that WaveShaperNode doesn't corrupt its inputs when the gain is != 6 1.0 (bug 1203616)</title> 7 <script src="/tests/SimpleTest/SimpleTest.js"></script> 8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 9 </head> 10 <body> 11 <pre> 12 </pre> 13 <script class="testbody" type="text/javascript"> 14 SimpleTest.waitForExplicitFinish(); 15 var samplerate = 44100; 16 var context = new OfflineAudioContext(1, 44100, samplerate); 17 18 var dc = context.createBufferSource(); 19 20 var buffer = context.createBuffer(1, 1, samplerate); 21 buffer.getChannelData(0)[0] = 1.0; 22 dc.buffer = buffer; 23 24 var gain = context.createGain(); 25 var ws2 = context.createWaveShaper(); 26 var ws = []; 27 28 // No-op waveshaper curves. 29 for (var i = 0; i < 2; i++) { 30 ws[i] = context.createWaveShaper(); 31 var curve = new Float32Array(2); 32 curve[0] = -1.0; 33 curve[1] = 1.0; 34 ws[i].curve = curve; 35 ws[i].connect(context.destination); 36 gain.connect(ws[i]); 37 } 38 39 dc.connect(gain); 40 dc.start(); 41 42 gain.gain.value = 0.5; 43 44 context.startRendering().then(buffer => { 45 document.querySelector("pre").innerHTML = buffer.getChannelData(0)[0]; 46 ok(buffer.getChannelData(0)[0] == 1.0, "Volume was handled properly"); 47 48 context = new OfflineAudioContext(1, 100, samplerate); 49 var oscillator = context.createOscillator(); 50 var gain = context.createGain(); 51 var waveShaper = context.createWaveShaper(); 52 53 oscillator.start(0); 54 oscillator.connect(gain); 55 56 // to silence 57 gain.gain.value = 0; 58 gain.connect(waveShaper); 59 60 // convert all signal into 1.0. The non unity values are to detect the use 61 // of uninitialized buffers (see Bug 1283910). 62 waveShaper.curve = new Float32Array([ 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5 ]); 63 waveShaper.connect(context.destination); 64 65 context.startRendering().then((buffer) => { 66 var result = buffer.getChannelData(0); 67 ok(result.every(x => x === 1), "WaveShaper handles zero gain properly"); 68 SimpleTest.finish(); 69 }); 70 }); 71 </script> 72 </body>