# Ausiomixer HID Protocol VID=`0x2E8A` PID=`0xA541` Composite USB: **CDC** (debug printf) + **HID** (mixer reports), vendor usage page `0xFF00`. ## Input report (Pico → Host) — 8 bytes | Offset | Field | |--------|-------| | 0 | `report_id = 1` | | 1 | `enc1_delta` (int8) — scroll selection | | 2 | `enc2_delta` (int8) — selected session volume steps | | 3 | flags: bit0=E1 SW, bit1=E2 SW | | 4 | pot `0..100` — system master | | 5..7 | reserved | ## Output report (Host → Pico) — 64 bytes | Offset | Field | |--------|-------| | 0 | `report_id = 2` | | 1 | `session_count` | | 2 | `selected_index` | | 3 | `master_vol` `0..100` | | 4 | `page_start` | | 5 | `n_visible` (`0..5`) | | 6.. | slots × `n_visible` | Each slot (11 bytes): `vol` (1) + UTF-8 name (9) + `NUL` (1). ## Controls | Hardware | Action | |----------|--------| | Encoder 1 | Change selected session | | Encoder 2 | Change volume of selected session (±2% per click on host) | | Pot GP26 | Absolute master volume | | SW | Logged (E1/E2); reserved | ## Run 1. Flash `build/ausiomixer.uf2` 2. `dotnet run --project host/Ausiomixer.Host` 3. Play audio in Windows; names appear on the ILI9341 (320×240)