| <!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, renderQuantumFrames(), 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> |