OBS scene utilities for ATProto PDX meetups sites.wisp.place/graham.systems/obs
0

Configure Feed

Select the types of activity you want to include in your feed.

rename scene.html to index.html

it is the only page, and the root URL now works for local preview and
any future hosting.

graham.systems (Jul 14, 2026, 1:35 PM -0700) fb66ab0b 653655f2

+5 -5
+1 -1
DESIGN.md
··· 37 37 38 38 ## OBS integration 39 39 40 - One page (scene.html) serves the whole stream via the `window.obsstudio` API; it stays resident rather than reloading per scene. 40 + One page (index.html) serves the whole stream via the `window.obsstudio` API; it stays resident rather than reloading per scene. 41 41 42 42 - `obsSceneChanged` maps the scene name to a mode (keyword match) and swaps the copy block with the staggered text entrance. The text-zone tile dimming and scrim ease in/out with the text (textWeight 0..1). 43 43 - `obsStreamingStarted` is the big moment: a wavefront of rose flips radiates from board center while the text replays its entrance.
+1 -1
PRODUCT.md
··· 10 10 11 11 ## Product Purpose 12 12 13 - A full-screen procedural background (1920x1080) for the ATProto PDX meetup stream: one self-contained HTML file (scene.html) used as a single persistent OBS Browser Source across every scene. It renders a graphic Truchet tile board whose winding paths rearrange themselves one snappy tile-flip at a time, and reacts to OBS state via the injected window.obsstudio API: scene changes swap it between Starting Soon / Thank You / text-free background modes, and going live triggers a board-wide ripple with the text entrance. Success: the scenes look intentional and designed after video compression, idle at negligible CPU/GPU cost, and give the wait a sense that something is about to happen. 13 + A full-screen procedural background (1920x1080) for the ATProto PDX meetup stream: one self-contained HTML file (index.html) used as a single persistent OBS Browser Source across every scene. It renders a graphic Truchet tile board whose winding paths rearrange themselves one snappy tile-flip at a time, and reacts to OBS state via the injected window.obsstudio API: scene changes swap it between Starting Soon / Thank You / text-free background modes, and going live triggers a board-wide ripple with the text entrance. Success: the scenes look intentional and designed after video compression, idle at negligible CPU/GPU cost, and give the wait a sense that something is about to happen. 14 14 15 15 ## Brand Personality 16 16
+3 -3
README.md
··· 2 2 3 3 One procedural background for the whole meetup stream: a Truchet tile board of winding 4 4 paths that quietly rearranges itself, one snappy rose tile-flip at a time. A single 5 - self-contained page ([scene.html](scene.html), fonts embedded, no network needed) watches 5 + self-contained page ([index.html](index.html), fonts embedded, no network needed) watches 6 6 OBS state through the injected `window.obsstudio` API and recasts itself per scene: 7 7 8 8 - **Starting Soon** — copy block with date/time, lively cadence (a flip every second or so) ··· 20 20 Add **one** Browser Source and reuse it in every scene that wants the board: 21 21 22 22 1. Leave **Local file** unchecked and put the file path in **URL** so you can pass 23 - parameters: `file:///C:/Users/graha/Projects/atproto-pdx-scenes/scene.html?when=Thursday, July 16 · 6:30 PM` 23 + parameters: `file:///C:/Users/graha/Projects/atproto-pdx-scenes/index.html?when=Thursday, July 16 · 6:30 PM` 24 24 2. **Width** 1920, **Height** 1080 25 25 3. **FPS** 30 (check "Use custom frame rate") — the page also caps itself at 30 26 26 4. Leave **Shutdown source when not visible** and **Refresh browser when scene becomes ··· 60 60 ## Previewing outside OBS 61 61 62 62 Open the page in any browser (`python -m http.server 8143`, then 63 - `http://localhost:8143/scene.html`). Without `window.obsstudio` the entrance plays on 63 + `http://localhost:8143/`). Without `window.obsstudio` the entrance plays on 64 64 load, and keyboard controls stand in for OBS events: 65 65 66 66 | Key | Action |
scene.html index.html