diff --git a/CLAUDE.md b/CLAUDE.md index a30e235..6e5c62e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -53,7 +53,7 @@ Repo: https://gitea.apointless.space/bsncubed/aes67-ESP32-P4 - [ ] 4. AES67 TX with a 1 kHz test tone, PTP-paced; /stream.sdp. Verify: import SDP on a Riedel Artist 4-wire AES67 port, and check packets/timestamps in Wireshark. Done and checked with a receiver script (all ptimes, L16/L24, tone phase-locked to PTP); still open: the Riedel import and a Wireshark capture. - [x] 5. SAP discovery, then syslog, then health/temperatures (one at a time). VLAN split moved to phase 2. -- [x] 6. PTP TimeTransmitter: BMCA roles (auto/master), hybrid mode. +- [x] 6. PTP TimeTransmitter: BMCA roles (slave/auto; the separate "master" role was dropped later, auto with a low priority1 does the same), hybrid mode. - [ ] 7. Sources: HLS player, then cspot (Spotify Connect), then failover + /api/player. - [x] 7.1-7.4 HLS plays on AES67 (PSRAM ring, TS demux + AAC, 44.1 -> 48 kHz). Tested with Triple J Hottest (TS, AAC-LC 44.1k). - [ ] Come back to HLS (open items): @@ -73,6 +73,15 @@ Repo: https://gitea.apointless.space/bsncubed/aes67-ESP32-P4 - Open: `aes67_tx resync` (TX 20-27 ms late) ~11 s after each switch to Spotify (seen 3 times); clicks at switches not yet checked in a recording; HLS start sometimes hits CDN read timeouts. - [x] /api/player: GET, transport, seek, volume (the app follows), source override and url (runtime, not saved); web UI progress bar. - [ ] 8. Mono sum, gain, polish. + - [x] Mono sum: stereo source mapped to a 1-channel stream in the core ((L+R)/2, 64 bit). Checked: 156 B packets, SDP L24/48000/1. + - [x] Gain: source.gain_db as a trim on top of the volume, saturating. Checked: -12 dB = -12 dB peak, +12 dB clips at 0 dBFS. + - [x] Pink noise source (-18 dBFS RMS, octaves flat within 0.4 dB 63 Hz-4 kHz). + - [x] 48 kHz only (96 kHz dropped: all sources are 48 kHz). + - [x] Network: status mask/gw/dns, UI shows the lease; static IP (reboot on change, validation). + - [x] Web UI: sticky save bar, dark default + light toggle, progress bar, PTP panel (2 min average offset, details), uptime d/h/m/s, VLAN option hidden, no hw_ts / preferred-TimeTransmitter options. + - [x] Versioning `-`; tools/flash_board.py (tested on this board); docs/user-guide.md. + - [ ] Autoplay stream on boot: the checkbox exists but has no effect (HLS always starts). Implement (start paused) or remove. + - [ ] Mute at 0 % volume: confirm on the board. ## Phase 2 (parked) - [ ] VLAN split: AES67 untagged + internet tagged (inet.vlan_id/pcp), per aes67-core-base.md "Network". Needs a tagged VLAN with DHCP on the switch port. Config group `inet` and the UI fields exist already; nothing is applied yet. The "VLAN split" checkbox is hidden in web/index.html (`