Add shared piano recording/playback and mono key fallback

This commit is contained in:
Jage9
2026-02-23 00:36:36 -05:00
parent b4cf85ac44
commit 93b9d19455
13 changed files with 484 additions and 61 deletions

View File

@@ -81,6 +81,8 @@ Applies to effect select, user/item list modes, item selection, item property li
- `W E T Y U O P ]`: Play sharps
- Multiple keys can be held/played at once
- `-` / `=`: Shift octave down/up
- `,`: Start/stop recording on this piano (max 30s)
- `.`: Play back saved recording on this piano
- `Escape`: Exit piano mode
## Help Viewer Mode

View File

@@ -183,6 +183,8 @@
- `release`: integer, range `0-100`, default `35`.
- `brightness`: integer, range `0-100`, default `55`.
- `emitRange`: integer, range `5-20`, default `15`.
- `recording`: server-managed array of note events (`t`, `keyId`, `midi`, `on`) captured from piano mode recording.
- `recordingLengthMs`: server-managed recording duration in milliseconds (`0..30000`).
## Packet Shapes

View File

@@ -173,6 +173,8 @@ This is behavior-focused documentation for item types and their defaults.
### Use
- Announces that the user begins playing the piano (client enters piano key mode).
- Piano mode controls include `,` to start/stop recording (max 30s) and `.` to play saved recording.
- Recordings are stored on the item (server-authoritative), so nearby users hear playback.
### Validation
- `instrument`: `piano | electric_piano | guitar | organ | bass | violin | synth_lead | brass | nintendo | drum_kit`

View File

@@ -16,6 +16,7 @@ This is a behavior guide for packet semantics beyond raw schemas.
- `ping`: latency measurement.
- `item_add`, `item_pickup`, `item_drop`, `item_delete`, `item_use`, `item_update`: item actions.
- `item_piano_note`: realtime piano note on/off for active piano use mode.
- `item_piano_recording`: piano record/playback control (`toggle_record`, `playback`).
## Server -> Client