@vessel-dsp/runtime 0.4.0 → 0.5.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.
@@ -99,7 +99,8 @@ export declare class V2WasmEngine {
99
99
  * `newtonStartHistory` decisions: `seedsUsed` counts standard-pass solves that started
100
100
  * from an extrapolated solution (order > 0), `oneIterationSolves` those that converged in
101
101
  * exactly one iteration -- the saving itself, attributable on the shipping console.
102
- * Counted since `prepare()`/`reset()`. `predictorOrder(blockIdx)` reads the order the
102
+ * Counted since `prepare()`/`reset()`; both stay 0 at `oversample` 1, where the predictor
103
+ * does not run. `predictorOrder(blockIdx)` reads the order the
103
104
  * block's next solve will seed from (0 = previous solution, 1 = linear, 2 = quadratic;
104
105
  * -1 for a bad index), so a decision can be compared against the reference per sample.
105
106
  */
@@ -1 +1 @@
1
- {"version":3,"file":"v2-wasm-engine.d.ts","sourceRoot":"","sources":["../src/v2-wasm-engine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAK1D,wBAAsB,eAAe,iBAQpC;AAED,qBAAa,YAAY;IAExB,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,eAAe,CAA6B;IACpD;;;;;OAKG;IACH,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO;IAKP;;;;;OAKG;WAEiB,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAaxE,OAAO,IAAI,IAAI;IAOf,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAiBnC,OAAO,CACb,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GAChH,IAAI;IAmBP;;;;;OAKG;IACI,cAAc,IAAI,MAAM,GAAG,IAAI;IAKtC;;;;;OAKG;IACI,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAKlC,KAAK,IAAI,IAAI;IAIb,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQrD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAS5C;;;;;;OAMG;IACI,WAAW,IAAI,SAAS,UAAU,EAAE;IAmB3C;;;;;;;;;;;OAWG;IACI,SAAS,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IA+FvF,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpC,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAsB7D,qBAAqB,IAAI,MAAM;IAI/B,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,IAAI,MAAM;IAI1B,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIzD,YAAY,IAAI,MAAM;IAK7B;;;;;;;;;;;;;;OAcG;IACH;;;;;;;;OAQG;IACI,qBAAqB,IAAI;QAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,wGAAwG;QACxG,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;KACjC;IAQM,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI3C,oBAAoB,IAAI;QAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAC/B;CAUD"}
1
+ {"version":3,"file":"v2-wasm-engine.d.ts","sourceRoot":"","sources":["../src/v2-wasm-engine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAK1D,wBAAsB,eAAe,iBAQpC;AAED,qBAAa,YAAY;IAExB,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,eAAe,CAA6B;IACpD;;;;;OAKG;IACH,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO;IAKP;;;;;OAKG;WAEiB,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC;IAaxE,OAAO,IAAI,IAAI;IAOf,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAiBnC,OAAO,CACb,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GAChH,IAAI;IAmBP;;;;;OAKG;IACI,cAAc,IAAI,MAAM,GAAG,IAAI;IAKtC;;;;;OAKG;IACI,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAKlC,KAAK,IAAI,IAAI;IAIb,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQrD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAS5C;;;;;;OAMG;IACI,WAAW,IAAI,SAAS,UAAU,EAAE;IAmB3C;;;;;;;;;;;OAWG;IACI,SAAS,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IA+FvF,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpC,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IAsB7D,qBAAqB,IAAI,MAAM;IAI/B,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,IAAI,MAAM;IAI1B,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAI7D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIzD,YAAY,IAAI,MAAM;IAK7B;;;;;;;;;;;;;;OAcG;IACH;;;;;;;;;OASG;IACI,qBAAqB,IAAI;QAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,wGAAwG;QACxG,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;KACjC;IAQM,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI3C,oBAAoB,IAAI;QAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAC/B;CAUD"}
@@ -317,7 +317,8 @@ export class V2WasmEngine {
317
317
  * `newtonStartHistory` decisions: `seedsUsed` counts standard-pass solves that started
318
318
  * from an extrapolated solution (order > 0), `oneIterationSolves` those that converged in
319
319
  * exactly one iteration -- the saving itself, attributable on the shipping console.
320
- * Counted since `prepare()`/`reset()`. `predictorOrder(blockIdx)` reads the order the
320
+ * Counted since `prepare()`/`reset()`; both stay 0 at `oversample` 1, where the predictor
321
+ * does not run. `predictorOrder(blockIdx)` reads the order the
321
322
  * block's next solve will seed from (0 = previous solution, 1 = linear, 2 = quadratic;
322
323
  * -1 for a bad index), so a decision can be compared against the reference per sample.
323
324
  */
@@ -1 +1 @@
1
- {"version":3,"file":"v2-wasm-engine.js","sourceRoot":"","sources":["../src/v2-wasm-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v2-wasm-engine.js","sourceRoot":"","sources":["../src/v2-wasm-engine.ts"],"names":[],"mappings":"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"}
Binary file
@@ -1339,7 +1339,10 @@ var OPAMP_FOLD_STREAK = 6;
1339
1339
  function opAmpHalfSwing(railHigh, railLow) {
1340
1340
  return Math.max((railHigh - railLow) / 2, 1e-9);
1341
1341
  }
1342
- var OPAMP_GAIN_BANDWIDTH_HZ = 1e6;
1342
+ var OPAMP_DEFAULT_GAIN_BANDWIDTH_HZ = 1e6;
1343
+ function opAmpGainBandwidthHz(stamp) {
1344
+ return stamp.gainBandwidthHz ?? OPAMP_DEFAULT_GAIN_BANDWIDTH_HZ;
1345
+ }
1343
1346
  var OPAMP_POLE_BAND = 8;
1344
1347
  function boundOpAmpRaw(raw, halfSwing) {
1345
1348
  const limit = OPAMP_POLE_BAND * halfSwing;
@@ -1850,6 +1853,8 @@ var ReferenceRuntime = class {
1850
1853
  limiterTrace = typeof process !== "undefined" && process.env?.VESSEL_LIMITER_TRACE === "1";
1851
1854
  limitedIterationCount = 0;
1852
1855
  limitedIterationPerSample = [];
1856
+ /** Fold reseeds taken so far (diagnostic, read past `private` by the stall study's tracer). */
1857
+ foldReseedCount = 0;
1853
1858
  /** Series ohms of whatever drives the input jack -- see `prepare()`'s option. */
1854
1859
  inputSourceOhms = 0;
1855
1860
  /**
@@ -1942,6 +1947,19 @@ var ReferenceRuntime = class {
1942
1947
  * and the fold reseed (which reads the caller's `start`, the previous solution) are
1943
1948
  * untouched, so what converges is still the circuit's equations at the shipped
1944
1949
  * tolerances -- a different first iterate, the same fixed point.
1950
+ *
1951
+ * **It runs only when `prepare()` was given `oversample > 1`; at factor 1 (the default)
1952
+ * it neither seeds nor records, so the ring stays empty and the solve is the one runtime
1953
+ * 0.3.1 ran.** It shipped in 0.4.0 at every factor and was gated here in 0.4.1 because at
1954
+ * factor 1 it buys little and moves the output more than that saving is worth: iterations
1955
+ * fall 2.9 % across the pedal corpus and 10.1 % across the amps (1 kHz 0.1 V, cap 64),
1956
+ * against `boss-dm-2` moving 6.2 % of its cold-start peak (0.5-0.8 % of the settled peak)
1957
+ * and `boss-mt-2` stalling the WASM console permanently from 2.752 s of two-tone drive
1958
+ * (it does not stall with the predictor off). Above 1 it stays on for every factor, the
1959
+ * held path included (iterations on the profile packets: 2x -6..-15 %, 3x 0..-1 %, 4x
1960
+ * -39..-47 %, 5x/6x -8..-24 %, 8x -44..-50 %; output movement at most 6e-6 relative RMS).
1961
+ * The factor is fixed by `prepare()` (which also clears the ring), so there is no mid-run
1962
+ * switch to reason about.
1945
1963
  */
1946
1964
  newtonStartHistory = /* @__PURE__ */ new Map();
1947
1965
  blockNewtonCensus = /* @__PURE__ */ new Map();
@@ -3997,7 +4015,7 @@ var ReferenceRuntime = class {
3997
4015
  const { matrix, rhs, solutionA, solutionB } = scratch;
3998
4016
  const sparse = dc ? void 0 : this.sparseSchedules.get(block.id);
3999
4017
  const blockIndex = this.blockIndexById.get(block.id) ?? 0;
4000
- const predictorPass = !dc && sourceScale === 1 && gmin === GMIN_SIEMENS && !block.linear;
4018
+ const predictorPass = this.oversample > 1 && !dc && sourceScale === 1 && gmin === GMIN_SIEMENS && !block.linear;
4001
4019
  const seed = (predictorPass ? this.predictedNewtonStart(block.id, size) : null) ?? start;
4002
4020
  for (let index = 0; index < size; index += 1) {
4003
4021
  solutionA[index] = seed[index] ?? 0;
@@ -4012,7 +4030,9 @@ var ReferenceRuntime = class {
4012
4030
  let bestDelta = Number.POSITIVE_INFINITY;
4013
4031
  let noImprovement = 0;
4014
4032
  let foldStreak = 0;
4015
- let foldReseeded = false;
4033
+ let foldReseeds = 0;
4034
+ let lastWorstNode = -1;
4035
+ let lastWorstSign = 0;
4016
4036
  for (let iteration = 0; iteration < iterations; iteration += 1) {
4017
4037
  used = iteration + 1;
4018
4038
  this.limitedIterate = false;
@@ -4140,6 +4160,12 @@ var ReferenceRuntime = class {
4140
4160
  }
4141
4161
  }
4142
4162
  }
4163
+ const damping = dc ? 1 : this.opAmpStepDamping(block, blockIndex, current, next, dt, dc);
4164
+ if (damping < 1) {
4165
+ for (let i = 0; i < size; i++) {
4166
+ next[i] = current[i] + damping * (next[i] - current[i]);
4167
+ }
4168
+ }
4143
4169
  if (relaxing) {
4144
4170
  for (let i = 0; i < size; i++) {
4145
4171
  next[i] = current[i] + alpha * (next[i] - current[i]);
@@ -4148,6 +4174,10 @@ var ReferenceRuntime = class {
4148
4174
  const delta = maxAbsDifference(next, current);
4149
4175
  worstNode = worstDifferenceIndex(next, current);
4150
4176
  worstDelta = delta;
4177
+ const worstSign = Math.sign((next[worstNode] ?? 0) - (current[worstNode] ?? 0));
4178
+ const reversed = dc || worstNode === lastWorstNode && worstSign !== 0 && lastWorstSign !== 0 && worstSign !== lastWorstSign;
4179
+ lastWorstNode = worstNode;
4180
+ lastWorstSign = worstSign;
4151
4181
  if (delta < bestDelta * 0.999) {
4152
4182
  bestDelta = delta;
4153
4183
  noImprovement = 0;
@@ -4160,7 +4190,7 @@ var ReferenceRuntime = class {
4160
4190
  }
4161
4191
  }
4162
4192
  } else {
4163
- noImprovement += 1;
4193
+ noImprovement += reversed ? 1 : 0;
4164
4194
  if (!relaxing) {
4165
4195
  if (noImprovement >= NEWTON_NON_CONTRACTING_LIMIT && iteration >= NEWTON_RELAXATION_EARLIEST_ITERATION) {
4166
4196
  relaxing = true;
@@ -4191,13 +4221,15 @@ var ReferenceRuntime = class {
4191
4221
  }
4192
4222
  const limitedOpamp = this.limitedOpamp;
4193
4223
  foldStreak = limitedOpamp?.folded === true ? foldStreak + 1 : 0;
4194
- if (!dc && !foldReseeded && limitedOpamp !== null && foldStreak >= OPAMP_FOLD_STREAK) {
4195
- foldReseeded = true;
4224
+ if (!dc && limitedOpamp !== null && foldStreak >= OPAMP_FOLD_STREAK) {
4225
+ foldReseeds += 1;
4226
+ this.foldReseedCount += 1;
4196
4227
  foldStreak = 0;
4197
4228
  const wasHigh = (start[limitedOpamp.output] ?? limitedOpamp.centre) >= limitedOpamp.centre;
4198
- current[limitedOpamp.output] = wasHigh ? limitedOpamp.railLow : limitedOpamp.railHigh;
4229
+ const toHigh = foldReseeds % 2 === 1 ? wasHigh : !wasHigh;
4230
+ current[limitedOpamp.output] = toHigh ? limitedOpamp.railHigh : limitedOpamp.railLow;
4199
4231
  this.opampHistory.set(limitedOpamp.key, {
4200
- differential: wasHigh ? -limitedOpamp.band : limitedOpamp.band,
4232
+ differential: toHigh ? limitedOpamp.band : -limitedOpamp.band,
4201
4233
  step: 0,
4202
4234
  cap: limitedOpamp.maxStep
4203
4235
  });
@@ -4237,6 +4269,53 @@ var ReferenceRuntime = class {
4237
4269
  }
4238
4270
  return { solution: current, converged, used, worstNode, worstDelta };
4239
4271
  }
4272
+ /**
4273
+ * The factor the Newton update is scaled by so that no railed op-amp's differential moves
4274
+ * further than its step cap and no op-amp output node moves further than one full swing:
4275
+ * the smallest `cap / |requested differential step|` and `2 * halfSwing / |requested output
4276
+ * step|` over the block's railed op-amps, or 1. `current` is the iterate the rows were
4277
+ * stamped at and `next` the undamped solve. The history read here is the one the stamps
4278
+ * wrote this iteration, so `differential` is the point each row's tangent was taken at and
4279
+ * `cap` the step the next evaluation will allow; a request inside both bounds scales nothing.
4280
+ * Mirrored in `Engine.cpp` (`opAmpStepDamping`); the two must agree to the operation.
4281
+ */
4282
+ opAmpStepDamping(block, blockIndex, current, next, dt, dc) {
4283
+ let damping = 1;
4284
+ for (const stamp of block.stamps) {
4285
+ if (stamp.kind !== "ideal-opamp" || stamp.railHigh === null || stamp.railLow === null) {
4286
+ continue;
4287
+ }
4288
+ const history = this.opampHistory.get(
4289
+ packHistoryKey3(blockIndex, stamp.plus, stamp.minus, stamp.output)
4290
+ );
4291
+ if (history === void 0) continue;
4292
+ const halfSwing = opAmpHalfSwing(stamp.railHigh, stamp.railLow);
4293
+ const alpha = dc ? 1 : opAmpPoleAlpha(
4294
+ stamp.openLoopGain,
4295
+ opAmpGainBandwidthHz(stamp),
4296
+ dt,
4297
+ this.sampleRate
4298
+ );
4299
+ const effectiveGain = alpha * stamp.openLoopGain;
4300
+ const linearWidth = halfSwing / effectiveGain;
4301
+ const band = OPAMP_DIFFERENTIAL_BAND * linearWidth;
4302
+ const nextDifferential = clamp(
4303
+ (next[stamp.plus] ?? 0) - (next[stamp.minus] ?? 0),
4304
+ -band,
4305
+ band
4306
+ );
4307
+ const magnitude = Math.abs(nextDifferential - history.differential);
4308
+ if (magnitude > history.cap) {
4309
+ damping = Math.min(damping, history.cap / magnitude);
4310
+ }
4311
+ const swing = 2 * halfSwing;
4312
+ const outputStep = Math.abs((next[stamp.output] ?? 0) - (current[stamp.output] ?? 0));
4313
+ if (outputStep > swing) {
4314
+ damping = Math.min(damping, swing / outputStep);
4315
+ }
4316
+ }
4317
+ return damping;
4318
+ }
4240
4319
  /**
4241
4320
  * Build-order step 6, vertical slice: the part of a block's matrix that is the same for
4242
4321
  * every Newton iteration of this sample -- every stamp `newtonPortRowsOf` calls linear,
@@ -4451,7 +4530,7 @@ var ReferenceRuntime = class {
4451
4530
  full[portRows[p]] = y[p];
4452
4531
  }
4453
4532
  };
4454
- const predictorPass = !dc && sourceScale === 1 && gmin === GMIN_SIEMENS && !block.linear;
4533
+ const predictorPass = this.oversample > 1 && !dc && sourceScale === 1 && gmin === GMIN_SIEMENS && !block.linear;
4455
4534
  const seed = (predictorPass ? this.predictedNewtonStart(block.id, size) : null) ?? start;
4456
4535
  for (let p = 0; p < portCount; p += 1) {
4457
4536
  scratch.yCurrent[p] = seed[portRows[p]] ?? 0;
@@ -5060,7 +5139,7 @@ var ReferenceRuntime = class {
5060
5139
  const key = packHistoryKey3(blockIndex, stamp.plus, stamp.minus, stamp.output);
5061
5140
  const alpha = opAmpPoleAlpha(
5062
5141
  stamp.openLoopGain,
5063
- OPAMP_GAIN_BANDWIDTH_HZ,
5142
+ opAmpGainBandwidthHz(stamp),
5064
5143
  dt,
5065
5144
  this.sampleRate
5066
5145
  );
@@ -5705,26 +5784,29 @@ var ReferenceRuntime = class {
5705
5784
  );
5706
5785
  const alpha = dc ? 1 : opAmpPoleAlpha(
5707
5786
  stamp.openLoopGain,
5708
- OPAMP_GAIN_BANDWIDTH_HZ,
5787
+ opAmpGainBandwidthHz(stamp),
5709
5788
  dt,
5710
5789
  this.sampleRate
5711
5790
  );
5712
5791
  const effectiveGain = alpha * stamp.openLoopGain;
5713
5792
  const linearWidth = halfSwing / effectiveGain;
5714
5793
  const previous = this.opampHistory.get(opampKey);
5715
- const previousDifferential = previous?.differential ?? 0;
5716
5794
  const rawDifferential = (solution[stamp.plus] ?? 0) - (solution[stamp.minus] ?? 0);
5717
5795
  const band = OPAMP_DIFFERENTIAL_BAND * linearWidth;
5718
5796
  const bounded = clamp(rawDifferential, -band, band);
5797
+ const previousDifferential = previous?.differential ?? bounded;
5719
5798
  const step = bounded - previousDifferential;
5720
5799
  const maxStep = OPAMP_MAX_DIFFERENTIAL_STEP * linearWidth;
5721
5800
  const reversing = previous !== void 0 && previous.step !== 0 && step !== 0 && Math.sign(step) !== Math.sign(previous.step);
5722
5801
  const previousCap = previous?.cap ?? maxStep;
5723
5802
  const cap = reversing ? Math.max(previousCap / 2, linearWidth / 64) : Math.min(maxStep, previousCap * 1.2);
5724
5803
  const limited = Math.abs(step) > cap;
5804
+ const folded = cap <= linearWidth / 8 && Math.abs(step) >= linearWidth / 256;
5725
5805
  if (limited) {
5726
5806
  this.limitedIterate = true;
5727
5807
  this.limitedBy = `opamp +=${stamp.plus} -=${stamp.minus} out=${stamp.output}`;
5808
+ }
5809
+ if (limited || folded) {
5728
5810
  this.limitedOpamp = {
5729
5811
  key: opampKey,
5730
5812
  output: stamp.output,
@@ -5733,7 +5815,7 @@ var ReferenceRuntime = class {
5733
5815
  railLow: stamp.railLow,
5734
5816
  band,
5735
5817
  maxStep,
5736
- folded: cap <= linearWidth / 8
5818
+ folded
5737
5819
  };
5738
5820
  }
5739
5821
  const differential = limited ? previousDifferential + Math.sign(step) * cap : bounded;
@@ -5750,10 +5832,11 @@ var ReferenceRuntime = class {
5750
5832
  clamp(scaled, -OPAMP_SATURATION_BAND, OPAMP_SATURATION_BAND)
5751
5833
  );
5752
5834
  const slope = effectiveGain * (1 - derivativeShape * derivativeShape);
5835
+ const linearisedAt = limited ? differential : rawDifferential;
5753
5836
  matrix[row][stamp.output] += 1;
5754
5837
  matrix[row][stamp.plus] -= slope;
5755
5838
  matrix[row][stamp.minus] += slope;
5756
- rhs[row] = output - slope * differential;
5839
+ rhs[row] = output - slope * linearisedAt;
5757
5840
  break;
5758
5841
  }
5759
5842
  case "vccs": {
@@ -6909,7 +6992,8 @@ var V2WasmEngine = class _V2WasmEngine {
6909
6992
  * `newtonStartHistory` decisions: `seedsUsed` counts standard-pass solves that started
6910
6993
  * from an extrapolated solution (order > 0), `oneIterationSolves` those that converged in
6911
6994
  * exactly one iteration -- the saving itself, attributable on the shipping console.
6912
- * Counted since `prepare()`/`reset()`. `predictorOrder(blockIdx)` reads the order the
6995
+ * Counted since `prepare()`/`reset()`; both stay 0 at `oversample` 1, where the predictor
6996
+ * does not run. `predictorOrder(blockIdx)` reads the order the
6913
6997
  * block's next solve will seed from (0 = previous solution, 1 = linear, 2 = quadratic;
6914
6998
  * -1 for a bad index), so a decision can be compared against the reference per sample.
6915
6999
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vessel-dsp/runtime",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Real-time MNA simulation runtime and solver console for VesselDSP Program ROMs.",
5
5
  "keywords": [
6
6
  "guitar-pedal",
@@ -58,7 +58,7 @@
58
58
  "generate-kernels": "bun scripts/generate-kernels.ts"
59
59
  },
60
60
  "dependencies": {
61
- "@vessel-dsp/compiler": "0.4.0"
61
+ "@vessel-dsp/compiler": "0.5.0"
62
62
  },
63
63
  "publishConfig": {
64
64
  "access": "public"