Extend JamesDSP with convolution and spatial audio

This commit is contained in:
Jonathan Sykes
2026-10-10 19:25:06 +08:00
parent b3f0525a8e
commit ef12468a99
28 changed files with 540 additions and 143 deletions

View File

@@ -52,11 +52,11 @@ test('a rejected or unsupported engine leaves the Standard route active', async
assert.equal(f.controller.state().liveHeaps, 0);
assert.equal(f.errors.length, 1);
const wrongRate = fixture();
wrongRate.context.sampleRate = 32000;
await assert.rejects(wrongRate.controller.enable({ preset: 'flat' }), /44\.1 or 48 kHz/);
assert.equal(wrongRate.created.length, 0);
assert.equal(wrongRate.controller.state().liveHeaps, 0);
const supportedRate = fixture();
supportedRate.context.sampleRate = 32000;
await supportedRate.controller.enable({ preset: 'flat' });
assert.equal(supportedRate.controller.state().active, true);
assert.equal(supportedRate.controller.state().sampleRate, 32000);
});
test('a runtime worklet failure switches sources to Standard before destroying the heap', async () => {
@@ -101,9 +101,14 @@ test('A/B bypass is retained when settings are reapplied', async () => {
const f = fixture();
await f.controller.enable({ preset: 'warm' }, 0);
assert.equal(await f.controller.toggleBypass(), true);
assert.equal(f.controller.state().route, 'standard');
assert.deepEqual(f.routed.at(-1), [['video', 'audio'], f.standardInput], 'bypass follows the exact Standard route');
await f.controller.enable({ preset: 'bass' }, 0);
assert.equal(f.controller.state().bypassed, true);
assert.equal(f.controller.state().route, 'standard');
assert.deepEqual(f.routed.at(-1), [['video', 'audio'], f.standardInput], 'settings changes cannot replace the Standard route while bypassed');
assert.ok(f.bypass.at(-1));
assert.equal(await f.controller.toggleBypass(), false);
assert.equal(f.controller.state().route, 'jamesdsp');
assert.equal(f.bypass.at(-1), false);
});