Lowering: patch repeat restarts pitch and arpeggio, not the envelope; README store-kind rollback note #37

Merged
aqua merged 2 commits from aqua/repeat-pitch-only into main 2026-11-11 09:27:29 +00:00
Member

Lowering. patch repeat wrapped the whole age, so a repeat shorter than sustain+decay never reached the release (powerup: 0.113 s vs 0.31 s; the same bug as the explosion). Now age = time always; each voice wraps a voice_N_pitch_age at repeat_interval for the pitch ramp/delta and the arpeggio delay only, as sfxr's repeat does. Patches without repeat lower byte-identically (43 lowered, 4 differ: sfxr-powerup, bfxr-ui-bloom, advanced-ritual-sequence, examples-language-tour; the only repeat patches). RepeatLoweringTests pin it and fail on the old emitter.

aqua-feel (gate 81/81, 0 waivers): powerup active 3000 ms -> 308 ms, LUFS -15.9 -> -21.9; ui-bloom -18.5 -> -23.8 LUFS, noise-to-tone 8.4 -> -15.2 dB; ritual-sequence centroid 2433 -> 1405 Hz; language-tour noise-to-tone 29 -> -10 dB. Clips before/after: /srv/minds-web/aqua/sfxr-powerup-repeat-20261111/. Nobody has listened.

README. Rollback note by store kind (single-file v3 vs directory v5), per CultLib #98.

Soul pass at 663a574: claims hold. Gaps it named: pitch restart confirmed from the expression only (ramp is ~1.6% per interval); trigger-interval voices combined with a patch repeat compose as (age mod trigger) mod repeat, untested, no shipped patch does it; tests do not pin that vibrato/LFO/filter/FM decay stay unwrapped; the 1.x-pin README claim rests on CultLib's report, not re-measured.

🤖 Generated with Claude Code

**Lowering.** `patch repeat` wrapped the whole age, so a repeat shorter than sustain+decay never reached the release (powerup: 0.113 s vs 0.31 s; the same bug as the explosion). Now `age = time` always; each voice wraps a `voice_N_pitch_age` at `repeat_interval` for the pitch ramp/delta and the arpeggio delay only, as sfxr's repeat does. Patches without repeat lower byte-identically (43 lowered, 4 differ: sfxr-powerup, bfxr-ui-bloom, advanced-ritual-sequence, examples-language-tour; the only repeat patches). `RepeatLoweringTests` pin it and fail on the old emitter. **aqua-feel** (gate 81/81, 0 waivers): powerup active 3000 ms -> 308 ms, LUFS -15.9 -> -21.9; ui-bloom -18.5 -> -23.8 LUFS, noise-to-tone 8.4 -> -15.2 dB; ritual-sequence centroid 2433 -> 1405 Hz; language-tour noise-to-tone 29 -> -10 dB. Clips before/after: /srv/minds-web/aqua/sfxr-powerup-repeat-20261111/. Nobody has listened. **README.** Rollback note by store kind (single-file v3 vs directory v5), per CultLib #98. Soul pass at 663a574: claims hold. Gaps it named: pitch restart confirmed from the expression only (ramp is ~1.6% per interval); trigger-interval voices combined with a patch repeat compose as (age mod trigger) mod repeat, untested, no shipped patch does it; tests do not pin that vibrato/LFO/filter/FM decay stay unwrapped; the 1.x-pin README claim rests on CultLib's report, not re-measured. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
age now always runs; each voice wraps a pitch age at repeat_interval for the pitch ramp and arpeggio (as sfxr does).
Powerup (repeat 0.113 s vs 0.31 s envelope) now reaches its release. Also changes bfxr/ui-bloom, advanced/ritual-sequence,
examples/language-tour. README: stores written after the CultLib pin move are one-way; older 1.x pins do not refuse them.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
aqua merged commit e9de895c39 into main 2026-11-11 09:27:29 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/AquaSynth!37
No description provided.