tor-browser

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

test_audioBufferSourceNodeRate.html (1917B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>Test AudioBufferSourceNode</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 var rate = 44100;
     16 var off = new OfflineAudioContext(1, rate, rate);
     17 var off2 = new OfflineAudioContext(1, rate, rate);
     18 
     19 var source = off.createBufferSource();
     20 var source2 = off2.createBufferSource();
     21 
     22 // a buffer of a 440Hz at half the length. If we detune by -1200 or set the
     23 // playbackRate to 0.5, we should get 44100 samples back with a sine at 220Hz.
     24 var buf = off.createBuffer(1, rate / 2, rate);
     25 var bufarray = buf.getChannelData(0);
     26 for (var i = 0; i < bufarray.length; i++) {
     27  bufarray[i] = Math.sin(i * 440 * 2 * Math.PI / rate);
     28 }
     29 
     30 source.buffer = buf;
     31 source.playbackRate.value = 0.25; // slowdown to 25% speed
     32 source.connect(off.destination);
     33 source.start(0);
     34 
     35 source2.buffer = buf;
     36 source2.detune.value = -2400; // two octaves -> slowdown to 25% speed
     37 source2.connect(off2.destination);
     38 source2.start(0);
     39 
     40 off.startRendering().then((renderedPlaybackRate) => {
     41  // we don't care about comparing the value here, we just want to know whether
     42  // the second part is noisy.
     43  var rmsValue = rms(renderedPlaybackRate, 0, 22050);
     44  ok(rmsValue != 0, "Resampling happened (rms of the second part " + rmsValue + ")");
     45 
     46  off2.startRendering().then((renderedDetune) => {
     47    var rmsValue = rms(renderedDetune, 0, 22050);
     48    ok(rmsValue != 0, "Resampling happened (rms of the second part " + rmsValue + ")");
     49    // The two buffers should be the same: detune of -2400 is a slowdown to 25% speed
     50    compareBuffers(renderedPlaybackRate, renderedDetune);
     51    SimpleTest.finish();
     52  });
     53 });
     54 
     55 </script>
     56 </pre>
     57 </body>
     58 </html>