Fresnelcut

Diffuser

2D Skyline Diffuser

A skyline diffuser is the block-city panel: a grid of square blocks at varying heights. It scatters in both axes like a 2-D QRD, but is built by folding a 1-D primitive-root sequence into a rectangular grid, giving every block a unique height.

Open this in the designer →Free · runs in your browser · nothing uploaded

How it works

The block heights come from a primitive-root sequence `g^h mod N` folded onto an X×Y grid (where X·Y = N−1 and X, Y are coprime) using the Chinese-Remainder-Theorem mapping. Because every height is unique, the specular lobe is suppressed on both axes — the 2-D analogue of what a PRD does in one axis.

Skylines are popular because they are visually striking and machine-friendly: each block is a simple rectangular prism, easy to CNC or stack from sheet stock.

Worked example: N = 7, g = 3 at 500 Hz

N = 7 gives N−1 = 6 = 2·3, so the array is X = 2 rows by Y = 3 columns — never square, by construction. The 1-D sequence `S_h = 3^h mod 7` for h = 1…6 is `3, 2, 6, 4, 5, 1`; CRT-folding it onto the 2×3 grid at cell `(h mod 2, h mod 3)` gives:

row \ col012
0142
1635

At 500 Hz the per-block step is the same u ≈ 49.03 mm as a 1-D panel of this N, so the deepest block (value 6) is 6 × 49.03 ≈ 294.2 mm — identical to the PRD worked example at the same N, since it's built from the same 1-D sequence. Open this exact panel in the designer to see the 3-D preview and get the cut file.

Tiling a skyline without a repeating look

A single skyline module already breaks up reflections on both axes, but repeating one module across a wide wall reimposes a visible, and acoustic, repeat. Fresnelcut's fix is a companion module — every block height flipped to `(N−1) − h`, which shares the same footprint and depth range but has low similarity to the original — placed against the base module in a non-repeating pattern so neither the eye nor the reflection pattern locks onto a period.

Skyline vs. 2D QRD

Both scatter two axes; the visible difference is the grid shape (skyline's X×Y array is never square, a 2D QRD's N×N grid always is) and skyline additionally suppresses the straight-back reflection, the two-axis analogue of what a 1D PRD does in one axis.

Building it: block-by-block or one routed panel

There are two common ways to build a skyline. The first stacks or glues individual blocks cut from stock of each required thickness — more individual pieces, but every cut is a simple straight rip and no single sheet needs to be thicker than the deepest block. The second CNC-routes the whole height map into one solid panel — fewer pieces to align, but the blank has to be at least as thick as the tallest block everywhere, including under the shortest ones. Fresnelcut's cut list supports either approach; which one makes sense mostly comes down to what tools you have.

Mounting a skyline panel

A skyline is heavier than a comparable 1-D panel of the same footprint, since it's carrying depth across a full grid rather than a single row of wells — plan the wall mounting hardware (French cleat, mounting rail, or direct screw-through with washers) for the finished weight, not just the base panel's, especially at low design frequencies where the tallest blocks get substantial.

The math
S_h = g^h mod N → grid cell (h mod X, h mod Y)

CRT folding of the 1-D primitive-root sequence. N−1 = X·Y with gcd(X,Y)=1, so the array is never square.

Best for

  • A statement wall that also treats reflections
  • Two-axis scatter with the block-city aesthetic

Not the tool for

  • Low-frequency control (use an absorber)
  • The thinnest possible panel — tall blocks need depth

Start from a common size

N is the number of wells (a prime). More wells scatter more smoothly but make a wider, deeper panel. Pick one to open the designer pre-set:

Frequently asked questions

Why is the grid never square?

The grid dimensions come from factoring N−1 into two coprime numbers X and Y, and a prime-minus-one value that factors into two equal coprime parts doesn't happen — so an X×Y skyline grid is never X = Y. That's a direct consequence of the construction, not a design choice.

How tall do the tallest blocks get?

It scales the same way a 1-D panel's deepest well does — with N and the design frequency. See the worked example above for N = 7 at 500 Hz, or work backward from your available stock via the well depth guide.

Do I have to glue up individual blocks, or is it one panel?

Either works. Fresnelcut's cut list supports a stacked/glued-block build (each height cut from stock of that thickness) or a single CNC-routed panel with pockets — the geometry is identical either way.

Is a skyline harder to build than a QRD?

It has more individual pieces (an X×Y grid of blocks vs. a single row of wells), but each piece is a simple rectangular prism — no compound cuts. Most builders find it more time-consuming, not more difficult.

Should I stack individual blocks or route one panel?

Stacking lets every cut be a straight rip from thinner stock, at the cost of more pieces to align and glue. Routing one panel means fewer pieces but the blank has to be as thick as the tallest block everywhere. Pick whichever matches the tools you have — see the build section above.

Related reading

Related panel types

See all diffuser & absorber types.