@banou/ripple 0.0.29 → 0.0.30
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/fkn.json +1 -1
- package/index.js +3610 -3591
- package/package.json +1 -1
- package/sw.js +2 -2
- package/volume-normalizer-worklet.js +9 -5
package/package.json
CHANGED
package/sw.js
CHANGED
|
@@ -8,8 +8,8 @@ const live = new Map()
|
|
|
8
8
|
/* Stamped at build time. These are the dev defaults and must never reach production: a worker whose
|
|
9
9
|
BUILD never changes is never reinstalled, so the update this feature announces would never fire. */
|
|
10
10
|
const MODE = "cache" // @stamp:mode
|
|
11
|
-
const BUILD = "
|
|
12
|
-
const MANIFEST = [["/assets/empty-BvRk9kiK.js","e3b0c44298fc1c14"],["/assets/libtorrent-DleyqKUt.js","27516279f85831f1"],["/assets/worker-Dx1oQ7Q_.js","f43c4541e44036f4"],["/build-B7te3F-u.js","47b056c564f078c5"],["/remote-DvdN47iT.js","b0649250a9e3a079"],["/volume-normalizer-worklet.js","
|
|
11
|
+
const BUILD = "0a822c9844cb9b01" // @stamp:build
|
|
12
|
+
const MANIFEST = [["/assets/empty-BvRk9kiK.js","e3b0c44298fc1c14"],["/assets/libtorrent-DleyqKUt.js","27516279f85831f1"],["/assets/worker-Dx1oQ7Q_.js","f43c4541e44036f4"],["/build-B7te3F-u.js","47b056c564f078c5"],["/remote-DvdN47iT.js","b0649250a9e3a079"],["/volume-normalizer-worklet.js","4021752281e110ba"]] // @stamp:manifest
|
|
13
13
|
|
|
14
14
|
const CACHE = 'ripple-assets-' + BUILD
|
|
15
15
|
|
|
@@ -564,8 +564,10 @@ export const createAnalysis = ({ toWorklet, toPage = () => {} }) => {
|
|
|
564
564
|
toWorklet({ drop: block })
|
|
565
565
|
}
|
|
566
566
|
if (!Number.isFinite(level)) return
|
|
567
|
-
|
|
568
|
-
|
|
567
|
+
// the playhead's own block first: under load each took 21 to 43 ms, and sent after the one before it, a seek's
|
|
568
|
+
// cut over HTTP reached the worklet 64 to 75 ms after the seek, its audio 72 to 83 ms (HOR-888, 2026-10-23)
|
|
569
|
+
for (const block of [here, here - 1, here + 1, here + 2, here + 3]) {
|
|
570
|
+
if (block < 0 || block * BLOCK_BINS >= endBin) continue
|
|
569
571
|
const start = block * BLOCK_BINS
|
|
570
572
|
const known = signature(start - MARGIN_BINS, start + BLOCK_BINS + MARGIN_BINS)
|
|
571
573
|
const last = sent.get(block)
|
|
@@ -1064,14 +1066,16 @@ const defineProcessor = () => class VolumeNormalizer extends AudioWorkletProcess
|
|
|
1064
1066
|
* finds it at all, is taken only once the next search, 250 ms later, peaks within 2 ms of it, clear or not: voiced
|
|
1065
1067
|
* dialogue repeats with its pitch, so a peak a pitch period off can come out ahead, and a FLAC run once matched 45 ms
|
|
1066
1068
|
* off with every check passed. Over the whole 250 ms either way an Opus file's matches were never that clear (HOR-498
|
|
1067
|
-
* build, 2026-10-17).
|
|
1069
|
+
* build, 2026-10-17). Kept past that next one, a candidate that a match came back to after four elsewhere locked an
|
|
1070
|
+
* Opus run under load 18 ms off, every cut that much late (HOR-888, 2026-10-23).
|
|
1068
1071
|
*/
|
|
1069
1072
|
found(offset, clear) {
|
|
1070
1073
|
const near = (other) => other !== null && Math.abs(offset - other) <= 0.002
|
|
1071
|
-
|
|
1074
|
+
const confirmed = near(this.candidate)
|
|
1075
|
+
this.candidate = null
|
|
1076
|
+
if (confirmed) {
|
|
1072
1077
|
this.offset = offset
|
|
1073
1078
|
this.doubt = false
|
|
1074
|
-
this.candidate = null
|
|
1075
1079
|
} else if (clear) {
|
|
1076
1080
|
if (!this.doubt && near(this.offset)) this.offset = offset
|
|
1077
1081
|
else this.candidate = offset
|