diff --git a/patches/sfxr/classic/classic-sfxr-abstract-golf.aqua b/patches/sfxr/classic/classic-sfxr-abstract-golf.aqua index c340ec7..39c7e15 100644 --- a/patches/sfxr/classic/classic-sfxr-abstract-golf.aqua +++ b/patches/sfxr/classic/classic-sfxr-abstract-golf.aqua @@ -31,7 +31,7 @@ voice phaser=0.0001458 phaser_ramp=-0.000504 -patch repeat=0.174744 +patch gain=0.5 voice use=Noise freq=20 @@ -48,7 +48,6 @@ voice tremolo=0.0264 tremolo_hz=13.04 -patch repeat=0.11315 voice wave=sine freq=57.5946 diff --git a/patches/sfxr/explosion.aqua b/patches/sfxr/explosion.aqua index 97dacf6..fcb60c3 100644 --- a/patches/sfxr/explosion.aqua +++ b/patches/sfxr/explosion.aqua @@ -3,7 +3,6 @@ # Source: BuiltInScripts.ReferenceScripts # Notes: Stock reference patch exported from the in-code catalog. -patch repeat=0.174744 voice wave=noise freq=20 diff --git a/src/AquaSynth.Core/BuiltInScripts.cs b/src/AquaSynth.Core/BuiltInScripts.cs index a8f4396..fb339f3 100644 --- a/src/AquaSynth.Core/BuiltInScripts.cs +++ b/src/AquaSynth.Core/BuiltInScripts.cs @@ -89,7 +89,6 @@ public static class BuiltInScripts drive=0.12 """), ("explosion", """ - patch repeat=0.174744 voice wave=noise freq=20 @@ -188,7 +187,7 @@ public static class BuiltInScripts phaser=0.0001458 phaser_ramp=-0.000504 - patch repeat=0.174744 + patch gain=0.5 voice use=Noise freq=20 @@ -205,7 +204,6 @@ public static class BuiltInScripts tremolo=0.0264 tremolo_hz=13.04 - patch repeat=0.11315 voice wave=sine freq=57.5946 diff --git a/src/AquaSynth.Core/SfxrParams.cs b/src/AquaSynth.Core/SfxrParams.cs index 24069aa..1aa08aa 100644 --- a/src/AquaSynth.Core/SfxrParams.cs +++ b/src/AquaSynth.Core/SfxrParams.cs @@ -61,8 +61,7 @@ public sealed record SfxrParams PhaOffset = -0.22f, PhaRamp = -0.1f, VibStrength = 0.22f, - VibSpeed = 0.28f, - RepeatSpeed = 0.42f + VibSpeed = 0.28f }; public static SfxrParams Powerup() => new() diff --git a/tools/aqua-feel/README.md b/tools/aqua-feel/README.md index fa0e04a..61790b8 100644 --- a/tools/aqua-feel/README.md +++ b/tools/aqua-feel/README.md @@ -61,8 +61,7 @@ failing rule, and a rule with an `id` that matches no item (a renamed or dropped are deleted when the thing they excuse is fixed and a rename cannot silently disarm a cap. A missing metric fails its rule. The numbers were chosen after looking at the shipped renders. They are tripwires, not taste. -Current waivers: `sfxr-classic-classic-sfxr-abstract-golf` (+0.9 dBTP, -5.3 LUFS, held noise) and `sfxr-explosion` (3 s of -steady noise without decay). Nobody has listened to either to see if the number is the sound. +Current waivers: none. (The golf and explosion waivers were removed when `patch repeat` stopped cutting their envelopes; nobody has listened to either to see if the numbers are the sound.) ## Effects shelf diff --git a/tools/aqua-feel/SHELF.md b/tools/aqua-feel/SHELF.md index 3f423bc..1727e78 100644 --- a/tools/aqua-feel/SHELF.md +++ b/tools/aqua-feel/SHELF.md @@ -102,8 +102,8 @@ Sustained patches such as the thruster keep sounding until stopped; the render c | `patch/fm-bell-coin` | start | none | decays | 3 s | unheard | | `patch/fm-bell-gong` | start | none | decays | 3 s | unheard | | `patch/sfxr-blip` | start | none | decays | 3 s | unheard | -| `patch/sfxr-classic-classic-sfxr-abstract-golf` | start | none | sustained | 3 s | unheard | -| `patch/sfxr-explosion` | start | none | sustained | 3 s | unheard | +| `patch/sfxr-classic-classic-sfxr-abstract-golf` | start | none | decays | 3 s | unheard | +| `patch/sfxr-explosion` | start | none | decays | 3 s | unheard | | `patch/sfxr-hit` | start | none | decays | 3 s | unheard | | `patch/sfxr-jump` | start | none | decays | 3 s | unheard | | `patch/sfxr-laser` | start | none | decays | 3 s | unheard | diff --git a/tools/aqua-feel/shelf.json b/tools/aqua-feel/shelf.json index fbbac7e..c6e9e7e 100644 --- a/tools/aqua-feel/shelf.json +++ b/tools/aqua-feel/shelf.json @@ -1415,7 +1415,7 @@ "kind": "start", "detail": "plays from the moment it is started; no gate, trigger or audio-feature input. Sliders, where listed, are live while it plays." }, - "behaviour": "sustained: still sounding at the end of the render window, runs until stopped", + "behaviour": "decays: dies away inside the render window", "duration_s": 3, "duration_note": "the render window, not the effect's length", "render": { @@ -1440,7 +1440,7 @@ "kind": "start", "detail": "plays from the moment it is started; no gate, trigger or audio-feature input. Sliders, where listed, are live while it plays." }, - "behaviour": "sustained: still sounding at the end of the render window, runs until stopped", + "behaviour": "decays: dies away inside the render window", "duration_s": 3, "duration_note": "the render window, not the effect's length", "render": { diff --git a/tools/aqua-feel/thresholds.json b/tools/aqua-feel/thresholds.json index 239e8d7..aa66923 100644 --- a/tools/aqua-feel/thresholds.json +++ b/tools/aqua-feel/thresholds.json @@ -123,32 +123,5 @@ "why": "PRC SYNTH1 peaked at 2.10 before the 2026-11-05 gain trim to 0.67; this holds it under 0.9" } ], - "waivers": [ - { - "id": "sfxr-classic-classic-sfxr-abstract-golf", - "metric": "truePeakDb", - "reason": "renders 0.99 sample peak and +0.9 dBTP inter-sample", - "followUp": "aqua-body:follow_up:sfxr-golf-hot", - "max": 1.0 - }, - { - "id": "sfxr-classic-classic-sfxr-abstract-golf", - "metric": "loudnessLufs", - "reason": "-5.3 LUFS integrated over the 3 s render", - "followUp": "aqua-body:follow_up:sfxr-golf-hot", - "max": -5.0 - }, - { - "id": "sfxr-classic-classic-sfxr-abstract-golf", - "metric": "lowMotion", - "reason": "3 s of steady bright noise, 4 dB level range; may be longer than the render window", - "followUp": "aqua-body:follow_up:sfxr-golf-hot" - }, - { - "id": "sfxr-explosion", - "metric": "lowMotion", - "reason": "3 s of steady noise, 1 dB level range, no decay inside the render window; an explosion that does not decay is worth a listener's check", - "followUp": "aqua-body:follow_up:sfxr-explosion-static" - } - ] + "waivers": [] } diff --git a/tools/aqua-playground/lowered/sfxr-classic-classic-sfxr-abstract-golf.dsp b/tools/aqua-playground/lowered/sfxr-classic-classic-sfxr-abstract-golf.dsp index 5677485..9c5c4e5 100644 --- a/tools/aqua-playground/lowered/sfxr-classic-classic-sfxr-abstract-golf.dsp +++ b/tools/aqua-playground/lowered/sfxr-classic-classic-sfxr-abstract-golf.dsp @@ -3,7 +3,7 @@ declare name "sfxr-classic-classic-sfxr-abstract-golf"; declare options "[nvoices:1]"; time = ba.time / ma.SR; -age = time - floor(time / 0.11315) * 0.11315; +age = time; clip01(x) = min(1.0, max(0.0, x)); wrap01(x) = x - floor(x); slew(rate,x) = x : *(1.0 - exp((0.0 - max(0.0001, rate)) / ma.SR)) : + ~ *(exp((0.0 - max(0.0001, rate)) / ma.SR)); @@ -117,4 +117,4 @@ voice_6_phased = voice_6_filtered; voice_6_formants = voice_6_phased; voice_6 = ((voice_6_phased * (1.0 - clip01(0 + patch_mod_formant_mix + 0.0)) + voice_6_formants * clip01(0 + patch_mod_formant_mix + 0.0)) * oneshot_adsr_at(voice_6_age, 0, 0, 1, 0.01451247, 0.03832199) * max(0.0, 1.0 + patch_mod_gain + 0.0) * 0.22); -process = softclip((voice_0 + voice_1 + voice_2 + voice_3 + voice_4 + voice_5 + voice_6) * 1); +process = softclip((voice_0 + voice_1 + voice_2 + voice_3 + voice_4 + voice_5 + voice_6) * 0.5); diff --git a/tools/aqua-playground/lowered/sfxr-explosion.dsp b/tools/aqua-playground/lowered/sfxr-explosion.dsp index 3df35ab..55c395b 100644 --- a/tools/aqua-playground/lowered/sfxr-explosion.dsp +++ b/tools/aqua-playground/lowered/sfxr-explosion.dsp @@ -3,7 +3,7 @@ declare name "sfxr-explosion"; declare options "[nvoices:1]"; time = ba.time / ma.SR; -age = time - floor(time / 0.174744) * 0.174744; +age = time; clip01(x) = min(1.0, max(0.0, x)); wrap01(x) = x - floor(x); slew(rate,x) = x : *(1.0 - exp((0.0 - max(0.0001, rate)) / ma.SR)) : + ~ *(exp((0.0 - max(0.0001, rate)) / ma.SR));