The bass mask belongs on the front layer: that's what turns the background into a different season

The winter panorama (public/bg-winter.jpg, 3904×1088) sits behind the spring one. The spring layer is in front. The radial bass mask lives on the spring layer — not on an overlay, not on the winter image. On the front.

That single placement decision changes what the effect communicates.

What moved and why it matters

Improving on the bass-envelope architecture documented in the previous article in this series, the temporal portal inverts where the mask sits spatially. The earlier pattern: a dark overlay above the main image, the bass mask cutting holes in that overlay to reveal the image below. The visual read: illumination, the frame brightening where the bass hits.

When the mask moves to the front panorama layer, the geometry inverts. At zero bass, spring is fully opaque — neon Tokyo, cherry-blossom petal light-trails, the complete front scene. As the bass rises, the radial cutout expands from the centre of the spring layer and what shows through isn’t a brighter version of the same scene. It’s a different season entirely.

The bass doesn’t reveal texture. It reveals time.

That distinction isn’t cosmetic. A hole in a dark overlay reads as illumination — the viewer interprets it as the frame lighting up where the signal peaks. A hole in the front panorama reads as a window, a physical aperture in the foreground through which a background scene is becoming visible. The viewer doesn’t think “this is brighter.” They think “there is something behind this.”

The second reading is more interesting. It earns the label “temporal portal” because what sits behind the front layer is winter — a different time of year at what appears to be the same location. The bass pulse becomes a seasonal reveal.

The front layer first

Before the portal existed, the spring layer itself needed to be right. On 2026-06-21, public/bg-city.png was replaced with public/bg-city.jpg (3.4 MB, 3904×1088) — swirling cherry-blossom petal light-trails over neon Tokyo. The same BG_W/BG_H constants cover both; all parallax and grade maths carry over without modification.

The neon-Tokyo aesthetic is load-bearing for the portal mechanic. The spring layer needs to be visually dense enough that the hole punched by the bass reads as contrast against the foreground, not as a continuation of it. A low-complexity front layer would make the portal invisible.

The winter background

public/bg-winter.jpg — 3904×1088, after a replacement pass on 2026-06-22 (3.3 MB) — shows a snowball fight, snow-laden blossoms, and a neon skyline at sunset. It replaced an earlier winter scene at 3.4 MB: snow, icicles, kids with snowballs.

The richer replacement carries a neon skyline. That matters. When the bass mask opens the portal and winter shows through, the viewer needs what’s visible through the hole to read as a complete world, not a desaturated placeholder behind a cut-out. The neon skyline provides that: its own light source, its own colour identity, enough visual density that what shows through the hole looks like a destination rather than a gap.

Same dimensions as the spring layer. No code change on the winter side. The parallax maths written for the spring panorama apply identically.

The halfway swap

At swapFrame = round(durationInFrames * 0.5), the roles exchange. A smooth bell curve (swapOpen) over ±50 frames drives holeR += swapOpen * 1500 — the portal radius expands by up to 1500 pixels during the transition window. At maximum radius, the two panoramas swap positions. The layer that was winter-behind becomes winter-front; the spring layer steps back.

The portal then closes with winter now in front. What was a portal into winter from spring becomes a portal into spring from winter.

The swap happens at maximum dilation deliberately. At full radius, both scenes are already visible simultaneously — the portal is as open as it gets — so the role reversal occurs when the viewer already has context for both layers. The swap isn’t revealed by the mechanics; it’s staged at the moment when the mechanics have already made both scenes legible.

Out of scope: per-track control of swap timing. The midpoint is fixed at durationInFrames * 0.5.

The centre

After the portal shipped, the centre of the hole read as flat. The original fix was a screen-blend centre spotlight — a coloured glow overlaid at the aperture origin. That was removed.

The reasoning: a glow over the image is not the same as the image glowing. The screen-blend added a synthetic luminosity source on top of the winter scene rather than trusting the winter scene itself. The winter panorama already has a neon skyline. That is a light source. The answer was to remove the overlay and let the source material carry the centre. The image is the glow; the glow is not an addition to the image.

Removing the overlay also simplifies the render stack. One fewer composited layer; one fewer place for the centre to look processed.

One envelope, new output

The previous article in this series established the bass signal as the single envelope driving multiple effects simultaneously. The temporal portal adds to that list without adding to the signal chain — the same bass value that controls scale, brightness, and particle density now also controls how much winter is visible through spring.

That shared envelope is why the effect lands without calibration. The bass hit that opens the portal is the same hit driving everything else in the frame. The viewer doesn’t experience the portal as a separate layer of the composition; it reads as part of the same frame response they’ve been tracking. The training is done by the time the portal opens.

The meaningful change is spatial, not signal. The bass mask was always radial; it was always bass-driven; it was always expanding and contracting in step with everything else. Moving it to the front panorama layer is one axis of variation — where it lives — and that shift changes the semantic entirely. From luminosity to transparency. From brightness to aperture. From “this frame is lit where the bass hits” to “you are looking through this frame at a different season where the bass hits.”

One placement. Two readings. The temporal one compounds over the track’s run time in a way the luminosity one doesn’t: every bass hit is a reminder that winter is still there, behind the spring foreground, visible for as long as the signal holds.

All writing