tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_periodicWaveDisableNormalization.html (3204B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test PeriodicWave disableNormalization Parameter</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script type="text/javascript" src="webaudio.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      8 </head>
      9 <body>
     10 <pre id="test">
     11 <script class="testbody" type="text/javascript">
     12 
     13 SimpleTest.waitForExplicitFinish();
     14 
     15 // We create PerodicWave instances containing two tones and compare it to
     16 // buffers created directly in JavaScript by adding the two waves together.
     17 // Two of the PeriodicWaves are normalized, the other is not. This test is
     18 // a modification of test_periodicWave.html.
     19 //
     20 // These constants are borrowed from test_periodicWave.html and modified
     21 // so that the realPeak (which is the normalization factor) will be small
     22 // enough that the errors are within the bounds for the test.
     23 const realMax = 99;
     24 var real = new Float32Array(realMax + 1);
     25 real[1] = 2.0; // fundamental
     26 real[realMax] = 0.25;
     27 
     28 const realPeak = real[1] + real[realMax];
     29 const realFundamental = 19.0;
     30 
     31 const testLength = 4096;
     32 
     33 addLoadEvent(function() {
     34  runTest();
     35 });
     36 
     37 var gTest = {
     38  createGraph(context) {
     39    var merger = context.createChannelMerger();
     40 
     41    var osc0 = context.createOscillator();
     42    var osc1 = context.createOscillator();
     43    var osc2 = context.createOscillator();
     44 
     45    osc0.setPeriodicWave(context.
     46                         createPeriodicWave(real,
     47                                            new Float32Array(real.length),
     48                                            {disableNormalization: false}));
     49    osc1.setPeriodicWave(context.
     50                         createPeriodicWave(real,
     51                                            new Float32Array(real.length)));
     52    osc2.setPeriodicWave(context.
     53                         createPeriodicWave(real,
     54                                            new Float32Array(real.length),
     55                                            {disableNormalization: true}));
     56 
     57    osc0.frequency.value = realFundamental;
     58    osc1.frequency.value = realFundamental;
     59    osc2.frequency.value = realFundamental;
     60 
     61    osc0.start();
     62    osc1.start();
     63    osc2.start();
     64 
     65    osc0.connect(merger, 0, 0);
     66    osc1.connect(merger, 0, 1);
     67    osc2.connect(merger, 0, 2);
     68 
     69    return merger;
     70  },
     71  createExpectedBuffers(context) {
     72    var buffer = context.createBuffer(3, testLength, context.sampleRate);
     73 
     74    for (var i = 0; i < buffer.length; ++i) {
     75 
     76      buffer.getChannelData(0)[i] = 1.0 / realPeak *
     77        (real[1] * Math.cos(2 * Math.PI * realFundamental * i /
     78                            context.sampleRate) +
     79         real[realMax] * Math.cos(2 * Math.PI * realMax * realFundamental * i /
     80                            context.sampleRate));
     81 
     82      buffer.getChannelData(1)[i] = buffer.getChannelData(0)[i];
     83 
     84      buffer.getChannelData(2)[i] =
     85        (real[1] * Math.cos(2 * Math.PI * realFundamental * i /
     86                            context.sampleRate) +
     87         real[realMax] * Math.cos(2 * Math.PI * realMax * realFundamental * i /
     88                            context.sampleRate));
     89    }
     90    return buffer;
     91  },
     92  'numberOfChannels': 3,
     93 };
     94 
     95 </script>
     96 </pre>
     97 </body>
     98 </html>