test-pannernode-automation.html (1242B)
1 <!doctype html> 2 <meta charset=utf-8> 3 <title></title> 4 <script src=/resources/testharness.js></script> 5 <script src=/resources/testharnessreport.js></script> 6 <script> 7 8 // This value is purposefuly not aligned on a 128-block boundary so that we test 9 // that the PannerNode position audioparam is a-rate. 10 const POSITION_CHANGE_FRAME = 1111; 11 12 promise_test(function(t) { 13 var ac = new OfflineAudioContext(2, 2048, 44100); 14 var panner = ac.createPanner(); 15 panner.positionX.value = -1; 16 panner.positionY.value = -1; 17 panner.positionZ.value = 1; 18 panner.positionX.setValueAtTime(1, POSITION_CHANGE_FRAME/ac.sampleRate); 19 var osc = ac.createOscillator(); 20 osc.connect(panner); 21 panner.connect(ac.destination); 22 osc.start() 23 return ac.startRendering().then(function(buffer) { 24 var left = buffer.getChannelData(0); 25 var right = buffer.getChannelData(1); 26 for (var i = 0; i < 2048; ++i) { 27 if (i < POSITION_CHANGE_FRAME) { 28 assert_true(Math.abs(left[i]) >= Math.abs(right[i]), "index " + i + " should be on the left"); 29 } else { 30 assert_true(Math.abs(left[i]) < Math.abs(right[i]), "index " + i + " should be on the right"); 31 } 32 } 33 }); 34 }, "PannerNode AudioParam automation works properly"); 35 36 </script>