@vessel-dsp/runtime 0.6.3 → 0.12.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 +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/reference-runtime.d.ts +93 -0
- package/dist/reference-runtime.d.ts.map +1 -1
- package/dist/reference-runtime.js +307 -13
- package/dist/reference-runtime.js.map +1 -1
- package/dist/wasm/v2_dsp.wasm +0 -0
- package/dist/worklet/v2-audio-worklet.js +184 -2
- package/package.json +64 -64
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, 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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,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, 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,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"}
|
|
@@ -175,6 +175,99 @@ export declare function trackPitchFundamental(window: Float64Array, sampleRate:
|
|
|
175
175
|
* population maximum is a coincidence rather than a bound.
|
|
176
176
|
*/
|
|
177
177
|
export declare const DEFAULT_NEWTON_MAX_ITERATIONS = 1024;
|
|
178
|
+
/**
|
|
179
|
+
* An optocoupler LDR table evaluated at one LED current, in ohms before clamping
|
|
180
|
+
* details: log-log linear interpolation between the bracketing points, the end
|
|
181
|
+
* segment's log-log slope continued outside, current <= 0 taking `maxOhms`,
|
|
182
|
+
* then clamped to `[minOhms, maxOhms]`.
|
|
183
|
+
*
|
|
184
|
+
* Pure so the compiler tests and the console-parity instruments can call it
|
|
185
|
+
* directly. The stamp path below validates before calling; a malformed table
|
|
186
|
+
* never reaches here from a compiled program.
|
|
187
|
+
*/
|
|
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: `baseSeconds *
|
|
231
|
+
* slowdown^depth01`, where depth01 is the held suppression depth normalized
|
|
232
|
+
* to [0, 1]. Fast near the top (base rate: session-3 immediacy), minutes-slow
|
|
233
|
+
* from deep suppression. Pure so the curve is unit-testable; the production
|
|
234
|
+
* slowdown is a fit hook for the hot-start + 60 s take, which does not exist
|
|
235
|
+
* yet -- see the law docs.
|
|
236
|
+
*/
|
|
237
|
+
export declare function dbxVcaReleaseTc(depth01: number, baseSeconds: number, slowdown: number): number;
|
|
238
|
+
/**
|
|
239
|
+
* Silence priming target, 1 or 0: 1 when the rectified input sits below the
|
|
240
|
+
* presence floor (`primeRefCurrent`), else 0. The prime follower chases this
|
|
241
|
+
* with `primeRiseSeconds` upward (a gap builds prime over seconds) and
|
|
242
|
+
* `primeFallSeconds` downward (signal disarms in fractions of a second), so a
|
|
243
|
+
* post-gap transient edge pumps the shutdown while render onsets and
|
|
244
|
+
* continuous tones never do (priming starts at zero). Pure so the gate is
|
|
245
|
+
* unit-testable.
|
|
246
|
+
*/
|
|
247
|
+
export declare function dbxVcaPrimeTarget(inputAmps: number, refCurrentAmps: number): number;
|
|
248
|
+
/**
|
|
249
|
+
* Post-gap gulp target in volts: `shutdownGain * max(0, peakTarget -
|
|
250
|
+
* edgeThreshVolts)^2 * primed01`, where `peakTarget` is the instantaneous
|
|
251
|
+
* log-domain target. After a silence gap the prime is high, so a hot peak
|
|
252
|
+
* dumps a recharge gulp (D6 conducting hard into the depleted C8); under
|
|
253
|
+
* continuous signal the prime is zero and the gulp is zero, and render
|
|
254
|
+
* onsets never pump (priming starts at zero). The square is the D6 diode
|
|
255
|
+
* exponential over the operating range; the absolute threshold is the diode
|
|
256
|
+
* forward drop plus topped-C8 headroom, which is why sine ripple never
|
|
257
|
+
* pumps. Pure so the fit is unit-testable.
|
|
258
|
+
*/
|
|
259
|
+
export declare function dbxVcaShutdownTarget(peakTargetVolts: number, edgeThreshVolts: number, primed01: number, gainPerVolt: number): number;
|
|
260
|
+
/**
|
|
261
|
+
* Victim-dependent shutdown bleed time constant in seconds: `fastSeconds`
|
|
262
|
+
* once the prime has disarmed (`primed01` below 0.05, i.e. sustained signal
|
|
263
|
+
* present), `slowSeconds` while primed (R-only, frozen over takes but
|
|
264
|
+
* finite). The discharge path conducts only once signal has dislodged the
|
|
265
|
+
* prime; while a post-gap transient holds the prime the crush holds with it,
|
|
266
|
+
* then clears in a fraction of a second under the probe tone. Pure so the
|
|
267
|
+
* curve is unit-testable.
|
|
268
|
+
*/
|
|
269
|
+
export declare function dbxVcaVictimTc(primed01: number, fastSeconds: number, slowSeconds: number): number;
|
|
270
|
+
export declare function dbxVcaEnvelopeK(tcSeconds: number, sampleRate: number): number;
|
|
178
271
|
/**
|
|
179
272
|
* A delay-tap read length, pure over its inputs (board-p3 row 4). Factored
|
|
180
273
|
* 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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"}
|
|
@@ -300,6 +300,169 @@ function reverbCombGain(delaySeconds, decaySeconds) {
|
|
|
300
300
|
* population maximum is a coincidence rather than a bound.
|
|
301
301
|
*/
|
|
302
302
|
export const DEFAULT_NEWTON_MAX_ITERATIONS = 1024;
|
|
303
|
+
/**
|
|
304
|
+
* An optocoupler LDR table evaluated at one LED current, in ohms before clamping
|
|
305
|
+
* details: log-log linear interpolation between the bracketing points, the end
|
|
306
|
+
* segment's log-log slope continued outside, current <= 0 taking `maxOhms`,
|
|
307
|
+
* then clamped to `[minOhms, maxOhms]`.
|
|
308
|
+
*
|
|
309
|
+
* Pure so the compiler tests and the console-parity instruments can call it
|
|
310
|
+
* directly. The stamp path below validates before calling; a malformed table
|
|
311
|
+
* never reaches here from a compiled program.
|
|
312
|
+
*/
|
|
313
|
+
export function ldrTableResistanceOhms(currentsAmps, ohms, currentAmps, minOhms, maxOhms) {
|
|
314
|
+
if (!(currentAmps > 0)) {
|
|
315
|
+
return maxOhms;
|
|
316
|
+
}
|
|
317
|
+
const n = currentsAmps.length;
|
|
318
|
+
let lo = 0;
|
|
319
|
+
let hi = 1;
|
|
320
|
+
if (currentAmps <= currentsAmps[0]) {
|
|
321
|
+
lo = 0;
|
|
322
|
+
hi = 1;
|
|
323
|
+
}
|
|
324
|
+
else if (currentAmps >= currentsAmps[n - 1]) {
|
|
325
|
+
lo = n - 2;
|
|
326
|
+
hi = n - 1;
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
for (let i = 0; i < n - 1; i++) {
|
|
330
|
+
if (currentAmps >= currentsAmps[i] &&
|
|
331
|
+
currentAmps <= currentsAmps[i + 1]) {
|
|
332
|
+
lo = i;
|
|
333
|
+
hi = i + 1;
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
const iA = currentsAmps[lo];
|
|
339
|
+
const iB = currentsAmps[hi];
|
|
340
|
+
const rA = ohms[lo];
|
|
341
|
+
const rB = ohms[hi];
|
|
342
|
+
const lnI = Math.log(currentAmps);
|
|
343
|
+
const lnI0 = Math.log(iA);
|
|
344
|
+
const lnI1 = Math.log(iB);
|
|
345
|
+
const lnR0 = Math.log(rA);
|
|
346
|
+
const lnR1 = Math.log(rB);
|
|
347
|
+
const slope = (lnR1 - lnR0) / (lnI1 - lnI0);
|
|
348
|
+
const raw = Math.exp(lnR0 + (lnI - lnI0) * slope);
|
|
349
|
+
return Math.min(Math.max(raw, minOhms), maxOhms);
|
|
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: `baseSeconds *
|
|
407
|
+
* slowdown^depth01`, where depth01 is the held suppression depth normalized
|
|
408
|
+
* to [0, 1]. Fast near the top (base rate: session-3 immediacy), minutes-slow
|
|
409
|
+
* from deep suppression. Pure so the curve is unit-testable; the production
|
|
410
|
+
* slowdown is a fit hook for the hot-start + 60 s take, which does not exist
|
|
411
|
+
* yet -- see the law docs.
|
|
412
|
+
*/
|
|
413
|
+
export function dbxVcaReleaseTc(depth01, baseSeconds, slowdown) {
|
|
414
|
+
const depth = Math.min(1, Math.max(0, depth01));
|
|
415
|
+
return baseSeconds * Math.pow(slowdown, depth);
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Silence priming target, 1 or 0: 1 when the rectified input sits below the
|
|
419
|
+
* presence floor (`primeRefCurrent`), else 0. The prime follower chases this
|
|
420
|
+
* with `primeRiseSeconds` upward (a gap builds prime over seconds) and
|
|
421
|
+
* `primeFallSeconds` downward (signal disarms in fractions of a second), so a
|
|
422
|
+
* post-gap transient edge pumps the shutdown while render onsets and
|
|
423
|
+
* continuous tones never do (priming starts at zero). Pure so the gate is
|
|
424
|
+
* unit-testable.
|
|
425
|
+
*/
|
|
426
|
+
export function dbxVcaPrimeTarget(inputAmps, refCurrentAmps) {
|
|
427
|
+
return Math.abs(inputAmps) > refCurrentAmps ? 0 : 1;
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Post-gap gulp target in volts: `shutdownGain * max(0, peakTarget -
|
|
431
|
+
* edgeThreshVolts)^2 * primed01`, where `peakTarget` is the instantaneous
|
|
432
|
+
* log-domain target. After a silence gap the prime is high, so a hot peak
|
|
433
|
+
* dumps a recharge gulp (D6 conducting hard into the depleted C8); under
|
|
434
|
+
* continuous signal the prime is zero and the gulp is zero, and render
|
|
435
|
+
* onsets never pump (priming starts at zero). The square is the D6 diode
|
|
436
|
+
* exponential over the operating range; the absolute threshold is the diode
|
|
437
|
+
* forward drop plus topped-C8 headroom, which is why sine ripple never
|
|
438
|
+
* pumps. Pure so the fit is unit-testable.
|
|
439
|
+
*/
|
|
440
|
+
export function dbxVcaShutdownTarget(peakTargetVolts, edgeThreshVolts, primed01, gainPerVolt) {
|
|
441
|
+
const excess = peakTargetVolts - edgeThreshVolts;
|
|
442
|
+
if (!(excess > 0) || !(primed01 > 0))
|
|
443
|
+
return 0;
|
|
444
|
+
const primed = Math.min(1, primed01);
|
|
445
|
+
return gainPerVolt * excess * excess * primed;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Victim-dependent shutdown bleed time constant in seconds: `fastSeconds`
|
|
449
|
+
* once the prime has disarmed (`primed01` below 0.05, i.e. sustained signal
|
|
450
|
+
* present), `slowSeconds` while primed (R-only, frozen over takes but
|
|
451
|
+
* finite). The discharge path conducts only once signal has dislodged the
|
|
452
|
+
* prime; while a post-gap transient holds the prime the crush holds with it,
|
|
453
|
+
* then clears in a fraction of a second under the probe tone. Pure so the
|
|
454
|
+
* curve is unit-testable.
|
|
455
|
+
*/
|
|
456
|
+
export function dbxVcaVictimTc(primed01, fastSeconds, slowSeconds) {
|
|
457
|
+
const primed = Math.min(1, Math.max(0, primed01));
|
|
458
|
+
return primed > 0.05 ? slowSeconds : fastSeconds;
|
|
459
|
+
}
|
|
460
|
+
export function dbxVcaEnvelopeK(tcSeconds, sampleRate) {
|
|
461
|
+
const denom = tcSeconds * sampleRate;
|
|
462
|
+
if (!(denom > 0))
|
|
463
|
+
return 1;
|
|
464
|
+
return 1 - Math.exp(-1 / denom);
|
|
465
|
+
}
|
|
303
466
|
/**
|
|
304
467
|
* The budget a block falls back to for the length of a probation, once one of its samples has
|
|
305
468
|
* shown that more iterations could not help that sample.
|
|
@@ -902,6 +1065,9 @@ const IMPLEMENTED_OPERATORS = {
|
|
|
902
1065
|
comparator: true,
|
|
903
1066
|
// Linear-control VCA cell. Reads the control node, draws nothing.
|
|
904
1067
|
"linear-vca": true,
|
|
1068
|
+
// dbx-style VCA cell (uPC1252H2). Bounded sigmoidal gain in the
|
|
1069
|
+
// control voltage. Reads the control node, draws nothing.
|
|
1070
|
+
"dbx-vca": true,
|
|
905
1071
|
};
|
|
906
1072
|
/**
|
|
907
1073
|
* Which of a program's declared operators this runtime cannot execute.
|
|
@@ -5441,7 +5607,7 @@ export class ReferenceRuntime {
|
|
|
5441
5607
|
stampConductance(matrix, stamp.ledAnode, stamp.ledCathode, ledConductance);
|
|
5442
5608
|
rhs[stamp.ledAnode] = (rhs[stamp.ledAnode] ?? 0) - ledEquivalent;
|
|
5443
5609
|
rhs[stamp.ledCathode] = (rhs[stamp.ledCathode] ?? 0) + ledEquivalent;
|
|
5444
|
-
// LDR resistance from input LED current, by one of
|
|
5610
|
+
// LDR resistance from input LED current, by one of three laws.
|
|
5445
5611
|
//
|
|
5446
5612
|
// **The default is the generic exponential**, `ldrMinOhms + (ldrMaxOhms-ldrMinOhms)
|
|
5447
5613
|
// * exp(-alpha*amps)` with a module-wide `alpha = 1000` -- every part that shares
|
|
@@ -5449,20 +5615,28 @@ export class ReferenceRuntime {
|
|
|
5449
5615
|
// NSL50461, the source-labeled `OPTO` vactrol) still gets exactly this, bit-identical,
|
|
5450
5616
|
// because none of them carries a cited current-resistance curve to fit against.
|
|
5451
5617
|
//
|
|
5452
|
-
// **A part with
|
|
5453
|
-
//
|
|
5454
|
-
//
|
|
5455
|
-
//
|
|
5456
|
-
//
|
|
5457
|
-
//
|
|
5458
|
-
//
|
|
5459
|
-
//
|
|
5460
|
-
//
|
|
5461
|
-
//
|
|
5462
|
-
//
|
|
5618
|
+
// **A part with a power-law fit gets `ohms = coefficient * amps^exponent`.**
|
|
5619
|
+
// No production entry carries one today (both measured cells moved to
|
|
5620
|
+
// tables); the path stays for programs that do, clamped to
|
|
5621
|
+
// `[ldrMinOhms, ldrMaxOhms]` so a dark or saturated LED still floors/ceils
|
|
5622
|
+
// sanely -- `Math.pow` of a zero or negative current under a negative
|
|
5623
|
+
// exponent returns `Infinity`, not `NaN`, so the ceiling clamp is what
|
|
5624
|
+
// stops it, not a branch on zero.
|
|
5625
|
+
//
|
|
5626
|
+
// **A part with a measured table gets log-log interpolation instead, and the
|
|
5627
|
+
// table wins over the power-law pair when an entry carries both.** The table is
|
|
5628
|
+
// the general fix for a cell whose log-log curve bends: no fit range has to be
|
|
5629
|
+
// picked per pedal. See `ldrTableResistanceOhms` for the evaluation contract.
|
|
5463
5630
|
const alpha = 1000.0; // Coupling sensitivity A^-1, generic-bucket parts only
|
|
5464
5631
|
let rLdr;
|
|
5465
|
-
if (stamp.
|
|
5632
|
+
if (stamp.ldrTableCurrentAmps !== undefined &&
|
|
5633
|
+
stamp.ldrTableOhms !== undefined &&
|
|
5634
|
+
stamp.ldrTableCurrentAmps.length ===
|
|
5635
|
+
stamp.ldrTableOhms.length &&
|
|
5636
|
+
stamp.ldrTableCurrentAmps.length >= 2) {
|
|
5637
|
+
rLdr = ldrTableResistanceOhms(stamp.ldrTableCurrentAmps, stamp.ldrTableOhms, ledCurrent, stamp.ldrMinOhms, stamp.ldrMaxOhms);
|
|
5638
|
+
}
|
|
5639
|
+
else if (stamp.ldrPowerLawCoefficientOhms !== undefined &&
|
|
5466
5640
|
stamp.ldrPowerLawExponent !== undefined) {
|
|
5467
5641
|
const powerLawCurrent = Math.max(ledCurrent, 0);
|
|
5468
5642
|
const raw = stamp.ldrPowerLawCoefficientOhms *
|
|
@@ -6781,6 +6955,126 @@ export class ReferenceRuntime {
|
|
|
6781
6955
|
}
|
|
6782
6956
|
break;
|
|
6783
6957
|
}
|
|
6958
|
+
case "dbx-vca": {
|
|
6959
|
+
// dbx-style VCA gain cell (uPC1252H2): the output current is
|
|
6960
|
+
// the input current times an exponential dB-linear gain over
|
|
6961
|
+
// the smoothed SUSTAIN-coupled rest plus the smoothed
|
|
6962
|
+
// log-domain envelope plus the victim-dependent shutdown,
|
|
6963
|
+
// evaluated per Newton iterate with all four followers held.
|
|
6964
|
+
//
|
|
6965
|
+
// Slot 0 smooths the GC control itself (SUSTAIN moves and
|
|
6966
|
+
// audio rejection: the pedal's GC node carries tens of
|
|
6967
|
+
// millivolts of audio, and reading it raw pumps the gain at
|
|
6968
|
+
// audio rate). The rest term and the SUSTAIN-tracked knee
|
|
6969
|
+
// both read the held control. Slot 1 smooths the rectified
|
|
6970
|
+
// log-domain input (the knee makes sus-min flat while
|
|
6971
|
+
// centre and sus-max engage progressively). The release TC
|
|
6972
|
+
// varies with suppression depth (fast near top, minutes-slow
|
|
6973
|
+
// from deep suppression); attack stays fast.
|
|
6974
|
+
//
|
|
6975
|
+
// Slot 2 is the silence prime (1 in silence, 0 under signal;
|
|
6976
|
+
// slow to rise, fast to fall). Slot 3 is the shutdown: a
|
|
6977
|
+
// fast peak-holder pumped only by post-gap transient edges
|
|
6978
|
+
// (the envelope has decayed, so the first post-gap peak dumps
|
|
6979
|
+
// a recharge gulp) and bled victim-dependently (fast under
|
|
6980
|
+
// sustained signal, frozen in silence). Render onsets and
|
|
6981
|
+
// continuous tones never pump (priming starts at zero), so
|
|
6982
|
+
// the v4 threshold fit is structurally untouched. With
|
|
6983
|
+
// everything held there is no live control derivative (the
|
|
6984
|
+
// control row carries no stamp).
|
|
6985
|
+
const dbxBaseIdx = stamp.stateIndex;
|
|
6986
|
+
const ctrlKey = `${block.id}_dbxc_${dbxBaseIdx}`;
|
|
6987
|
+
if (this.elapsedSamples !==
|
|
6988
|
+
(this.lastShiftedSample.get(ctrlKey) ?? -1)) {
|
|
6989
|
+
this.lastShiftedSample.set(ctrlKey, this.elapsedSamples);
|
|
6990
|
+
const vCtrlNow = solution[stamp.control] ?? 0.0;
|
|
6991
|
+
const ctrlPrev = state[dbxBaseIdx] ?? 0.0;
|
|
6992
|
+
const ctrlTc = vCtrlNow > ctrlPrev ? stamp.attackSeconds : stamp.releaseSeconds;
|
|
6993
|
+
const ctrlK = dbxVcaEnvelopeK(ctrlTc, this.sampleRate);
|
|
6994
|
+
state[dbxBaseIdx] = ctrlPrev + (vCtrlNow - ctrlPrev) * ctrlK;
|
|
6995
|
+
}
|
|
6996
|
+
const vCtrlHeld = state[dbxBaseIdx] ?? 0.0;
|
|
6997
|
+
const restHeld = dbxVcaRestTerms(vCtrlHeld, stamp.sustainGain, stamp.sustainRef);
|
|
6998
|
+
const kneeHeld = dbxVcaKneeVolts(vCtrlHeld, stamp.kneeBaseVolts, stamp.kneeTrack);
|
|
6999
|
+
const vInInstDbx = (solution[stamp.plus] ?? 0.0) - (solution[stamp.minus] ?? 0.0);
|
|
7000
|
+
const iInInstDbx = vInInstDbx * stamp.inputSiemens;
|
|
7001
|
+
const primeKey = `${block.id}_dbxp_${dbxBaseIdx}`;
|
|
7002
|
+
if (this.elapsedSamples !==
|
|
7003
|
+
(this.lastShiftedSample.get(primeKey) ?? -1)) {
|
|
7004
|
+
this.lastShiftedSample.set(primeKey, this.elapsedSamples);
|
|
7005
|
+
const primeTarget = dbxVcaPrimeTarget(iInInstDbx, stamp.primeRefCurrent);
|
|
7006
|
+
const primePrev = state[dbxBaseIdx + 2] ?? 0.0;
|
|
7007
|
+
const primeTc = primeTarget > primePrev
|
|
7008
|
+
? stamp.primeRiseSeconds
|
|
7009
|
+
: stamp.primeFallSeconds;
|
|
7010
|
+
const primeK = dbxVcaEnvelopeK(primeTc, this.sampleRate);
|
|
7011
|
+
state[dbxBaseIdx + 2] = primePrev + (primeTarget - primePrev) * primeK;
|
|
7012
|
+
}
|
|
7013
|
+
const primeHeld = state[dbxBaseIdx + 2] ?? 0.0;
|
|
7014
|
+
const envKey = `${block.id}_dbxe_${dbxBaseIdx}`;
|
|
7015
|
+
if (this.elapsedSamples !==
|
|
7016
|
+
(this.lastShiftedSample.get(envKey) ?? -1)) {
|
|
7017
|
+
this.lastShiftedSample.set(envKey, this.elapsedSamples);
|
|
7018
|
+
const envTarget = dbxVcaEnvelopeTerms(iInInstDbx, stamp.envelopeSlope, kneeHeld);
|
|
7019
|
+
const envPrev = state[dbxBaseIdx + 1] ?? 0.0;
|
|
7020
|
+
const envDepth = Math.min(1, Math.max(0, envPrev / 0.15));
|
|
7021
|
+
const envTc = envTarget > envPrev
|
|
7022
|
+
? stamp.attackSeconds
|
|
7023
|
+
: dbxVcaReleaseTc(envDepth, stamp.releaseSeconds, stamp.releaseSlowdown);
|
|
7024
|
+
const envK = dbxVcaEnvelopeK(envTc, this.sampleRate);
|
|
7025
|
+
state[dbxBaseIdx + 1] = envPrev + (envTarget - envPrev) * envK;
|
|
7026
|
+
}
|
|
7027
|
+
const envHeld = state[dbxBaseIdx + 1] ?? 0.0;
|
|
7028
|
+
const shutKey = `${block.id}_dbxs_${dbxBaseIdx}`;
|
|
7029
|
+
if (this.elapsedSamples !==
|
|
7030
|
+
(this.lastShiftedSample.get(shutKey) ?? -1)) {
|
|
7031
|
+
this.lastShiftedSample.set(shutKey, this.elapsedSamples);
|
|
7032
|
+
const peakTarget = dbxVcaEnvelopeTerms(iInInstDbx, stamp.envelopeSlope, kneeHeld);
|
|
7033
|
+
const shutTarget = dbxVcaShutdownTarget(peakTarget, stamp.shutdownEdgeVolts, primeHeld, stamp.shutdownGain);
|
|
7034
|
+
const shutPrev = state[dbxBaseIdx + 3] ?? 0.0;
|
|
7035
|
+
const shutTc = shutTarget > shutPrev
|
|
7036
|
+
? stamp.shutdownAttackSeconds
|
|
7037
|
+
: dbxVcaVictimTc(primeHeld, stamp.shutdownFastSeconds, stamp.shutdownSlowSeconds);
|
|
7038
|
+
const shutK = dbxVcaEnvelopeK(shutTc, this.sampleRate);
|
|
7039
|
+
state[dbxBaseIdx + 3] = shutPrev + (shutTarget - shutPrev) * shutK;
|
|
7040
|
+
}
|
|
7041
|
+
const shutHeld = state[dbxBaseIdx + 3] ?? 0.0;
|
|
7042
|
+
const termsHeld = restHeld + envHeld;
|
|
7043
|
+
// Same closed form as `dbxVcaGainDb`: rest plus envelope terms
|
|
7044
|
+
// through 5.9 mV/dB, clamped to the datasheet range. At a clamp rail
|
|
7045
|
+
// the rail decides the gain (derivative zero); the terms are
|
|
7046
|
+
// held anyway, so the control row carries no stamp. The shutdown
|
|
7047
|
+
// rides OUTSIDE the linear clamp: a post-gap transient crushes
|
|
7048
|
+
// toward mute (session 1/2 pips annihilated at -57 dB, session 8
|
|
7049
|
+
// at -67 dB absolute), past any linear Av range, so it adds its
|
|
7050
|
+
// dB after the clamp with only a -100 dB mute floor for safety.
|
|
7051
|
+
const rawDb = -termsHeld / 0.0059;
|
|
7052
|
+
const gainDb = Math.min(stamp.maxGainDb, Math.max(stamp.minGainDb, rawDb));
|
|
7053
|
+
const totalDb = Math.max(-100, gainDb - shutHeld / 0.0059);
|
|
7054
|
+
const gain = dbxVcaGainLinear(totalDb);
|
|
7055
|
+
const vPlus = solution[stamp.plus] ?? 0.0;
|
|
7056
|
+
const vMinus = solution[stamp.minus] ?? 0.0;
|
|
7057
|
+
const vIn = vPlus - vMinus;
|
|
7058
|
+
const iIn = vIn * stamp.inputSiemens;
|
|
7059
|
+
const iOut = iIn * gain;
|
|
7060
|
+
const gIn = gain * stamp.inputSiemens;
|
|
7061
|
+
// Leaving-positive KCL (see the diode): the stamp's physical
|
|
7062
|
+
// current ENTERS the output node, so every term below is
|
|
7063
|
+
// negated once.
|
|
7064
|
+
const leaving = -iOut;
|
|
7065
|
+
const equivalent = leaving - (-gIn * vPlus + gIn * vMinus);
|
|
7066
|
+
if (stamp.output !== 0) {
|
|
7067
|
+
if (stamp.plus !== 0) {
|
|
7068
|
+
matrix[stamp.output][stamp.plus] += -gIn;
|
|
7069
|
+
}
|
|
7070
|
+
if (stamp.minus !== 0) {
|
|
7071
|
+
matrix[stamp.output][stamp.minus] += gIn;
|
|
7072
|
+
}
|
|
7073
|
+
rhs[stamp.output] =
|
|
7074
|
+
(rhs[stamp.output] ?? 0) - equivalent;
|
|
7075
|
+
}
|
|
7076
|
+
break;
|
|
7077
|
+
}
|
|
6784
7078
|
case "spring-reverb": {
|
|
6785
7079
|
// Two ports, both ordinary stamps; everything mechanical lives in the state
|
|
6786
7080
|
// advanced once per sample by `advanceSpringReverb`.
|