blob: 96c2eb065866c3f42342e81c35fea50b75340939 [file] [log] [blame]
<!DOCTYPE html>
<html class="a">
<head>
<title>Feedback cycle with delay in audio node graph</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<script>
function doTest() {
var off = new OfflineAudioContext(1, 512, 48000);
var b = off.createBuffer(1, 1, 48000);
b.getChannelData(0)[0] = 1;
var impulse = new AudioBufferSourceNode(off, {buffer: b});
impulse.start(0);
var delay = new DelayNode(off, {delayTime: 128 / 48000});
var fb = new GainNode(off);
impulse.connect(fb).connect(delay).connect(fb).connect(off.destination);
var samples;
return off.startRendering().then((b) => {
return Promise.resolve(b.getChannelData(0));
});
}
promise_test(() => {
return doTest().then(samples => {
for (var i = 0; i < samples.length; i++) {
if ((i % 128) != 0) {
assert_equals(
samples[i], 0.0,
'Non-silent audio found in between delayed impulses');
} else {
assert_equals(
samples[i], 1.0,
'Silent audio found instead of a delayed impulse');
}
}
});
}, 'Test that a DelayNode allows a feedback loop of a single rendering quantum');
</script>
</body>
</html>