test_pannerNode_maxDistance.html (1357B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test PannerNode outputs silence when the distance is greater than maxDist</title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <script 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 // BUF_SIZE must be greater than HRTF delay. 14 const BUF_SIZE = 1024; 15 const sampleRate = 44100; 16 var types = [ 17 "equalpower", 18 "HRTF" 19 ] 20 21 async function test(panningModel) { 22 var ac = new OfflineAudioContext(1, 1024, sampleRate); 23 var osc = ac.createOscillator(); 24 var panner = new PannerNode(ac, { 25 panningModel, 26 distanceModel: "linear", 27 maxDistance: 100, 28 positionY: 200, 29 }); 30 31 ac.listener.setPosition(0, 0, 0); 32 33 osc.connect(panner); 34 panner.connect(ac.destination); 35 36 osc.start(); 37 38 const buffer = await ac.startRendering() 39 40 var silence = true; 41 var array = buffer.getChannelData(0); 42 for (var i = 0; i < buffer.length; i++) { 43 if (array[i] != 0) { 44 ok(false, "Found noise in the buffer."); 45 silence = false; 46 } 47 } 48 ok(silence, "The buffer is silent."); 49 } 50 51 add_task(async function() { 52 await promiseHRTFReady(sampleRate); 53 for (const panningModel of types) { 54 await test(panningModel); 55 } 56 }); 57 58 </script> 59 </pre> 60 </body> 61 </html>