# Atmosphere map

Built from the completed `18-sleep` source. `engine.js` is unchanged. This alternative uses plain HTML, CSS, JavaScript and native Web Audio.

## Interaction

- The map is the primary composition control. Horizontal position means calm to restless; upward movement means close to spacious.
- Drag, click, use arrow keys for 2% steps, or Shift + arrow for 10% steps. Home chooses calm and close; End chooses restless and spacious. Native, labelled axis sliders give an equivalent control for keyboard and assistive technology.
- A gesture changes generated-atmosphere movement, cutoff frequency, resonance, LFO rate and motion depth. Vertical position changes the existing reverb send, which affects the whole mix. A gesture selects low-pass filtering and LFO motion targeting volume and frequency, so the mapped synthesis changes remain audible even after a custom scene used bypass or manual motion.
- Pointer changes are grouped into one update per animation frame. The engine's existing AudioParam smoothing glides between parameter targets. The map leaves room decay unchanged, avoiding impulse rebuilding during a gesture.
- The side readout shows actual engine values, including resonance and reverb send. The point projects movement and room send when a scene or direct control supplies custom settings; moving it applies the map's parameter relationship again.
- Map gestures never start playback. Sound starts through the existing explicit Start or timer buttons.

## Preserved controls

The Details panel contains all original environment, direction, intensity, movement, source-level, event-selection/timing/preview, music, treatment, import, noise/filter, envelope, modulation, room-decay, scene-storage and sleep-timer controls. The original workshop remains a nested disclosure. Every original element ID remains available.

Scenes store all mapped engine settings through the existing scene snapshot. Browser scene and recording storage use a separate `sound-studies-20` namespace so this alternative does not change the source app's stored scenes or imports. Audio catalog URLs continue to reference the supplied shared local audio files.

## Checks and limits

- JavaScript syntax checks passed for the changed map code and copied app/scene code.
- A static HTML check confirmed that all original control IDs remain and no duplicate IDs were added.
- `engine.js` was compared byte-for-byte with `18-sleep` and is unchanged.
- The parent agent owns browser and audio checks. This implementation task did not open a browser or start a server.
- Reverb and modulation behavior inherit the source engine's implementation. Saved browser data stays local to this app address.

The first complete implementation is preserved in `attempts/001/`. Its catalog uses the extra relative parent directories needed to reach the same supplied audio files from that deeper folder.
