<!DOCTYPE HTML> <html> <head> <title>Test the offset property on AudioBufferSourceNode</title> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <script type="text/javascript" src="webaudio.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <pre id="test"> <script class="testbody" type="text/javascript"> var fuzz = 0.3; if (navigator.platform.startsWith("Mac")) { // bug 895720 fuzz = 0.6; } SimpleTest.waitForExplicitFinish(); addLoadEvent(function() { var samplesFromSource = 0; var context = new AudioContext(); var sp = context.createScriptProcessor(256); sp.onaudioprocess = function(e) { samplesFromSource += e.inputBuffer.length; } var buffer = context.createBuffer(1, context.sampleRate, context.sampleRate); for (var i = 0; i < context.sampleRate; ++i) { buffer.getChannelData(0)[i] = Math.sin(440 * 2 * Math.PI * i / context.sampleRate); } var source = context.createBufferSource(); source.onended = function(e) { // The timing at which the audioprocess and ended listeners are called can // change, hence the fuzzy equal here. var errorRatio = samplesFromSource / (0.5 * context.sampleRate); ok(errorRatio > (1.0 - fuzz) && errorRatio < (1.0 + fuzz), "Correct number of samples received (expected: " + (0.5 * context.sampleRate) + ", actual: " + samplesFromSource + ")."); SimpleTest.finish(); }; source.buffer = buffer; source.connect(sp); source.start(0, 0.5); }); </script> </pre> </body> </html>