@vessel-dsp/runtime 0.7.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { ChainRuntime } from "./chain";
2
2
  export { bypassNotModelledAdvisories, chainAdvisories, seamScale, type ChainAdvisory, } from "./chain-advisories";
3
3
  export { dacScaleFactor, outputConversionFullScale, outputDbfs } from "./chain-scale";
4
4
  export { processorSlot, programSlot, resolveBypassMode, slotContract, type ChainSlot, type ExternalProcessor, type SlotContract, type StageCoverage, } from "./chain-slot";
5
- export { DEFAULT_NEWTON_MAX_ITERATIONS, ldrTableResistanceOhms, ReferenceRuntime, RuntimeError, type RuntimeNodeVoltageSnapshot, } from "./reference-runtime";
5
+ export { dbxVcaGainDb, dbxVcaRestTerms, dbxVcaEnvelopeTerms, dbxVcaKneeVolts, dbxVcaReleaseTc, dbxVcaPrimeTarget, dbxVcaShutdownTarget, dbxVcaVictimTc, dbxVcaGainLinear, dbxVcaEnvelopeK, DEFAULT_NEWTON_MAX_ITERATIONS, ldrTableResistanceOhms, ReferenceRuntime, RuntimeError, type RuntimeNodeVoltageSnapshot, } from "./reference-runtime";
6
6
  export type { SupplyAddress, SupplyInfo } from "./supply";
7
7
  export { SETTLE_DEFAULTS, measureInputAttributable, measureSharedWindow, settledRender, settledSweepVerified, type SettleOptions, } from "./settle";
8
8
  export { supplyGroundConflicts, type SupplyGroundConflict } from "./supply-ground";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACN,2BAA2B,EAC3B,eAAe,EACf,SAAS,EACT,KAAK,aAAa,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACN,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,6BAA6B,EAC7B,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,KAAK,0BAA0B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EACN,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,KAAK,aAAa,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMpE,OAAO,EACN,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,aAAa,GAClB,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACN,2BAA2B,EAC3B,eAAe,EACf,SAAS,EACT,KAAK,aAAa,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACN,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,6BAA6B,EAC7B,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,EACZ,KAAK,0BAA0B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EACN,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,KAAK,aAAa,GAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMpE,OAAO,EACN,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,aAAa,GAClB,MAAM,+BAA+B,CAAC"}
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ export { ChainRuntime } from "./chain.js";
8
8
  export { bypassNotModelledAdvisories, chainAdvisories, seamScale, } from "./chain-advisories.js";
9
9
  export { dacScaleFactor, outputConversionFullScale, outputDbfs } from "./chain-scale.js";
10
10
  export { processorSlot, programSlot, resolveBypassMode, slotContract, } from "./chain-slot.js";
11
- export { DEFAULT_NEWTON_MAX_ITERATIONS, ldrTableResistanceOhms, ReferenceRuntime, RuntimeError, } from "./reference-runtime.js";
11
+ export { dbxVcaGainDb, dbxVcaRestTerms, dbxVcaEnvelopeTerms, dbxVcaKneeVolts, dbxVcaReleaseTc, dbxVcaPrimeTarget, dbxVcaShutdownTarget, dbxVcaVictimTc, dbxVcaGainLinear, dbxVcaEnvelopeK, DEFAULT_NEWTON_MAX_ITERATIONS, ldrTableResistanceOhms, ReferenceRuntime, RuntimeError, } from "./reference-runtime.js";
12
12
  export { SETTLE_DEFAULTS, measureInputAttributable, measureSharedWindow, settledRender, settledSweepVerified, } from "./settle.js";
13
13
  export { supplyGroundConflicts } from "./supply-ground.js";
14
14
  export { taperFraction } from "./taper.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,oFAAoF;AACpF,sFAAsF;AACtF,mFAAmF;AACnF,kDAAkD;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACN,2BAA2B,EAC3B,eAAe,EACf,SAAS,GAET,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACN,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,GAKZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,6BAA6B,EAC7B,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,GAEZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,GAEpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAA6B,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAErE,+EAA+E;AAC/E,kFAAkF;AAClF,8EAA8E;AAC9E,gFAAgF;AAChF,oEAAoE;AACpE,OAAO,EACN,oBAAoB,EACpB,sBAAsB,GAMtB,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,oFAAoF;AACpF,sFAAsF;AACtF,mFAAmF;AACnF,kDAAkD;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACN,2BAA2B,EAC3B,eAAe,EACf,SAAS,GAET,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EACN,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,YAAY,GAKZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,6BAA6B,EAC7B,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,GAEZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,GAEpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,qBAAqB,EAA6B,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAErE,+EAA+E;AAC/E,kFAAkF;AAClF,8EAA8E;AAC9E,gFAAgF;AAChF,oEAAoE;AACpE,OAAO,EACN,oBAAoB,EACpB,sBAAsB,GAMtB,MAAM,+BAA+B,CAAC"}
