---
name: ensemble-reel
description: Author a paced showcase with repeated input across representative interfaces, a musical drop, a synchronized output reel and an executable closing command.
version: 1.0.5
---

# Ensemble Reel

Create a 25.2-second editable HTML/CSS/SVG + GSAP film and render it through HyperFrames. The supplied local print tool produces twelve SVG artworks. Its three modes are `orbit`, `canopy` and `woven`; it is a bounded parameterized example, not an arbitrary natural-language artwork generator.

## Run

Requires Node.js 22+, Python 3, FFmpeg, and a browser supported by HyperFrames. Run `npm ci --no-audit --no-fund` in this directory. Dependencies are pinned by the lockfile and installed from their official npm packages, including their notices. No model keys or paid services are required.

Create a UTF-8 JSON brief containing `name`, `request`, `description`, `mode`, `accent` (hex RGB), and `language` (`en` or `zh-CN`). Limits: name 30 characters, request 36, description 56. Then:

```
node create.mjs brief.json project
npx hyperframes check project
npx hyperframes beats project
npx hyperframes render project --fps 30 --quality high --workers 1 --output film.mp4
```

The generator runs the local artwork tool and synthesizes an original score, keeps music and effect stems, then actually mixes them with FFmpeg. It writes an editable event timeline, HTML, CSS, motion script, SVG artwork, storyboard and frame grid. For a soundtrack edit, change `tools/score.py`, regenerate and re-render. Inspect timing and listen before calling a mix approved.

## Direct the film

The opening establishes one request. Four original representative interfaces show that same string, with progressively faster typing. These are illustrative interface shapes, not integrations with named software. The local CLI is the demonstrated execution surface; do not claim four live integrations.

The score expands from sparse notes to bass and percussion at 9.6 seconds. Twelve actual SVG outputs cut on a 100 BPM grid: longer introductions, beat-length cuts, then half-beat accents and a final hold. Camera movement continues within each cut. The final executable command remains still. Every plate is generated before the film is assembled; do not substitute invented evidence for a real product's outputs.

For another product, an author must supply licensed outputs, confirm any integrations, adapt the scene code and validate the closing command. Keep one canonical request, a frame-snapped cut grid, one visible output per frame and deterministic reverse seeking. Match the grid to the actual music when changing tracks; do not merely shift the picture to an unrelated beat file.

## Validate

Compare the first unplayed frame with a later return to zero. Seek in both directions across every interface and reel cut. Inspect encoded frames on either side of each cut. Decode the whole MP4 and measure its audio streams. Play at normal speed and retain actual dropped-frame counts; keep failures with their disposition. Check fonts and text bounds in every language. Test two different English briefs and a separate multilingual stress case after contract changes. Package changes require a version bump and fresh-extraction rerender.

## Rights

The print algorithms and music synthesis in this package are project-authored resources, licensed under MIT (LICENSE). Runtime and font packages retain their own licenses. The generator copies the complete font package, with its OFL notice; GSAP's notice is preserved in its bundled header and available in the installed package. Users supply rights for external output footage and music. Interface illustrations carry no third-party affiliation.
