# RCWeb DAW

The **RCWeb DAW** (`app/daw`) is a browser-based music workstation for sketching short arrangements in an RCWeb room.

![icon](pwa-512x512.png "RCWeb DAW App Icon")

## Overview

DAW gives you a piano-roll editor, five built-in instruments, a small mixer, and local Web Audio playback. It is useful for quickly building loops, trying song ideas, or sharing a browser-made arrangement with another screen in the same room.

## How to use

1. Open `/daw/` in a browser.
2. Start from the empty arrangement, or choose **Menu > Examples** to load a demo song.
3. Select a track in the mixer: Piano, Synth Pluck, Strings, Drums, or Bass.
4. Drag on the piano-roll grid to draw notes. Drag notes to move them, drag their right edge to resize them, and right-click a note to delete it.
5. Use the transport controls to play, pause, stop, loop, change BPM, set swing, choose the grid size, and change the song length.
6. Adjust each track with volume, pan, tone, reverb, delay, mute, and solo controls.
7. Use **Menu > Share** to show a QR code for the current room, and **Menu > Send** to copy your current arrangement to other open DAW tabs in that room.

## Features

- Five synthesized instruments with no sample files to load.
- Melodic piano-roll editing for Piano, Synth Pluck, Strings, and Bass.
- Labelled drum lanes for Kick, Snare, Toms, Closed Hat, and Open Hat.
- Mixer controls for balancing, shaping, muting, and soloing tracks.
- Master volume, BPM, swing, loop, quantize, and bar-length controls.
- Playback follow mode that keeps the playhead visible while the song runs.
- Built-in examples: Simple Build, Birthday Layers, Pixel Runner, Grand Anthem, Velocity Loop, Clockwork Counterpoint, Moonlit Waltz, and Stormlight Finale.

## Room Sharing

DAW is not a live multi-user editor. Your note, mixer, and transport edits stay local until you choose **Menu > Send**. Sending pushes the current arrangement, tempo, mixer, and master settings to other `daw` clients in the same RCWeb room.

Playback is local on each device. Each browser starts, stops, and grants audio permission independently, so press **Play** on the browser that should make sound.
