| <!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> |