61 lines
2 KiB
HTML
61 lines
2 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<title>Test DelayNode Delay</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="/webaudio/resources/audit-util.js"></script>
|
|
<script src="/webaudio/resources/audit.js"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<script>
|
|
let audit = Audit.createTaskRunner();
|
|
|
|
audit.define(
|
|
{label: 'test0', description: 'Test delay of 3 frames'},
|
|
async (task, should) => {
|
|
// Only need a few outputs samples. The sample rate is arbitrary.
|
|
const context =
|
|
new OfflineAudioContext(1, RENDER_QUANTUM_FRAMES, 8192);
|
|
let src;
|
|
let delay;
|
|
|
|
should(
|
|
() => {
|
|
src = new ConstantSourceNode(context);
|
|
delay = new DelayNode(context);
|
|
},
|
|
'Creating ConstantSourceNode(context) and DelayNode(context)')
|
|
.notThrow();
|
|
|
|
// The number of frames to delay for the DelayNode. Should be a
|
|
// whole number, but is otherwise arbitrary.
|
|
const delayFrames = 3;
|
|
|
|
should(() => {
|
|
delay.delayTime.value = delayFrames / context.sampleRate;
|
|
}, `Setting delayTime to ${delayFrames} frames`).notThrow();
|
|
|
|
src.connect(delay).connect(context.destination);
|
|
|
|
src.start();
|
|
|
|
let buffer = await context.startRendering();
|
|
let output = buffer.getChannelData(0);
|
|
|
|
// Verify output was delayed the correct number of frames.
|
|
should(output.slice(0, delayFrames), `output[0:${delayFrames - 1}]`)
|
|
.beConstantValueOf(0);
|
|
should(
|
|
output.slice(delayFrames),
|
|
`output[${delayFrames}:${output.length - 1}]`)
|
|
.beConstantValueOf(1);
|
|
|
|
task.done();
|
|
});
|
|
|
|
audit.run();
|
|
</script>
|
|
</body>
|
|
</html>
|