How mexicat/pdoom-video works
This repository creates a deterministic, lyric-synchronized music video: audio and lyric analysis produce timing data; the timeline uses those data to schedule illustrated plates; the renderer composes frames for browser preview or offline export. The graph groups related plates rather than listing every scene module. Analysis and rendering links reflect the README and sampled source; unsampled scene internals are represented only at their supported directory path.
Main entry points: engine.ts Render engine · scene.ts Scene interface · timeline.ts Scene timeline · main.ts Preview and export entry
Components 26
Audio analysis
- Source lyrics
lyrics/lyrics.src.js - Lyric alignment
analysis/align.py - Music analysis
analysis/analyze.py
Timing and edit
- Word timings
data/lyrics.json - Beat and audio data
data/audio.json - Scene timeline
app/src/timeline.ts
Frame renderer
- Preview and export entry
app/src/main.ts - Render engine
app/src/engine/engine.ts - Audio data access
app/src/engine/audio.ts - Lyric data access
app/src/engine/lyrics.ts - Scene interface
app/src/engine/scene.ts - WebGL compositor
app/src/engine/gl.ts - Post-processing
app/src/engine/post.ts - Karaoke and HUD
app/src/engine/hud.ts - Typography
app/src/engine/type.ts - Stroke fonts
app/src/engine/stroke.ts - Offline render driver
app/scripts/render.ts
Video plates
- Opening and prompts
app/src/scenes - Hooks and rooms
app/src/scenes - Space and ascent
app/src/scenes - Turn and paperclips
app/src/scenes - Fuse and training
app/src/scenes - Loom and outro
app/src/scenes
Other components
- Song audio
- Browser viewer
- Encoded video
Connections 27
- Song audio → Lyric alignment: analyzes vocals
- Source lyrics → Lyric alignment: aligns words
- Lyric alignment → Word timings: writes timings
- Song audio → Music analysis: analyzes stems
- Music analysis → Beat and audio data: writes beat data
- Word timings → Scene timeline: anchors cuts
- Beat and audio data → Scene timeline: snaps beats
- Scene timeline → Preview and export entry: builds edit
- Preview and export entry → Render engine: initializes and drives
- Render engine → Audio data access: loads audio data
- Render engine → Lyric data access: loads lyric data
- Render engine → Scene timeline: requests entries
- Render engine → Scene interface: loads and renders
- Scene interface → Opening and prompts: implements plates
- Scene interface → Hooks and rooms: implements plates
- Scene interface → Space and ascent: implements plates
- Scene interface → Turn and paperclips: implements plates
- Scene interface → Fuse and training: implements plates
- Scene interface → Loom and outro: implements plates
- Render engine → WebGL compositor: composites frames
- Render engine → Post-processing: applies effects
- Render engine → Karaoke and HUD: overlays captions
- Render engine → Typography: loads fonts
- Render engine → Stroke fonts: loads stroke fonts
- Browser viewer → Preview and export entry: opens preview
- Offline render driver → Preview and export entry: drives export mode
- Offline render driver → Encoded video: encodes frames