# Sound desk implementation

Built from the complete `18-sleep` source and the request in `prompt.txt`. Only `19-console` was changed.

## Interface choices

- Four source channels use vertical faders. Recorded and generated sources have different strip colours and explicit type labels. The fifth strip controls the final output.
- Play and stop stay at the top. Environment selection and current playback/event text sit directly above the mixer. A sticky navigation bar links to scenes, timer and workshop.
- Intensity, movement, space and warmth sit together beside the channels. Direction controls and their explanation remain below the faders.
- All scene operations, the full timer, event scheduling, recording import, noise/filter, envelope, motion/random bounds and room decay remain reachable. The workshop starts open, and internal links open it if needed.
- Event rows scroll within a limited-height area. Small screens show two source strips per row, then a separate master strip.
- Saved scenes and imported recordings use dedicated `sound-studies-19` storage names, so edits in this alternative do not change the previous app's saved library.

## Preservation and validation

`engine.js`, `catalog.js`, `app.js` and `sleep.js` were copied unchanged. `scenes.js` only changes browser storage names. Native Web Audio, local audio URLs and initial listening levels are preserved. There is no automatic playback.

Static checks passed for JavaScript syntax, duplicate HTML IDs, complete original control/settings coverage and byte-for-byte engine preservation. Browser, audio and responsive interaction checks belong to the parent task and have not been run here.

The first complete interface is preserved in `attempts/001/`. Its local audio and observer paths are adjusted for the deeper folder; it retains its own scripts and styles.