@@ -186,6 +186,93 @@ export declare const DEFAULT_NEWTON_MAX_ITERATIONS = 1024;
186
186
  * never reaches here from a compiled program.
187
187
  */
188
188
  export declare function ldrTableResistanceOhms(currentsAmps: readonly number[], ohms: readonly number[], currentAmps: number, minOhms: number, maxOhms: number): number;
189
+ /**
190
+ * A dbx-style VCA's control in dB: `-termsVolts / 0.0059`, clamped to
191
+ * `[minGainDb, maxGainDb]`.
192
+ *
193
+ * The 5.9 mV/dB divisor is the NEC uPC1252 feature line (and `boss-lm-2`'s
194
+ * control deck); the +-30 dB clamp is the datasheet's Av range. `termsVolts`
195
+ * is the smoothed SUSTAIN-coupled rest plus the smoothed log-domain
196
+ * envelope -- see `dbxVcaRestTerms` and `dbxVcaEnvelopeTerms`. Pure so the
197
+ * compiler tests and the console-parity instruments can call it directly.
198
+ * The stamp path below evaluates the same expression inline with the clamp
199
+ * test deciding the derivative.
200
+ */
201
+ export declare function dbxVcaGainDb(termsVolts: number, minGainDb: number, maxGainDb: number): number;
202
+ /** dB to linear voltage gain. Pure companion to `dbxVcaGainDb` above. */
203
+ export declare function dbxVcaGainLinear(gainDb: number): number;
204
+ /**
205
+ * The SUSTAIN-coupled rest term in volts: `sustainGain * (vControl -
206
+ * sustainRef)`. Session-fitted (inverted, amplified): rest gain rises with
207
+ * the GC node, opposite to a naive control-follows-detector reading, because
208
+ * that is what the session threshold curves demand (sus-min flat -13.2 dB,
209
+ * centre +5.68 dB, sus-max +14.28 dB at 10 mV in).
210
+ */
211
+ export declare function dbxVcaRestTerms(vControl: number, sustainGain: number, sustainRef: number): number;
212
+ /**
213
+ * The log-domain envelope term in volts: `max(0, slope * ln(|iIn| * 1e6) +
214
+ * kneeVolts)`, with `iIn` in amps (the 1e6 keeps the log argument
215
+ * dimensionless against a 1 uA reference). Below the knee the pedal holds
216
+ * rest gain; above it each input decade adds the same dB of reduction; the
217
+ * knee tracks SUSTAIN (see the law docs). `Math.log(0)` is -Infinity and
218
+ * `Math.max(0, -Infinity)` is 0, so silence reads exactly zero -- but an
219
+ * explicit guard keeps that from depending on log-edge behavior.
220
+ */
221
+ export declare function dbxVcaEnvelopeTerms(inputAmps: number, slopeVoltsPerNeper: number, kneeVolts: number): number;
222
+ /**
223
+ * The detector knee in volts at one GC voltage: a SUSTAIN-tracked threshold
224
+ * (`kneeBaseVolts` at 4.65 V rising `kneeTrack` volts per GC volt), so
225
+ * sus-min stays flat to 300 mV while centre and sus-max engage progressively.
226
+ * Pure so the threshold shape is unit-testable.
227
+ */
228
+ export declare function dbxVcaKneeVolts(vControl: number, kneeBaseVolts: number, kneeTrack: number): number;
229
+ /**
230
+ * Depth-varying release time constant in seconds: `min(maxSeconds,
231
+ * baseSeconds * slowdown^(depth01^shape))`, where depth01 is the held
232
+ * suppression depth normalized to [0, 1]. Fast near the top (base rate:
233
+ * session-3 immediacy), minutes-slow from deep suppression. The shape
234
+ * exponent bends the mid-depth curve down (shape 8: ~52 ms at half depth
235
+ * instead of 2.45 s) with both curve endpoints pinned; the H1 base-attack
236
+ * ceiling caps the deep release at `maxSeconds` (default unbounded, law
237
+ * fits 1.0 s) so pegged in-stream depths recover across dips -- surgical
238
+ * to depths above ~0.89, where no fitted bar operates. Pure so the curve
239
+ * is unit-testable; the production slowdown is a fit hook for the
240
+ * hot-start + 60 s take, which does not exist yet -- see the law docs.
241
+ */
242
+ export declare function dbxVcaReleaseTc(depth01: number, baseSeconds: number, slowdown: number, shape?: number, maxSeconds?: number): number;
243
+ /**
244
+ * Silence priming target, 1 or 0: 1 when the rectified input sits below the
245
+ * presence floor (`primeRefCurrent`), else 0. The prime follower chases this
246
+ * with `primeRiseSeconds` upward (a gap builds prime over seconds) and
247
+ * `primeFallSeconds` downward (signal disarms in fractions of a second), so a
248
+ * post-gap transient edge pumps the shutdown while render onsets and
249
+ * continuous tones never do (priming starts at zero). Pure so the gate is
250
+ * unit-testable.
251
+ */
252
+ export declare function dbxVcaPrimeTarget(inputAmps: number, refCurrentAmps: number): number;
253
+ /**
254
+ * Post-gap gulp target in volts: `shutdownGain * max(0, peakTarget -
255
+ * edgeThreshVolts)^2 * primed01`, where `peakTarget` is the instantaneous
256
+ * log-domain target. After a silence gap the prime is high, so a hot peak
257
+ * dumps a recharge gulp (D6 conducting hard into the depleted C8); under
258
+ * continuous signal the prime is zero and the gulp is zero, and render
259
+ * onsets never pump (priming starts at zero). The square is the D6 diode
260
+ * exponential over the operating range; the absolute threshold is the diode
261
+ * forward drop plus topped-C8 headroom, which is why sine ripple never
262
+ * pumps. Pure so the fit is unit-testable.
263
+ */
264
+ export declare function dbxVcaShutdownTarget(peakTargetVolts: number, edgeThreshVolts: number, primed01: number, gainPerVolt: number): number;
265
+ /**
266
+ * Victim-dependent shutdown bleed time constant in seconds: `fastSeconds`
267
+ * once the prime has disarmed (`primed01` below 0.05, i.e. sustained signal
268
+ * present), `slowSeconds` while primed (R-only, frozen over takes but
269
+ * finite). The discharge path conducts only once signal has dislodged the
270
+ * prime; while a post-gap transient holds the prime the crush holds with it,
271
+ * then clears in a fraction of a second under the probe tone. Pure so the
272
+ * curve is unit-testable.
273
+ */
274
+ export declare function dbxVcaVictimTc(primed01: number, fastSeconds: number, slowSeconds: number): number;
275
+ export declare function dbxVcaEnvelopeK(tcSeconds: number, sampleRate: number): number;
189
276
  /**
190
277
  * A delay-tap read length, pure over its inputs (board-p3 row 4). Factored
191
278
  * out of the interpreter so every mode is unit-testable without a program:
@@ -1 +1 @@
1
- {"version":3,"file":"reference-runtime.d.ts","sourceRoot":"","sources":["../src/reference-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference-runtime.d.ts","sourceRoot":"","sources":["../src/reference-runtime.ts"],"names":[],"mappings":"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"}
@@ -348,6 +348,126 @@ export function ldrTableResistanceOhms(currentsAmps, ohms, currentAmps, minOhms,
348
348
  const raw = Math.exp(lnR0 + (lnI - lnI0) * slope);
349
349
  return Math.min(Math.max(raw, minOhms), maxOhms);
350
350
  }
351
+ /**
352
+ * A dbx-style VCA's control in dB: `-termsVolts / 0.0059`, clamped to
353
+ * `[minGainDb, maxGainDb]`.
354
+ *
355
+ * The 5.9 mV/dB divisor is the NEC uPC1252 feature line (and `boss-lm-2`'s
356
+ * control deck); the +-30 dB clamp is the datasheet's Av range. `termsVolts`
357
+ * is the smoothed SUSTAIN-coupled rest plus the smoothed log-domain
358
+ * envelope -- see `dbxVcaRestTerms` and `dbxVcaEnvelopeTerms`. Pure so the
359
+ * compiler tests and the console-parity instruments can call it directly.
360
+ * The stamp path below evaluates the same expression inline with the clamp
361
+ * test deciding the derivative.
362
+ */
363
+ export function dbxVcaGainDb(termsVolts, minGainDb, maxGainDb) {
364
+ const raw = -termsVolts / 0.0059;
365
+ return Math.min(maxGainDb, Math.max(minGainDb, raw));
366
+ }
367
+ /** dB to linear voltage gain. Pure companion to `dbxVcaGainDb` above. */
368
+ export function dbxVcaGainLinear(gainDb) {
369
+ return Math.pow(10, gainDb / 20);
370
+ }
371
+ /**
372
+ * The SUSTAIN-coupled rest term in volts: `sustainGain * (vControl -
373
+ * sustainRef)`. Session-fitted (inverted, amplified): rest gain rises with
374
+ * the GC node, opposite to a naive control-follows-detector reading, because
375
+ * that is what the session threshold curves demand (sus-min flat -13.2 dB,
376
+ * centre +5.68 dB, sus-max +14.28 dB at 10 mV in).
377
+ */
378
+ export function dbxVcaRestTerms(vControl, sustainGain, sustainRef) {
379
+ return sustainGain * (vControl - sustainRef);
380
+ }
381
+ /**
382
+ * The log-domain envelope term in volts: `max(0, slope * ln(|iIn| * 1e6) +
383
+ * kneeVolts)`, with `iIn` in amps (the 1e6 keeps the log argument
384
+ * dimensionless against a 1 uA reference). Below the knee the pedal holds
385
+ * rest gain; above it each input decade adds the same dB of reduction; the
386
+ * knee tracks SUSTAIN (see the law docs). `Math.log(0)` is -Infinity and
387
+ * `Math.max(0, -Infinity)` is 0, so silence reads exactly zero -- but an
388
+ * explicit guard keeps that from depending on log-edge behavior.
389
+ */
390
+ export function dbxVcaEnvelopeTerms(inputAmps, slopeVoltsPerNeper, kneeVolts) {
391
+ const absIn = Math.abs(inputAmps);
392
+ if (!(absIn > 0))
393
+ return 0;
394
+ return Math.max(0, slopeVoltsPerNeper * Math.log(absIn * 1e6) + kneeVolts);
395
+ }
396
+ /**
397
+ * The detector knee in volts at one GC voltage: a SUSTAIN-tracked threshold
398
+ * (`kneeBaseVolts` at 4.65 V rising `kneeTrack` volts per GC volt), so
399
+ * sus-min stays flat to 300 mV while centre and sus-max engage progressively.
400
+ * Pure so the threshold shape is unit-testable.
401
+ */
402
+ export function dbxVcaKneeVolts(vControl, kneeBaseVolts, kneeTrack) {
403
+ return kneeBaseVolts + kneeTrack * (vControl - 4.65);
404
+ }
405
+ /**
406
+ * Depth-varying release time constant in seconds: `min(maxSeconds,
407
+ * baseSeconds * slowdown^(depth01^shape))`, where depth01 is the held
408
+ * suppression depth normalized to [0, 1]. Fast near the top (base rate:
409
+ * session-3 immediacy), minutes-slow from deep suppression. The shape
410
+ * exponent bends the mid-depth curve down (shape 8: ~52 ms at half depth
411
+ * instead of 2.45 s) with both curve endpoints pinned; the H1 base-attack
412
+ * ceiling caps the deep release at `maxSeconds` (default unbounded, law
413
+ * fits 1.0 s) so pegged in-stream depths recover across dips -- surgical
414
+ * to depths above ~0.89, where no fitted bar operates. Pure so the curve
415
+ * is unit-testable; the production slowdown is a fit hook for the
416
+ * hot-start + 60 s take, which does not exist yet -- see the law docs.
417
+ */
418
+ export function dbxVcaReleaseTc(depth01, baseSeconds, slowdown, shape = 1, maxSeconds = Number.POSITIVE_INFINITY) {
419
+ const depth = Math.min(1, Math.max(0, depth01));
420
+ return Math.min(maxSeconds, baseSeconds * Math.pow(slowdown, Math.pow(depth, shape)));
421
+ }
422
+ /**
423
+ * Silence priming target, 1 or 0: 1 when the rectified input sits below the
424
+ * presence floor (`primeRefCurrent`), else 0. The prime follower chases this
425
+ * with `primeRiseSeconds` upward (a gap builds prime over seconds) and
426
+ * `primeFallSeconds` downward (signal disarms in fractions of a second), so a
427
+ * post-gap transient edge pumps the shutdown while render onsets and
428
+ * continuous tones never do (priming starts at zero). Pure so the gate is
429
+ * unit-testable.
430
+ */
431
+ export function dbxVcaPrimeTarget(inputAmps, refCurrentAmps) {
432
+ return Math.abs(inputAmps) > refCurrentAmps ? 0 : 1;
433
+ }
434
+ /**
435
+ * Post-gap gulp target in volts: `shutdownGain * max(0, peakTarget -
436
+ * edgeThreshVolts)^2 * primed01`, where `peakTarget` is the instantaneous
437
+ * log-domain target. After a silence gap the prime is high, so a hot peak
438
+ * dumps a recharge gulp (D6 conducting hard into the depleted C8); under
439
+ * continuous signal the prime is zero and the gulp is zero, and render
440
+ * onsets never pump (priming starts at zero). The square is the D6 diode
441
+ * exponential over the operating range; the absolute threshold is the diode
442
+ * forward drop plus topped-C8 headroom, which is why sine ripple never
443
+ * pumps. Pure so the fit is unit-testable.
444
+ */
445
+ export function dbxVcaShutdownTarget(peakTargetVolts, edgeThreshVolts, primed01, gainPerVolt) {
446
+ const excess = peakTargetVolts - edgeThreshVolts;
447
+ if (!(excess > 0) || !(primed01 > 0))
448
+ return 0;
449
+ const primed = Math.min(1, primed01);
450
+ return gainPerVolt * excess * excess * primed;
451
+ }
452
+ /**
453
+ * Victim-dependent shutdown bleed time constant in seconds: `fastSeconds`
454
+ * once the prime has disarmed (`primed01` below 0.05, i.e. sustained signal
455
+ * present), `slowSeconds` while primed (R-only, frozen over takes but
456
+ * finite). The discharge path conducts only once signal has dislodged the
457
+ * prime; while a post-gap transient holds the prime the crush holds with it,
458
+ * then clears in a fraction of a second under the probe tone. Pure so the
459
+ * curve is unit-testable.
460
+ */
461
+ export function dbxVcaVictimTc(primed01, fastSeconds, slowSeconds) {
462
+ const primed = Math.min(1, Math.max(0, primed01));
463
+ return primed > 0.05 ? slowSeconds : fastSeconds;
464
+ }
465
+ export function dbxVcaEnvelopeK(tcSeconds, sampleRate) {
466
+ const denom = tcSeconds * sampleRate;
467
+ if (!(denom > 0))
468
+ return 1;
469
+ return 1 - Math.exp(-1 / denom);
470
+ }
351
471
  /**
352
472
  * The budget a block falls back to for the length of a probation, once one of its samples has
353
473
  * shown that more iterations could not help that sample.
@@ -950,6 +1070,9 @@ const IMPLEMENTED_OPERATORS = {
950
1070
  comparator: true,
951
1071
  // Linear-control VCA cell. Reads the control node, draws nothing.
952
1072
  "linear-vca": true,
1073
+ // dbx-style VCA cell (uPC1252H2). Bounded sigmoidal gain in the
1074
+ // control voltage. Reads the control node, draws nothing.
1075
+ "dbx-vca": true,
953
1076
  };
954
1077
  /**
955
1078
  * Which of a program's declared operators this runtime cannot execute.
@@ -6837,6 +6960,126 @@ export class ReferenceRuntime {
6837
6960
  }
6838
6961
  break;
6839
6962
  }
6963
+ case "dbx-vca": {
6964
+ // dbx-style VCA gain cell (uPC1252H2): the output current is
6965
+ // the input current times an exponential dB-linear gain over
6966
+ // the smoothed SUSTAIN-coupled rest plus the smoothed
6967
+ // log-domain envelope plus the victim-dependent shutdown,
6968
+ // evaluated per Newton iterate with all four followers held.
6969
+ //
6970
+ // Slot 0 smooths the GC control itself (SUSTAIN moves and
6971
+ // audio rejection: the pedal's GC node carries tens of
6972
+ // millivolts of audio, and reading it raw pumps the gain at
6973
+ // audio rate). The rest term and the SUSTAIN-tracked knee
6974
+ // both read the held control. Slot 1 smooths the rectified
6975
+ // log-domain input (the knee makes sus-min flat while
6976
+ // centre and sus-max engage progressively). The release TC
6977
+ // varies with suppression depth (fast near top, minutes-slow
6978
+ // from deep suppression); attack stays fast.
6979
+ //
6980
+ // Slot 2 is the silence prime (1 in silence, 0 under signal;
6981
+ // slow to rise, fast to fall). Slot 3 is the shutdown: a
6982
+ // fast peak-holder pumped only by post-gap transient edges
6983
+ // (the envelope has decayed, so the first post-gap peak dumps
6984
+ // a recharge gulp) and bled victim-dependently (fast under
6985
+ // sustained signal, frozen in silence). Render onsets and
6986
+ // continuous tones never pump (priming starts at zero), so
6987
+ // the v4 threshold fit is structurally untouched. With
6988
+ // everything held there is no live control derivative (the
6989
+ // control row carries no stamp).
6990
+ const dbxBaseIdx = stamp.stateIndex;
6991
+ const ctrlKey = `${block.id}_dbxc_${dbxBaseIdx}`;
6992
+ if (this.elapsedSamples !==
6993
+ (this.lastShiftedSample.get(ctrlKey) ?? -1)) {
6994
+ this.lastShiftedSample.set(ctrlKey, this.elapsedSamples);
6995
+ const vCtrlNow = solution[stamp.control] ?? 0.0;
6996
+ const ctrlPrev = state[dbxBaseIdx] ?? 0.0;
6997
+ const ctrlTc = vCtrlNow > ctrlPrev ? stamp.attackSeconds : stamp.releaseSeconds;
6998
+ const ctrlK = dbxVcaEnvelopeK(ctrlTc, this.sampleRate);
6999
+ state[dbxBaseIdx] = ctrlPrev + (vCtrlNow - ctrlPrev) * ctrlK;
7000
+ }
7001
+ const vCtrlHeld = state[dbxBaseIdx] ?? 0.0;
7002
+ const restHeld = dbxVcaRestTerms(vCtrlHeld, stamp.sustainGain, stamp.sustainRef);
7003
+ const kneeHeld = dbxVcaKneeVolts(vCtrlHeld, stamp.kneeBaseVolts, stamp.kneeTrack);
7004
+ const vInInstDbx = (solution[stamp.plus] ?? 0.0) - (solution[stamp.minus] ?? 0.0);
7005
+ const iInInstDbx = vInInstDbx * stamp.inputSiemens;
7006
+ const primeKey = `${block.id}_dbxp_${dbxBaseIdx}`;
7007
+ if (this.elapsedSamples !==
7008
+ (this.lastShiftedSample.get(primeKey) ?? -1)) {
7009
+ this.lastShiftedSample.set(primeKey, this.elapsedSamples);
7010
+ const primeTarget = dbxVcaPrimeTarget(iInInstDbx, stamp.primeRefCurrent);
7011
+ const primePrev = state[dbxBaseIdx + 2] ?? 0.0;
7012
+ const primeTc = primeTarget > primePrev
7013
+ ? stamp.primeRiseSeconds
7014
+ : stamp.primeFallSeconds;
7015
+ const primeK = dbxVcaEnvelopeK(primeTc, this.sampleRate);
7016
+ state[dbxBaseIdx + 2] = primePrev + (primeTarget - primePrev) * primeK;
7017
+ }
7018
+ const primeHeld = state[dbxBaseIdx + 2] ?? 0.0;
7019
+ const envKey = `${block.id}_dbxe_${dbxBaseIdx}`;
7020
+ if (this.elapsedSamples !==
7021
+ (this.lastShiftedSample.get(envKey) ?? -1)) {
7022
+ this.lastShiftedSample.set(envKey, this.elapsedSamples);
7023
+ const envTarget = dbxVcaEnvelopeTerms(iInInstDbx, stamp.envelopeSlope, kneeHeld);
7024
+ const envPrev = state[dbxBaseIdx + 1] ?? 0.0;
7025
+ const envDepth = Math.min(1, Math.max(0, envPrev / 0.15));
7026
+ const envTc = envTarget > envPrev
7027
+ ? stamp.attackSeconds
7028
+ : dbxVcaReleaseTc(envDepth, stamp.releaseSeconds, stamp.releaseSlowdown, stamp.releaseShape, stamp.releaseMaxSeconds);
7029
+ const envK = dbxVcaEnvelopeK(envTc, this.sampleRate);
7030
+ state[dbxBaseIdx + 1] = envPrev + (envTarget - envPrev) * envK;
7031
+ }
7032
+ const envHeld = state[dbxBaseIdx + 1] ?? 0.0;
7033
+ const shutKey = `${block.id}_dbxs_${dbxBaseIdx}`;
7034
+ if (this.elapsedSamples !==
7035
+ (this.lastShiftedSample.get(shutKey) ?? -1)) {
7036
+ this.lastShiftedSample.set(shutKey, this.elapsedSamples);
7037
+ const peakTarget = dbxVcaEnvelopeTerms(iInInstDbx, stamp.envelopeSlope, kneeHeld);
7038
+ const shutTarget = dbxVcaShutdownTarget(peakTarget, stamp.shutdownEdgeVolts, primeHeld, stamp.shutdownGain);
7039
+ const shutPrev = state[dbxBaseIdx + 3] ?? 0.0;
7040
+ const shutTc = shutTarget > shutPrev
7041
+ ? stamp.shutdownAttackSeconds
7042
+ : dbxVcaVictimTc(primeHeld, stamp.shutdownFastSeconds, stamp.shutdownSlowSeconds);
7043
+ const shutK = dbxVcaEnvelopeK(shutTc, this.sampleRate);
7044
+ state[dbxBaseIdx + 3] = shutPrev + (shutTarget - shutPrev) * shutK;
7045
+ }
7046
+ const shutHeld = state[dbxBaseIdx + 3] ?? 0.0;
7047
+ const termsHeld = restHeld + envHeld;
7048
+ // Same closed form as `dbxVcaGainDb`: rest plus envelope terms
7049
+ // through 5.9 mV/dB, clamped to the datasheet range. At a clamp rail
7050
+ // the rail decides the gain (derivative zero); the terms are
7051
+ // held anyway, so the control row carries no stamp. The shutdown
7052
+ // rides OUTSIDE the linear clamp: a post-gap transient crushes
7053
+ // toward mute (session 1/2 pips annihilated at -57 dB, session 8
7054
+ // at -67 dB absolute), past any linear Av range, so it adds its
7055
+ // dB after the clamp with only a -100 dB mute floor for safety.
7056
+ const rawDb = -termsHeld / 0.0059;
7057
+ const gainDb = Math.min(stamp.maxGainDb, Math.max(stamp.minGainDb, rawDb));
7058
+ const totalDb = Math.max(-100, gainDb - shutHeld / 0.0059);
7059
+ const gain = dbxVcaGainLinear(totalDb);
7060
+ const vPlus = solution[stamp.plus] ?? 0.0;
7061
+ const vMinus = solution[stamp.minus] ?? 0.0;
7062
+ const vIn = vPlus - vMinus;
7063
+ const iIn = vIn * stamp.inputSiemens;
7064
+ const iOut = iIn * gain;
7065
+ const gIn = gain * stamp.inputSiemens;
7066
+ // Leaving-positive KCL (see the diode): the stamp's physical
7067
+ // current ENTERS the output node, so every term below is
7068
+ // negated once.
7069
+ const leaving = -iOut;
7070
+ const equivalent = leaving - (-gIn * vPlus + gIn * vMinus);
7071
+ if (stamp.output !== 0) {
7072
+ if (stamp.plus !== 0) {
7073
+ matrix[stamp.output][stamp.plus] += -gIn;
7074
+ }
7075
+ if (stamp.minus !== 0) {
7076
+ matrix[stamp.output][stamp.minus] += gIn;
7077
+ }
7078
+ rhs[stamp.output] =
7079
+ (rhs[stamp.output] ?? 0) - equivalent;
7080
+ }
7081
+ break;
7082
+ }
6840
7083
  case "spring-reverb": {
6841
7084
  // Two ports, both ordinary stamps; everything mechanical lives in the state
6842
7085
  // advanced once per sample by `advanceSpringReverb`.