<!DOCTYPE HTML> <html> <head> <title>Test WaveShaperNode with no curve</title> <script 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 gTest = { length: 4096, numberOfChannels: 1, createGraph(context) { var source = context.createBufferSource(); source.buffer = this.buffer; var shaper = new WaveShaperNode(context); shaper.curve = this.curve; source.connect(shaper); source.start(0); return shaper; }, createExpectedBuffers(context) { this.buffer = context.createBuffer(1, 4096, context.sampleRate); for (var i = 1; i < 4095; ++i) { this.buffer.getChannelData(0)[i] = 2 * (i / 4096) - 1; } // Two out of range values this.buffer.getChannelData(0)[0] = -2; this.buffer.getChannelData(0)[4095] = 2; this.curve = new Float32Array(2048); for (var i = 0; i < 2048; ++i) { this.curve[i] = Math.sin(100 * Math.PI * (i + 1) / context.sampleRate); } var expectedBuffer = context.createBuffer(1, 4096, context.sampleRate); for (var i = 1; i < 4095; ++i) { var input = this.buffer.getChannelData(0)[i]; var index = Math.floor(this.curve.length * (input + 1) / 2); index = Math.max(0, Math.min(this.curve.length - 1, index)); expectedBuffer.getChannelData(0)[i] = this.curve[index]; } expectedBuffer.getChannelData(0)[0] = this.curve[0]; expectedBuffer.getChannelData(0)[4095] = this.curve[2047]; return expectedBuffer; }, }; runTest(); </script> </pre> </body> </html>