test_audioBufferSourceNodeLoopStartEnd.html (1540B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title>Test AudioBufferSourceNode looping</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 var gTest = { 14 length: 2048 * 4, 15 numberOfChannels: 1, 16 createGraph(context) { 17 var buffer = context.createBuffer(1, 2048, context.sampleRate); 18 for (var i = 0; i < 2048; ++i) { 19 buffer.getChannelData(0)[i] = Math.sin(440 * 2 * Math.PI * i / context.sampleRate); 20 } 21 22 var source = new AudioBufferSourceNode(context, {buffer, loop: true, loopStart: buffer.duration * 0.25, loopEnd: buffer.duration * 0.75 }); 23 source.start(0); 24 return source; 25 }, 26 createExpectedBuffers(context) { 27 var expectedBuffer = context.createBuffer(1, 2048 * 4, context.sampleRate); 28 for (var i = 0; i < 1536; ++i) { 29 expectedBuffer.getChannelData(0)[i] = Math.sin(440 * 2 * Math.PI * i / context.sampleRate); 30 } 31 for (var i = 0; i < 6; ++i) { 32 for (var j = 512; j < 1536; ++j) { 33 expectedBuffer.getChannelData(0)[1536 + i * 1024 + j - 512] = Math.sin(440 * 2 * Math.PI * j / context.sampleRate); 34 } 35 } 36 for (var j = 7680; j < 2048 * 4; ++j) { 37 expectedBuffer.getChannelData(0)[j] = Math.sin(440 * 2 * Math.PI * (j - 7168) / context.sampleRate); 38 } 39 return expectedBuffer; 40 }, 41 }; 42 43 runTest(); 44 45 </script> 46 </pre> 47 </body> 48 </html>