Skip to content

PC Nest Speaker 1.5.3 — responsive mode (4-knob latency tighten)

Choose a tag to compare

@Kepners Kepners released this 11 May 15:12

PC Nest Speaker 1.5.3

"Responsive mode" — coordinated 4-knob latency tighten across server and receiver.

What changed

Server (http-pcm-server.js)

Knob 1.5.2 1.5.3 Effect
-frame_duration 20 ms 10 ms Halves Opus encoder lookahead (~10 ms latency). Per-frame overhead grows slightly; encoding efficiency at 192 k VBR drops ~3-5% — not perceptually audible
-cluster_time_limit 40 ms 20 ms WebM clusters now carry 2 × 10 ms frames instead of 2 × 20 ms. Receiver sees fresh data twice as often

Receiver (receiver-audio.html)

Knob 1.5.2 1.5.3 Effect
TARGET_LAG 0.30 s 0.18 s Direct subtract from steady-state pause/resume latency
SOFT_LAG 0.80 s 0.50 s playbackRate = 1.05 engages earlier — drift corrected before audible
HARD_LAG 1.50 s 0.90 s Hard-seek to live edge fires sooner

Estimated total impact

~150–700 ms reduction on a typical pause/resume cycle, depending on how much drift had accumulated.

Trade-off — when 1.5.3 might NOT be the right choice

1.5.3 is tuned for clean home LAN. On a noisy Wi-Fi (interference, contention, distant access point) the smaller TARGET_LAG (180 ms) leaves less headroom for jitter — you'll hear more micro-glitches as drift management hard-seeks more often.

If 1.5.3 sounds glitchy where 1.5.2 was clean, it's a network problem, not a build regression. Tightening the envelope made us notice it. Two options if that happens:

  • Stay on v1.5.2 for noisy networks
  • Future: expose TARGET_LAG / HARD_LAG as a setting so users can pick "responsive" vs "stable" themselves

Confirmed unchanged from 1.5.1/1.5.2

  • Audio quality bitrate: 192 kbps VBR with -application audio (music-tuned)
  • Volume sync fan-out across all group members (1.5.2 fix)
  • Force-relaunch of receiver page on every cast (so new receiver code lands)
  • WebM init segment captured + prepended to each new client (the fix without which MSE/<audio> silently parks data)

Files changed

  • src/main/http-pcm-server.js — FFmpeg args (frame_duration, cluster_time_limit)
  • pcnestspeaker-receiver/receiver-audio.html — drift management constants
  • package.json — version bump

Sources used in tuning