How johnheibel/pdoomvideo works
This repository contains a hand-painted, lyric-driven music video: the browser studio renders time-indexed scenes, and the renderer captures frames and can combine them with the included song. The main creative workflow moves through nine timed chapters, with recurring characters, stage props, and shared drawing helpers supporting them. The README documents the studio and export workflow; sampled source confirms character and rendering responsibilities, but does not expose all chapter registration or browser wiring, so those links are kept at subsystem level.
Main entry points: timeline.js Scene timeline · render.mjs Frame renderer · ch Chapters 4–6 · studio.html Studio page
Components 17
Video scenes
- Scene timeline
src/timeline.js - Lyrics timing
src/lyrics.js - Chapters 1–3
src/ch - Chapters 4–6
src/ch - Chapters 7–9
src/ch
Shared visuals
- Clawd character
src/clawd.js - Researcher character
src/cast.js - Stage and props
src/props.js - Paint and timing helpers
src/core.js
Browser studio
- Studio page
studio.html
Frame and video export
- Frame renderer
render.mjs - Rendered frames
- Encoded music video
Other components
- Video creator
- Included song
assets/pdoom.mp3 - Chrome browser
- FFmpeg encoder
Connections 17
- Video creator → Studio page: opens
- Studio page → Scene timeline: renders scenes
- Scene timeline → Lyrics timing: uses timing
- Scene timeline → Chapters 1–3: dispatches
- Scene timeline → Chapters 4–6: dispatches
- Scene timeline → Chapters 7–9: dispatches
- Chapters 1–3 → Clawd character: draws
- Chapters 4–6 → Researcher character: draws
- Chapters 4–6 → Stage and props: draws
- Chapters 7–9 → Stage and props: draws
- Frame renderer → Chrome browser: opens page
- Chrome browser → Studio page: renders frames
- Frame renderer → Rendered frames: writes
- Frame renderer → FFmpeg encoder: encodes with
- Frame renderer → Included song: reads audio
- FFmpeg encoder → Rendered frames: reads
- FFmpeg encoder → Encoded music video: writes