From e837c516c5eb3815e838df1707ff05a99d740261 Mon Sep 17 00:00:00 2001 From: "Jade (Rose) Rowland" Date: Sat, 10 Jan 2026 01:37:14 -0500 Subject: [PATCH] merge main --- packages/superdough/superdough.mjs | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/packages/superdough/superdough.mjs b/packages/superdough/superdough.mjs index c47939275..2fe80d441 100644 --- a/packages/superdough/superdough.mjs +++ b/packages/superdough/superdough.mjs @@ -10,17 +10,7 @@ import './vowel.mjs'; import { clamp, nanFallback, _mod, cycleToSeconds, pickAndRename } from './util.mjs'; import workletsUrl from './worklets.mjs?audioworklet'; import { getNodeFromPool, isPoolable, releaseNodeToPool } from './nodePools.mjs'; -import { - createFilter, - effectSend, - gainNode, - getCompressor, - getDistortion, - getLfo, - getWorklet, - releaseAudioNode, - webAudioTimeout, -} from './helpers.mjs'; +import { createFilter, effectSend, gainNode, getCompressor, getDistortion, getLfo, getWorklet } from './helpers.mjs'; import { map } from 'nanostores'; import { logger } from './logger.mjs'; import { connectLFO, connectEnvelope, connectBusModulator } from './modulators.mjs'; @@ -429,7 +419,7 @@ class Chain { return this; } releaseNodes() { - this.audioNodes.forEach((n) => releaseAudioNode(n)); + this.audioNodes.forEach((n) => (isPoolable(n) ? releaseNodeToPool(n) : n?.disconnect())); this.audioNodes = []; this.tails = []; } @@ -548,7 +538,6 @@ export const superdough = async (value, t, hapDuration, cps = 0.5, cycle = 0.5) const { onTrigger } = getSound(s); const onEnded = () => { chain.releaseNodes(); - audioNodes.forEach((n) => (isPoolable(n) ? releaseNodeToPool(n) : n?.disconnect())); activeSoundSources.delete(chainID); }; // We have to use onEnded because some sources (e.g. `sampler`) have