KQ-1786 · SINGING/BOWL

Singing Bowl

A brass singing bowl full of water seen from above, drawn in one WebGL2 pass: circle the pointer round the rim, or hold Space, and the angular speed of your circling feeds energy into the water, which rises into a standing wave of petals at the wall and rings running inward whose order climbs with the speed on the drift spring's time scale, cross-fading so the petals visibly multiply. Stop and the energy drains at the damping rate while the rings let go from the centre out, the last petals dying at the wall, and the rim keeps a soft travelling glint that fades half as fast; a tap on the rim, or Enter at the keyboard's mallet, sends one clean ring across the water. The water is shaded from its height field, its slope reflecting the room and its curvature throwing caustics on the brass floor.

KQ-1786 · SINGING/BOWL

Hold Space to rub the rim, faster the longer you hold; Enter strikes it; Left and Right move the mallet round the rim.

Coldbrook Sit

Morning sit · 10 min

Circle the rim to ring the bell. The session begins as the water settles.

still water · circle the rim, or hold Space

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/singing-bowl

Props

modes
number
default 5
The highest petal order rubbing can reach, 2 (four petals) to 8 (sixteen).
damping
number
default 0.4
How fast the singing dies, 0 (rings on and on) to 1 (dies at once).
metal
"brass" | "bronze" | "copper" | "pewter" | string
default "brass"
The bowl's metal: a preset, or any CSS colour.
sensitivity
number
default 0.5
How much each circle of the rim puts into the water, 0 to 1.
rings
number
default 5
How many standing rings run inward at full energy, 2 to 8.
glint
number
default 0.6
The rim's highlights and its glint, 0 (satin) to 1 (polished).
waterColor
string
default a dark tint of the metal
The colour of the bowl's floor seen through the water, any CSS colour.
interactive
boolean
default true
The pointer and touch rub and strike the rim. Keys still do.
paused
boolean
default false
Hold the water still: the pattern stays where it is.
label
string
default "Singing bowl"
The bowl's accessible name.
sound
boolean
default false
Hum while the bowl sings. Off unless asked for.
onSingingChange
(singing: boolean) => void
default —
Fires as the bowl starts and stops singing.
onModeChange
(petals: number) => void
default —
Fires as the number of petals at the rim changes while it sings.
seed
number
default 2
Seeds the brushing on the rim and the hammer marks in the floor.
disabled
boolean
default false
Nothing reaches the bowl and its button is disabled.
dpr
number
default 2
Cap on the canvas's device pixel ratio, at most 2.
className
string
default "size-56"
Sizes the bowl; it is a circle fitted to the box.