Wave Garden makes a wave into something you can tend. Frequency changes how tightly the field folds across the canvas; amplitude changes how far it rises and falls. The drawing is generated at runtime, not played from an animation file.

Controls

  • Frequency: 0.5–8, in steps of 0.1; initial value 2.4. This is a visual wave parameter, not an audio frequency in hertz.
  • Amplitude: 0–100%, in steps of 1; initial value 58%. This is a relative drawing parameter, not pixels or sound volume.
  • Reset wave: restore the initial frequency, amplitude and animation phase.
  • Canvas pointer, pen or touch: press and drag. Horizontal position sets frequency; vertical position sets amplitude, with larger amplitude toward the top.
  • Focused canvas keyboard: Left and Right decrease or increase frequency by 0.1; Down and Up decrease or increase amplitude by 5. Home resets the garden.

Tab to reach the sliders or the canvas. The sliders retain their native keyboard operation, so direct dragging is optional. Inputs are bounded to their control ranges.

Try this

  1. Set amplitude low and vary frequency. Notice how the number and spacing of folds change independently of their height.
  2. Keep frequency still and increase amplitude. Compare the silhouette rather than looking for a score.
  3. Drag slowly from bottom-left to top-right: both parameters now change together.
  4. Focus the canvas and use the arrow keys to make small adjustments, then press Home to return to the starting composition.
flowchart LR
  X[Horizontal input] --> F[Frequency]
  Y[Vertical input] --> A[Amplitude]
  F --> S[Sine field]
  A --> S
  S --> C[Canvas paths]

The sine idea

The basic model is y = centre + amplitude × sin(2π × frequency × position + phase). Increasing frequency places more cycles in the same horizontal space; increasing amplitude moves the path farther from its centre. Multiple related paths produce the garden’s layered appearance. Phase offsets distinguish layers without loading a texture or image.

The implemented garden draws nine layers. Each combines a fundamental with a second harmonic at one-fifth strength, under the envelope 0.35 + 0.65 × sin(πu) for horizontal position u from 0 to 1. The amplitude slider scales the displacement to at most 16% of the canvas height before that combination is applied. Layer-specific phase offsets and baselines make the shared signal read as a field.

The visual units are chosen for play, not laboratory measurement. Canvas dimensions determine the pixel scale, so a larger viewport changes the available drawing area without making the controls into physical units.

Motion and limits

Under reduced motion, the garden does not continuously advance its animation. Changing a control or interacting with the canvas still produces a fresh drawing. This makes the parameter relationship available without requiring perpetual motion.

Wave Garden is silent. Its amplitude is unrelated to Resonant Steps output volume. For the shared rendering rules and asset boundary, see technique. Return to the playground guide or continue to orbit-lattice.