A sound FX played the same every time: its numbers were settings of
the nodes. Now the Input declares parameters with a default, every
number of Gain, Pitch and EQ is an input they can feed, and a Play
sound hands in values for them.
- Input declares number parameters in the inspector, each with a
Default (DeclaredPort.default, SetPortDefaultCommand). They are
outputs of the Input. Input and Output count as terminals now, one
of each per graph.
- Gain, Pitch and EQ take their numbers at inputs under the keys the
settings had, so saved graphs sound as before without a migration.
Each value is held to its range however it arrives.
- The compiler gives an FxPlan with the parameters still open.
fxChainOf fills them in when a voice starts. The player still only
sees an FxChain.
- New behavior node Sound FX parameters: names an FX and picks its
parameters like a Variables node picks variables. Each picked one is
a number input that starts at the FX's default. Its output has the
new port type fxparams, which only fits Play sound's fx params.
- Play sound warns when the parameters name another FX than the one
it plays. Names the FX does not know are left out.
- Renaming a parameter at the Input renames it in every Sound FX
parameters node naming that FX, edges and values included.
- The Sound FX tab has a number field per parameter in its header.
Play uses those values, they are never written into the asset.
- A value counts from the start of a voice. Changing a playing voice
is #315, a Mix node is #316.
Tests:
- soundfx.test.ts 22 (+11): parameters in the plan, held values, a
0-by-default stage, EQ band, save with defaults, wrong port types,
default command with undo, Sound FX parameters into Play sound,
defaults of picked ones, node problems, mismatch, rename with undo
- node-catalog 368 (+3): Play sound fx params, Sound FX parameters
- e2e 34: ALL PASSED - 28 checks (+2: header field plays depth 5,
a Sound FX parameters node gives the game's voice depth 7)
- Gate on melektaus-atx: typecheck, lint, prettier clean, 240 test
files, 3636 tests green
- Counter-check: with fxChainOf ignoring the values and the rename
not followed, 5 of the new tests fail.
- Browser probe: header fields, inspector Default and the picked
parameter looked at in two screenshots.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>