Files
Conal Mullan 290d7d345b Adopt uv for Python dependency management (#33 rebased, thanks @AsharibAli) (#59)
* Adopt uv for Python dependency management

Replace manual pip/venv setup with `uv sync` (pyproject.toml + uv.lock),
and switch all tool invocations across docs, skills, commands, and
examples to `uv run`. Optional extras: --extra whisper, --extra modal.
tools/requirements.txt is kept as a pip fallback.

* FIX: bring uv migration current with main — post-June deps and docs

Adds websocket-client (60db websocket transport) to core deps and a
'youtube' extra for the google-* packages (tools/youtube_upload.py),
regenerates uv.lock, bumps pyproject version to 0.18.0, and converts the
51 'python3 tools/…' invocations added since the PR was opened (60db,
YouTube, Kiro docs, publish command) to 'uv run'. Verified with
uv sync --frozen --extra youtube; voiceover, sixtydb_tts, youtube_upload
and migrate_to_kiro all run through the project environment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Asharib Ali <asharibarain4@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 22:55:43 +01:00
..

ds-crt-stinger

A 6-second brand stinger that opens with a pixel-art astronaut waving in an amber-phosphor CRT, then crossfades into the digitalsamba wordmark — grunged and glowing so it reads as part of the same CRT world rather than pasted over it.

ds-crt-stinger preview

What this example demonstrates

  1. LTX-2.3 with a style LoRA — uses the crt-terminal LoRA (tools/ltx2.py --lora crt-terminal) to generate the CRT footage end-to-end from a text prompt. No reference image needed.
  2. Post-processing a raster logo to match generated footage — make_grungy_logo.py tints the monochrome-white wordmark, adds a phosphor halo, applies scanlines, chromatic aberration, and grain so it visually belongs next to the LTX-2 output.
  3. Audio-anchored moviepy composite — build.py crossfades the CRT clip into the grunged logo with a coordinated audio fade, ending on a 1s hold on the brand mark.

Files

File Purpose
build.py moviepy composite (CRT clip → crossfade → grungy logo hold)
make_grungy_logo.py Tints the white SVG logo and applies CRT grunge effects
logo-ds-white.svg Monochrome-white variant of the DS wordmark, derived from the brand SVG
ds_boot_astro.mp4 Pre-rendered LTX-2 output (astronaut in amber CRT). Kept so you can run build.py without paying for a Modal generation.
ds_stinger_astro.gif The final stinger as a 384px GIF for README embedding

Run it

# From the toolkit root:
uv sync   # moviepy, Pillow, numpy
brew install librsvg                               # rsvg-convert (one-time)

cd examples/ds-crt-stinger
uv run build.py                                   # → ds_stinger_astro.mp4

The first run auto-rasterises the white SVG and bakes the grungy logo. Subsequent runs reuse the cached intermediates.

Regenerate the CRT footage

Skip this unless you want a different prompt, palette, or composition. The committed ds_boot_astro.mp4 works out of the box.

The LTX-2 step requires the Modal LTX-2 endpoint to be deployed (see docs/modal-setup.md) and costs ~$0.30 per take.

# From the toolkit root:
uv run tools/ltx2.py \
  --lora crt-terminal --seed 42 \
  --prompt 'a CRT aesthetic with heavy scanlines and bloom, warm amber phosphor glow, chromatic aberration, a chunky pixel-art cartoon astronaut in a rounded white spacesuit with a reflective dome helmet, slowly floating in zero gravity and waving cheerfully at the camera, a few small twinkling stars in the dark background, static centered composition, low choppy frame rate, friendly retro arcade mood' \
  --output examples/ds-crt-stinger/ds_boot_astro.mp4

Palette swaps

The grungy-logo builder ships three palettes. Regenerate a different phosphor color:

uv run make_grungy_logo.py amber   # warm orange — default
uv run make_grungy_logo.py coral   # deeper red, closer to DS brand coral
uv run make_grungy_logo.py green   # classic hacker phosphor

Then pass the palette to build.py:

uv run build.py astro coral        # astro clip + coral-grunged wordmark

Tuning knobs

In make_grungy_logo.py:

Constant What it does Try
PALETTES[*]["tint"] Core glyph color Brighter RGB for more pop
PALETTES[*]["halo"] Bleed color around the glyphs More saturated for neon; desaturated for subtle
HALO_RADIUS How far the phosphor halo spreads 15 tight / 45 dreamy
SCANLINE_DARKEN Every-other-row darkening 0.55 harsh / 0.85 gentle
RGB_SHIFT_PX Chromatic aberration offset 5–6 for more dramatic
NOISE_STRENGTH Grain amount 0–40

In build.py:

Constant What it does
CROSSFADE Length of the clip→logo handoff (default 1.5s)
LOGO_HOLD How long the logo holds after the crossfade (default 1.0s)

See also