Add piano mono/poly, octave, and expanded drum voice set

This commit is contained in:
Jage9
2026-02-23 00:22:36 -05:00
parent 019e49802d
commit 29eb6a63e3
17 changed files with 338 additions and 72 deletions

View File

@@ -76,7 +76,7 @@ Applies to effect select, user/item list modes, item selection, item property li
## Piano Use Mode
- `1-9`: Switch instrument preset quickly
- `1-9` (and `0` for the 10th slot): Switch instrument preset quickly
- `A S D F G H J K L ; '`: Play white keys (C major from C4 upward)
- `W E T Y U O P ]`: Play sharps
- Multiple keys can be held/played at once

View File

@@ -163,6 +163,8 @@
```json
{
"instrument": "piano",
"voiceMode": "poly",
"octave": 0,
"attack": 15,
"decay": 45,
"release": 35,
@@ -172,8 +174,10 @@
```
- `instrument`: one of
`piano | electric_piano | guitar | organ | bass | violin | synth_lead | nintendo | drum_kit`.
- Selecting a new instrument resets `attack`/`decay` to that instrument's defaults.
`piano | electric_piano | guitar | organ | bass | violin | synth_lead | brass | nintendo | drum_kit`.
- `voiceMode`: one of `poly | mono`.
- `octave`: integer, range `-2..2` (default `0`; bass defaults to `-1`).
- Selecting a new instrument resets `voiceMode`/`octave`/`attack`/`decay`/`release`/`brightness` to that instrument's defaults.
- `attack`: integer, range `0-100`, default `15`.
- `decay`: integer, range `0-100`, default `45`.
- `release`: integer, range `0-100`, default `35`.
@@ -235,8 +239,12 @@
"midi": 60,
"on": true,
"instrument": "piano",
"voiceMode": "poly",
"octave": 0,
"attack": 15,
"decay": 45,
"release": 35,
"brightness": 55,
"x": 12,
"y": 8,
"emitRange": 15

View File

@@ -157,6 +157,8 @@ This is behavior-focused documentation for item types and their defaults.
- Title: `piano`
- Params:
- `instrument="piano"`
- `voiceMode="poly"`
- `octave=0`
- `attack=15`
- `decay=45`
- `release=35`
@@ -173,13 +175,15 @@ This is behavior-focused documentation for item types and their defaults.
- Announces that the user begins playing the piano (client enters piano key mode).
### Validation
- `instrument`: `piano | electric_piano | guitar | organ | bass | violin | synth_lead | nintendo | drum_kit`
- `instrument`: `piano | electric_piano | guitar | organ | bass | violin | synth_lead | brass | nintendo | drum_kit`
- `voiceMode`: `poly | mono`
- `octave`: integer `-2..2`
- `attack`: integer `0..100`
- `decay`: integer `0..100`
- `release`: integer `0..100`
- `brightness`: integer `0..100`
- `emitRange`: integer `5..20`
- Instrument changes reset `attack`/`decay`/`release`/`brightness` to instrument defaults.
- Instrument changes reset `voiceMode`/`octave`/`attack`/`decay`/`release`/`brightness` to instrument defaults.
## Adding A New Item Type (Registry V1)

View File

@@ -38,7 +38,7 @@ This is a behavior guide for packet semantics beyond raw schemas.
- `item_use_sound` contains absolute item world coordinates (`x`, `y`) and sound path.
- `item_piano_note` contains:
- `itemId`, `senderId`, `keyId`, `midi`, `on`
- resolved `instrument`, `attack`, `decay`, `emitRange`
- resolved `instrument`, `voiceMode`, `octave`, `attack`, `decay`, `release`, `brightness`, `emitRange`
- absolute source coordinates `x`, `y`
## Welcome Metadata