Let the Reverb's screen ring out and its reflections drift (#401)
The round screen of the Reverb stood still. It now moves, only for the look of it, and says nothing it did not say before. - The sound rings out again and again in real time. The dot in the middle flashes, and a thin front runs out over the rings as fast as the tail does. It fades as the tail falls, then 0.8 s of quiet. - A reflection lights up for a moment once the front has passed it. - The reflections turn slowly round the dot, each at its own pace and way (at most 0.16 rad/s). They sway 1.5 px in and out and twinkle. Their drift comes from a noise of its own, so they sit where they always did. - Rings, grid and dashed end stay one drawing. Only the dots, the front and the flash are drawn again each frame. - Nothing moves without a tail to see: no sound picked, or wet at 0. Tests: - reverb-view: 13 tests green (3 new) - e2e 34 on melektaus-atx: ALL PASSED, 144 checks - gate on melektaus-atx: 293 files, 4498 tests Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
742f240a62
commit
2f376262d3
6 files changed
+185
-13
No files matched your search
@@ -1215,6 +1215,7 @@ export async function sound(t) {
|
||||
// #389: a Reverb node is drawn as a device with a round screen of its tail. A knob its type does
|
||||
// not take goes over to Custom with the type's numbers, as one undo step; a sound picked on
|
||||
// it makes the type Sound and the screen draws that sound's tail. It is wired to nothing.
|
||||
// #401: the screen moves by itself.
|
||||
await mutate(`
|
||||
const graph = __gm.state.project.assets.find((a) => a.id === ${JSON.stringify(fxId)}).graph;
|
||||
graph.nodes.push(${JSON.stringify(node('fx-rv', 'SoundFxReverb', 0, 400, { room: 'hall' }))});`);
|
||||
@@ -1226,6 +1227,8 @@ export async function sound(t) {
|
||||
`__gm.state.project.assets.find((a) => a.id === ${JSON.stringify(fxId)}).graph.nodes.find((n) => n.id === 'fx-rv').params`,
|
||||
);
|
||||
const rvShown = await reverbPanel();
|
||||
await sleep(300);
|
||||
const rvLater = await reverbPanel();
|
||||
const rvRect = rvShown.rect;
|
||||
const rvBeside = (p) => p.y > rvRect.y && p.y < rvRect.y + rvRect.h;
|
||||
const rvDial = rvShown.knobs.decay.dial;
|
||||
@@ -1261,6 +1264,8 @@ export async function sound(t) {
|
||||
rvShown.scope.reach < 0.5 &&
|
||||
rvShown.scope.says.ends === 'ENDS 2.52 s' &&
|
||||
rvShown.highs === 'HIGHS 5.5 kHz' &&
|
||||
rvLater.scope.seconds > rvShown.scope.seconds &&
|
||||
rvLater.scope.at !== rvShown.scope.at &&
|
||||
rvTurned.params.room === 'custom' &&
|
||||
rvTurned.params.decay > 2.5 &&
|
||||
rvTurned.params.damping === 0.35 &&
|
||||
@@ -1280,7 +1285,7 @@ export async function sound(t) {
|
||||
rvSound.panel.scope.rings > 0 &&
|
||||
rvSoundUndone.room === 'cave' &&
|
||||
rvSoundUndone.impulse === undefined,
|
||||
JSON.stringify({ rvShown, rvTurned, rvUndone, rvCave, rvOffered, rvSound, rvSoundUndone }),
|
||||
JSON.stringify({ rvShown, rvLater, rvTurned, rvUndone, rvCave, rvOffered, rvSound, rvSoundUndone }),
|
||||
);
|
||||
await mutate(`
|
||||
const graph = __gm.state.project.assets.find((a) => a.id === ${JSON.stringify(fxId)}).graph;
|
||||
|
||||
Reference in new issue
Block a user