From 8521d08e9a4277d896e648207ada2fcfd380abd1 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sun, 4 Oct 2026 23:36:46 -0700 Subject: [PATCH] Add Whistlegraph TV entry and reduce native speech gain --- fedac/native/WGTV.md | 22 ++++++++++++++++++++++ fedac/native/pieces/wgtv.mjs | 8 ++++++++ fedac/native/src/audio.c | 2 +- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 fedac/native/WGTV.md create mode 100644 fedac/native/pieces/wgtv.mjs diff --git a/fedac/native/WGTV.md b/fedac/native/WGTV.md new file mode 100644 index 0000000000..90812916c9 --- /dev/null +++ b/fedac/native/WGTV.md @@ -0,0 +1,22 @@ +# Whistlegraph TV + +The phone discovers AC OS through `_http._tcp` Bonjour and checks `/status`. +It uploads a content-addressed piece and a `wgtv.mjs` receiver through lanserv, +verifies both files, then enters `wgtv`. Painted phone checkpoints update the +receiver. A separate `/pieces/wgtv-status.json` heartbeat carries the current +phase; changing progress never reloads the artwork. Stale progress disappears. + +The bundled phone adapter supplies web oval, color and box semantics plus a +Comic Relief status line for existing receivers. Artwork executes on the TV: +its clock and interactions are independent of the phone. This is not screen +mirroring, and unimplemented native APIs can still prevent a piece from running. + +The October 4 development check compared the same wgDefen v7 source at a fixed +clock and 480 simulation ticks, at 640×360. The web runtime and actual HDMI +capture matched on 98.415% of pixels (mean channel difference 0.128/255). +This checks one piece, not universal rendering equivalence. + +On ac0 the development HDMI route is `AC_AUDIO_DEVICE=wgtv_hdmi`, an ALSA plug +for `hw:0,3` at 48 kHz stereo. TTS gain was reduced from 2.5 to 0.65 without +changing synth gain. Those live receiver/binary changes are temporary until a +normal oven-built firmware release is flashed; no OTA has been published here. diff --git a/fedac/native/pieces/wgtv.mjs b/fedac/native/pieces/wgtv.mjs new file mode 100644 index 0000000000..f88558e67f --- /dev/null +++ b/fedac/native/pieces/wgtv.mjs @@ -0,0 +1,8 @@ +// wgtv, 26.10.04 +// Receive Whistlegraph pieces from a phone on the same local network. +export function paint({wipe, ink, write, screen}) { + wipe(22, 17, 27); + ink(255, 236, 217); + write('Open TV in Whistlegraph', {x:12, y:screen.height-30, font:'6x10'}); + write('Choose this AC OS device', {x:12, y:screen.height-16, font:'6x10'}); +} diff --git a/fedac/native/src/audio.c b/fedac/native/src/audio.c index afac6b23ea..edaab7b7f3 100644 --- a/fedac/native/src/audio.c +++ b/fedac/native/src/audio.c @@ -2623,7 +2623,7 @@ ACAudio *audio_init(void) { audio->tts_buf = calloc(audio->tts_buf_size, sizeof(float)); audio->tts_read_pos = 0; audio->tts_write_pos = 0; - audio->tts_volume = 2.5f; // Boost flite output (naturally quiet) + audio->tts_volume = 0.65f; // Keep system speech below full-scale music; avoid the old 2.5x boost. snprintf(audio->audio_device, sizeof(audio->audio_device), "none"); snprintf(audio->audio_status, sizeof(audio->audio_status), "initializing"); -- 2.51.2