@autoaiai/aicut 0.1.7 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MANUAL.md +10 -0
- package/package.json +1 -1
- package/product.json +2 -1
- package/skills/30x-web-to-video/SKILL.md +421 -0
- package/skills/30x-web-to-video/examples/INDEX.md +26 -0
- package/skills/30x-web-to-video/references/animations.md +539 -0
- package/skills/30x-web-to-video/references/audio.md +256 -0
- package/skills/30x-web-to-video/references/components.md +340 -0
- package/skills/30x-web-to-video/references/lottie.md +174 -0
- package/skills/30x-web-to-video/references/visual-effects.md +157 -0
- package/skills/30x-web-to-video/remotion-best-practices/rules/audio.md +169 -0
- package/skills/30x-web-to-video/remotion-best-practices/rules/calculate-metadata.md +134 -0
- package/skills/30x-web-to-video/remotion-best-practices/rules/charts.md +120 -0
- package/skills/30x-web-to-video/remotion-best-practices/rules/compositions.md +154 -0
- package/skills/30x-web-to-video/remotion-best-practices/rules/ffmpeg.md +38 -0
- package/skills/30x-web-to-video/remotion-best-practices/rules/fonts.md +152 -0
- package/skills/3d-asset-generation/SKILL.md +142 -0
- package/skills/action-fight-prompt/SKILL.md +136 -0
- package/skills/action-fight-prompt/references/camera-and-impact.md +64 -0
- package/skills/action-fight-prompt/references/example-15s-duel.md +59 -0
- package/skills/action-fight-prompt/references/scene-patterns.md +80 -0
- package/skills/ad-creative-video/SKILL.md +205 -0
- package/skills/ad-creative-video/references/batch-ad-pipeline.md +289 -0
- package/skills/ad-creative-video/references/platform-specs.md +72 -0
- package/skills/after-effects/SKILL.md +123 -0
- package/skills/after-effects/references/export-recipes.md +168 -0
- package/skills/after-effects/references/expression-library.md +184 -0
- package/skills/after-effects/references/expressions.md +134 -0
- package/skills/after-effects/references/performance-triage.md +138 -0
- package/skills/after-effects/references/project-hygiene.md +188 -0
- package/skills/ai-media-quality-review/SKILL.md +72 -0
- package/skills/ai-product-video/SKILL.md +296 -0
- package/skills/ai-product-video/references/aesthetic-rules.md +177 -0
- package/skills/ai-product-video/references/final-review.md +110 -0
- package/skills/ai-product-video/references/guided-free-creation.md +194 -0
- package/skills/ai-product-video/references/music-beat-sync.md +219 -0
- package/skills/ai-product-video/references/pipeline.md +392 -0
- package/skills/ai-product-video/references/sequences/promo-energy-arc.md +50 -0
- package/skills/ai-product-video/references/shots/ATTRIBUTION.md +65 -0
- package/skills/ai-product-video/references/shots/camera/basic-3d-scene.md +37 -0
- package/skills/ai-product-video/references/shots/camera/crash-zoom-punch.md +39 -0
- package/skills/ai-product-video/references/shots/camera/cursor-flyover.md +38 -0
- package/skills/ai-product-video/references/shots/camera/depth-layer-moves.md +40 -0
- package/skills/ai-product-video/references/shots/camera/graze-face-tour.md +57 -0
- package/skills/aicut/SKILL.md +4 -4
- package/skills/aicut/references/commands.md +15 -15
- package/skills/aicut/references/film-format.md +1 -1
- package/skills/aicut/references/recipes.md +4 -4
- package/skills/aicut/references/troubleshooting.md +2 -2
- package/skills/aicut-motion/SKILL.md +6 -6
- package/skills/aicut-motion/references/design-systems/README.md +1 -1
- package/skills/aicut-motion/references/pages.md +1 -1
- package/skills/anidoodle/SKILL.md +185 -0
- package/skills/anidoodle/references/anatomy.md +91 -0
- package/skills/anidoodle/references/backends-and-adapters.md +82 -0
- package/skills/anidoodle/references/camera.md +148 -0
- package/skills/anidoodle/references/craft-bar.md +72 -0
- package/skills/anidoodle/references/determinism-and-contract.md +46 -0
- package/skills/anidoodle/references/formats.md +121 -0
- package/skills/anidoodle/references/motion-grammar.md +234 -0
- package/skills/anidoodle/references/music/compose.md +388 -0
- package/skills/anidoodle/references/music/sound-design.md +245 -0
- package/skills/anidoodle/references/music/sounds-licenses.md +69 -0
- package/skills/anidoodle/references/music/styles/lofi-electronic.md +112 -0
- package/skills/anidoodle/references/music/styles/music-box.md +57 -0
- package/skills/animated-component-libraries/SKILL.md +820 -0
- package/skills/animated-component-libraries/references/customization_guide.md +699 -0
- package/skills/animated-component-libraries/references/magic_ui_components.md +422 -0
- package/skills/animated-component-libraries/references/react_bits_components.md +587 -0
- package/skills/animated-infographic/SKILL.md +211 -0
- package/skills/animated-infographic/references/sequenced-infographic.md +286 -0
- package/skills/appshot-core/SKILL.md +872 -0
- package/skills/article-highlights/SKILL.md +151 -0
- package/skills/avatar-mix/SKILL.md +301 -0
- package/skills/bang-motion/SKILL.md +583 -0
- package/skills/bang-motion/references/ae-bridge-higgsfield.md +160 -0
- package/skills/bang-motion/references/anti-ppt.md +110 -0
- package/skills/bang-motion/references/architecture.md +188 -0
- package/skills/bang-motion/references/explainer.md +579 -0
- package/skills/bang-motion/references/kartun-panggung.md +221 -0
- package/skills/bang-motion/references/opener-konsep.md +817 -0
- package/skills/bang-motion/references/roadmap.md +85 -0
- package/skills/bang-motion/references/techniques.md +690 -0
- package/skills/beat-sync-edit/SKILL.md +148 -0
- package/skills/book-video-factory/SKILL.md +139 -0
- package/skills/book-video-factory/references/first-run.md +50 -0
- package/skills/book-video-factory/references/paper-collage-explainer.md +127 -0
- package/skills/book-video-factory/references/quality-gates.md +87 -0
- package/skills/book-video-production/SKILL.md +211 -0
- package/skills/brag/SKILL.md +195 -0
- package/skills/brag/references/audio.md +312 -0
- package/skills/brag/references/step-1-inspect.md +125 -0
- package/skills/brag/references/step-2-plan.md +234 -0
- package/skills/brag/references/step-3-compose.md +199 -0
- package/skills/brag/references/step-4-deliver.md +141 -0
- package/skills/brag/references/tones.md +231 -0
- package/skills/brand-setup/SKILL.md +228 -0
- package/skills/brewreel/SKILL.md +491 -0
- package/skills/brewreel/docs/broll.en.md +252 -0
- package/skills/brewreel/docs/broll.md +252 -0
- package/skills/brewreel/docs/custom-shot.en.md +66 -0
- package/skills/brewreel/docs/custom-shot.md +103 -0
- package/skills/brewreel/docs/faq.en.md +90 -0
- package/skills/brewreel/docs/faq.md +90 -0
- package/skills/brewreel/docs/features.en.md +157 -0
- package/skills/brewreel/docs/features.md +157 -0
- package/skills/brewreel/docs/gallery.en.md +44 -0
- package/skills/brewreel/docs/gallery.md +44 -0
- package/skills/brewreel/docs/how-it-works.en.md +64 -0
- package/skills/brewreel/docs/how-it-works.md +64 -0
- package/skills/caption-animation/SKILL.md +216 -0
- package/skills/caption-animation/references/word-timed-captions.md +254 -0
- package/skills/cartcut-editing/SKILL.md +615 -0
- package/skills/cartcut-editing/references/html-typography.md +277 -0
- package/skills/cassette-video-edit/SKILL.md +129 -0
- package/skills/ccvideo/SKILL.md +264 -0
- package/skills/chekhov-dramaturgy/SKILL.md +367 -0
- package/skills/chekhov-dramaturgy/reference.md +375 -0
- package/skills/chengfeng-check-updates/SKILL.md +283 -0
- package/skills/cinematic-product-promo-skill/SKILL.md +295 -0
- package/skills/cinematic-product-promo-skill/references/aesthetic-rules.md +187 -0
- package/skills/cinematic-product-promo-skill/references/final-review.md +116 -0
- package/skills/cinematic-product-promo-skill/references/guided-free-creation.md +199 -0
- package/skills/cinematic-product-promo-skill/references/jianying-export.md +183 -0
- package/skills/cinematic-product-promo-skill/references/music-beat-sync.md +257 -0
- package/skills/cinematic-product-promo-skill/references/pipeline.md +393 -0
- package/skills/cinematic-product-promo-skill/references/sequences/promo-energy-arc.md +50 -0
- package/skills/cinematic-product-promo-skill/references/shots/ATTRIBUTION.md +65 -0
- package/skills/cinematic-product-promo-skill/references/shots/camera/basic-3d-scene.md +37 -0
- package/skills/cinematic-product-promo-skill/references/shots/camera/crash-zoom-punch.md +39 -0
- package/skills/cinematic-product-promo-skill/references/shots/camera/cursor-flyover.md +38 -0
- package/skills/cinematic-product-promo-skill/references/shots/camera/depth-layer-moves.md +40 -0
- package/skills/claude-gif/SKILL.md +211 -0
- package/skills/claude-gif/references/gif-optimization.md +209 -0
- package/skills/claude-gif/references/perfect-loops.md +295 -0
- package/skills/claude-gif/references/platform-specs.md +138 -0
- package/skills/claude-gif/references/prompt-engineering.md +211 -0
- package/skills/claude-gif/references/remotion-gif.md +560 -0
- package/skills/codex-video-pipeline/SKILL.md +213 -0
- package/skills/codex-video-pipeline/examples/ai-meeting-notes/INPUT.md +10 -0
- package/skills/codex-video-pipeline/examples/ai-meeting-notes/expected/action-list.md +22 -0
- package/skills/codex-video-pipeline/references/captions.md +39 -0
- package/skills/codex-video-pipeline/references/cover-system.md +72 -0
- package/skills/codex-video-pipeline/references/cross-platform.md +77 -0
- package/skills/codex-video-pipeline/references/example-run.md +54 -0
- package/skills/codex-video-pipeline/references/first-run.md +130 -0
- package/skills/codex-video-pipeline/references/project-contract.md +54 -0
- package/skills/codex-video-pipeline/references/quality-gates.md +44 -0
- package/skills/codex-video-pipeline/references/research-and-script.md +50 -0
- package/skills/collage-broll-explainers/SKILL.md +429 -0
- package/skills/create-onboarding-video/SKILL.md +233 -0
- package/skills/cs-shotcraft-skill/SKILL.md +218 -0
- package/skills/cs-shotcraft-skill/references/aesthetic-rules.md +207 -0
- package/skills/cs-shotcraft-skill/references/camera-table.md +88 -0
- package/skills/cs-shotcraft-skill/references/engineering.md +132 -0
- package/skills/cs-shotcraft-skill/references/final-review.md +118 -0
- package/skills/cs-shotcraft-skill/references/guided-free-creation.md +199 -0
- package/skills/cs-shotcraft-skill/references/jianying-export.md +183 -0
- package/skills/cs-shotcraft-skill/references/music-beat-sync.md +257 -0
- package/skills/cs-shotcraft-skill/references/pipeline.md +408 -0
- package/skills/cs-shotcraft-skill/references/product-machine.md +56 -0
- package/skills/cs-shotcraft-skill/references/sequences/promo-energy-arc.md +50 -0
- package/skills/cs-shotcraft-skill/references/shots/ATTRIBUTION.md +65 -0
- package/skills/cs-shotcraft-skill/references/shots/camera/basic-3d-scene.md +37 -0
- package/skills/cut-video/SKILL.md +387 -0
- package/skills/cyxj-hyperframes-overlay/SKILL.md +75 -0
- package/skills/cyxj-remotion-evolve/SKILL.md +123 -0
- package/skills/cyxj-remotion-evolve-vibe-motion/SKILL.md +123 -0
- package/skills/demo-video-creation-skill/SKILL.md +152 -0
- package/skills/demo-video-creation-skill/references/capture-workflow.md +74 -0
- package/skills/demo-video-creation-skill/references/qc-checklist.md +61 -0
- package/skills/demo-video-creation-skill/references/remotion-ffmpeg.md +94 -0
- package/skills/demo-video-creation-skill/references/storytelling.md +86 -0
- package/skills/demo-video-creation-skill/references/visual-system.md +83 -0
- package/skills/demoday/SKILL.md +148 -0
- package/skills/develop-premiere-pro-mcp/SKILL.md +131 -0
- package/skills/diagram-animation/SKILL.md +200 -0
- package/skills/diagram-animation/references/diagram-and-chart-recipes.md +218 -0
- package/skills/diagram-tour/SKILL.md +287 -0
- package/skills/diagram-tour/examples/agent-architecture/agent-architecture-tour.md +78 -0
- package/skills/docvideoer/SKILL.md +139 -0
- package/skills/draftcut/SKILL.md +104 -0
- package/skills/draftcut/docs/agent-bootstrap.md +64 -0
- package/skills/draftcut/docs/approvals.md +45 -0
- package/skills/draftcut/docs/audio-first-migration.md +35 -0
- package/skills/draftcut/docs/configuration.md +54 -0
- package/skills/draftcut/docs/getting-started.md +63 -0
- package/skills/draftcut/docs/harness-case-study.en.md +23 -0
- package/skills/draftcut/docs/harness-case-study.md +47 -0
- package/skills/draftcut/references/01-plan.md +30 -0
- package/skills/draftcut/references/03-deliver.md +26 -0
- package/skills/draftcut/references/04-reference-theme-prompt.md +7 -0
- package/skills/draftcut/references/05-social-loudness.md +58 -0
- package/skills/draftcut/references/06-modern-components.md +72 -0
- package/skills/easyedit/SKILL.md +66 -0
- package/skills/erduo-broll-loop-engineering/SKILL.md +136 -0
- package/skills/erduo-broll-loop-engineering/references/animation-craft.md +208 -0
- package/skills/erduo-broll-loop-engineering/references/first-run-onboarding.md +107 -0
- package/skills/erduo-broll-loop-engineering/references/handoff-template.md +70 -0
- package/skills/erduo-broll-loop-engineering/references/motion-layout-lint.md +122 -0
- package/skills/erduo-broll-loop-engineering/references/parent-review-checklist.md +171 -0
- package/skills/erduo-broll-loop-engineering/references/prompt-first-workflow.md +322 -0
- package/skills/erduo-broll-loop-engineering/references/remotion-backend.md +334 -0
- package/skills/erduo-broll-loop-engineering/references/runtime/remotion-hyperframes-map.md +76 -0
- package/skills/erduo-broll-loop-engineering/references/runtime/runtime-contract.md +174 -0
- package/skills/erduo-broll-loop-engineering/references/runtime/runtime-selection.md +135 -0
- package/skills/erduo-broll-loop-engineering/references/shotcraft/remotion-sources/SOURCE.md +7 -0
- package/skills/erduo-broll-loop-engineering/references/shotcraft/upstream-attribution.md +65 -0
- package/skills/explainer-assets/SKILL.md +98 -0
- package/skills/explainer-video/SKILL.md +146 -0
- package/skills/framewright/SKILL.md +324 -0
- package/skills/framewright/references/audio.md +230 -0
- package/skills/framewright/references/guide.md +276 -0
- package/skills/framewright/references/painting.md +425 -0
- package/skills/framewright/references/photo.md +75 -0
- package/skills/framewright/references/questionnaire.md +115 -0
- package/skills/framewright/references/styles.md +388 -0
- package/skills/framewright/references/troubleshooting.md +119 -0
- package/skills/framewright/references/world.md +215 -0
- package/skills/gbro-collage-broll/SKILL.md +435 -0
- package/skills/gbro-collage-info/SKILL.md +135 -0
- package/skills/gbro-collage-info/references/motion-grammar.md +66 -0
- package/skills/gbro-collage-info/references/production.md +67 -0
- package/skills/gbro-collage-info/references/style-system.md +38 -0
- package/skills/gemini-tts/SKILL.md +208 -0
- package/skills/gemini-tts/references/prompting-guide.md +169 -0
- package/skills/gen/SKILL.md +282 -0
- package/skills/ghost-editor/SKILL.md +437 -0
- package/skills/ghost-editor/docs/HOW-IT-WORKS.md +82 -0
- package/skills/ghost-editor/docs/PLAYBOOK.md +139 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/audio.md +17 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/audioqa.md +13 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/captions.md +20 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/fonts.md +17 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/kinetic.md +22 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/looks.md +22 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/matte.md +20 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/models.md +11 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/runtime.md +13 -0
- package/skills/ghost-editor/docs/THIRD_PARTY/shaders.md +15 -0
- package/skills/git-story-film/SKILL.md +220 -0
- package/skills/git-story-film/examples/raven-story/FONTS.md +8 -0
- package/skills/git-story-film/examples/raven-story/OUTLINE.md +93 -0
- package/skills/git-story-film/references/craft.md +148 -0
- package/skills/git-story-film/references/directing.md +185 -0
- package/skills/git-story-film/references/forms.md +150 -0
- package/skills/git-story-film/references/production.md +150 -0
- package/skills/git-story-film/references/story.md +137 -0
- package/skills/git-story-film/references/text-and-fonts.md +90 -0
- package/skills/guizang-product-video-skill/SKILL.md +96 -0
- package/skills/guizang-product-video-skill/references/audio-and-qa.md +113 -0
- package/skills/guizang-product-video-skill/references/audio-sourcing.md +80 -0
- package/skills/guizang-product-video-skill/references/case-study.md +63 -0
- package/skills/guizang-product-video-skill/references/component-pipeline.md +86 -0
- package/skills/guizang-product-video-skill/references/cover.md +43 -0
- package/skills/guizang-product-video-skill/references/direction.md +91 -0
- package/skills/guizang-product-video-skill/references/onboarding.md +98 -0
- package/skills/guizang-product-video-skill/references/repo-and-style.md +44 -0
- package/skills/guizang-product-video-skill/references/review.md +38 -0
- package/skills/guizang-product-video-skill/references/starter.md +168 -0
- package/skills/guizang-product-video-skill/references/story-and-copy.md +88 -0
- package/skills/guizang-product-video-skill/references/visual-vocabulary.md +78 -0
- package/skills/guofeng-paper-video/SKILL.md +159 -0
- package/skills/guofeng-paper-video/style/design.md +43 -0
- package/skills/guofeng-paper-video/style/palette.md +21 -0
- package/skills/guofeng-paper-video/style/prompts/01-/345/210/206/351/225/234/350/241/250.md +19 -0
- package/skills/guofeng-paper-video/style/prompts/02-/347/224/237/346/210/220/347/272/270/347/211/207.md +37 -0
- package/skills/guofeng-paper-video/style/prompts/03-/351/205/215/351/237/263/350/204/232/346/234/254.md +27 -0
- package/skills/guofeng-paper-video/style//345/210/206/351/225/234/344/270/216/345/233/276/345/261/202/350/247/204/350/214/203.md +67 -0
- package/skills/guofeng-paper-video/style//347/272/270/347/211/207/347/264/240/346/235/220/350/247/204/350/214/203.md +29 -0
- package/skills/hand-drawn-explainer-video-nikola/SKILL.md +113 -0
- package/skills/hand-drawn-explainer-video-nikola/docs/ARCHITECTURE.md +18 -0
- package/skills/hand-drawn-explainer-video-nikola/docs/CONFIGURATION.md +22 -0
- package/skills/hand-drawn-explainer-video-nikola/docs/STYLES.md +28 -0
- package/skills/hand-drawn-explainer-video-nikola/docs/TROUBLESHOOTING.md +35 -0
- package/skills/hand-drawn-explainer-video-nikola/examples/program-animation/skill-demo/DESIGN.md +24 -0
- package/skills/hand-drawn-explainer-video-nikola/references/automation-workflow.md +67 -0
- package/skills/hand-drawn-explainer-video-nikola/references/output-example.md +79 -0
- package/skills/hand-drawn-explainer-video-nikola/references/preflight-and-recovery.md +49 -0
- package/skills/hand-drawn-explainer-video-nikola/references/style-guide.md +82 -0
- package/skills/hand-drawn-explainer-video-nikola/references/style-selection-and-updates.md +39 -0
- package/skills/hand-drawn-explainer-video-nikola/references/upstream-whiteboard-review.md +30 -0
- package/skills/hand-drawn-explainer-video-nikola/references/voiceover.md +37 -0
- package/skills/hbg-life-simulation/SKILL.md +285 -0
- package/skills/hbg-life-simulation/references/image-generation.md +53 -0
- package/skills/hbg-life-simulation/references/local-account-api.md +112 -0
- package/skills/hbg-life-simulation/references/opening-system.md +45 -0
- package/skills/hbg-life-simulation/references/project-spec.md +62 -0
- package/skills/hbg-life-simulation/references/render-and-qa.md +107 -0
- package/skills/hbg-life-simulation/references/storyboarding.md +69 -0
- package/skills/hbg-life-simulation/references/style-system.md +80 -0
- package/skills/hbg-life-simulation/references/visual-system.md +44 -0
- package/skills/heygen-avatar/SKILL.md +489 -0
- package/skills/heygen-avatar/references/asset-routing.md +86 -0
- package/skills/heygen-avatar/references/avatar-creation.md +181 -0
- package/skills/heygen-avatar/references/troubleshooting.md +137 -0
- package/skills/heytea-doodle-poster/SKILL.md +132 -0
- package/skills/heytea-doodle-poster/references/desktop-pet-character-modes.md +103 -0
- package/skills/heytea-doodle-poster/references/desktop-pet-environment.md +122 -0
- package/skills/heytea-doodle-poster/references/desktop-pet-pack.md +106 -0
- package/skills/heytea-doodle-poster/references/desktop-pet-workflow.md +264 -0
- package/skills/heytea-doodle-poster/references/evaluation.md +246 -0
- package/skills/heytea-doodle-poster/references/lettering-guide.md +213 -0
- package/skills/heytea-doodle-poster/references/mixed-media-style-guide.md +101 -0
- package/skills/heytea-doodle-poster/references/monster-poster-workflow.md +56 -0
- package/skills/heytea-doodle-poster/references/style-guide.md +412 -0
- package/skills/heytea-doodle-poster-hosted/SKILL.md +132 -0
- package/skills/heytea-doodle-poster-hosted/references/desktop-pet-character-modes.md +103 -0
- package/skills/heytea-doodle-poster-hosted/references/desktop-pet-environment.md +122 -0
- package/skills/heytea-doodle-poster-hosted/references/desktop-pet-pack.md +106 -0
- package/skills/heytea-doodle-poster-hosted/references/desktop-pet-workflow.md +264 -0
- package/skills/heytea-doodle-poster-hosted/references/evaluation.md +246 -0
- package/skills/heytea-doodle-poster-hosted/references/lettering-guide.md +213 -0
- package/skills/heytea-doodle-poster-hosted/references/mixed-media-style-guide.md +101 -0
- package/skills/heytea-doodle-poster-hosted/references/monster-poster-workflow.md +56 -0
- package/skills/heytea-doodle-poster-hosted/references/style-guide.md +412 -0
- package/skills/html2video/SKILL.md +290 -0
- package/skills/html2video/references/cjk-type.md +173 -0
- package/skills/html2video/references/editorial.md +145 -0
- package/skills/html2video/references/narration.md +111 -0
- package/skills/html2video/references/pitfalls.md +238 -0
- package/skills/html2video/references/shots.md +198 -0
- package/skills/html2video/references/storyboard.md +323 -0
- package/skills/hyperdirector/SKILL.md +202 -0
- package/skills/hyperdirector/docs/audio-workflow.md +160 -0
- package/skills/hyperdirector/docs/audio-workflow.zh-CN.md +244 -0
- package/skills/hyperdirector/docs/brand-kit-setup.md +322 -0
- package/skills/hyperdirector/docs/brand-kit-setup.zh-CN.md +277 -0
- package/skills/hyperdirector/docs/cursor-development-notes.md +474 -0
- package/skills/hyperdirector/docs/faq.md +285 -0
- package/skills/hyperdirector/docs/faq.zh-CN.md +198 -0
- package/skills/hyperdirector/docs/first-video.md +320 -0
- package/skills/hyperdirector/docs/first-video.zh-CN.md +265 -0
- package/skills/hyperdirector/docs/installation.md +254 -0
- package/skills/hyperdirector/docs/installation.zh-CN.md +222 -0
- package/skills/hyperdirector/docs/quickstart.md +203 -0
- package/skills/hyperframes/SKILL.md +117 -0
- package/skills/hyperframes/references/captions.md +46 -0
- package/skills/hyperframes/references/film.md +48 -0
- package/skills/hyperframes/references/format.md +158 -0
- package/skills/hyperframes/references/look.md +69 -0
- package/skills/hyperframes/references/motion.md +95 -0
- package/skills/hyperframes/references/overlays.md +39 -0
- package/skills/hyperframes/references/review.md +51 -0
- package/skills/hyperframes/references/runtimes.md +69 -0
- package/skills/hyperframes/references/skill-lifecycle.md +49 -0
- package/skills/hyperframes/references/sound.md +43 -0
- package/skills/hyperframes/references/spec.md +76 -0
- package/skills/hyperframes/references/story.md +103 -0
- package/skills/hyperframes-motion-director/SKILL.md +920 -0
- package/skills/hyperframes-motion-director/references/asset-choreography-and-render-qa.md +185 -0
- package/skills/hyperframes-motion-director/references/audio-sync.md +83 -0
- package/skills/hyperframes-motion-director/references/design-engineering.md +156 -0
- package/skills/hyperframes-motion-director/references/gsap-choreography.md +202 -0
- package/skills/hyperframes-motion-director/references/hyperframes-stability.md +99 -0
- package/skills/hyperframes-motion-director/references/imagegen-asset-pipeline.md +227 -0
- package/skills/hyperframes-motion-director/references/motion-background-system.md +165 -0
- package/skills/hyperframes-motion-director/references/motion-craft.md +182 -0
- package/skills/hyperframes-motion-director/references/premium-product-promo.md +287 -0
- package/skills/hyperframes-motion-director/references/text-over-background-layout.md +221 -0
- package/skills/hyperframes-motion-director/references/visual-standard.md +174 -0
- package/skills/hyperframes-motion-director/references/workflow.md +320 -0
- package/skills/hypit/SKILL.md +367 -0
- package/skills/hypit/references/creation/brief.md +93 -0
- package/skills/hypit/references/creation/script-and-time.md +259 -0
- package/skills/hypit/references/creation/transformations.md +143 -0
- package/skills/hypit/references/playbooks/craft/b-roll.md +94 -0
- package/skills/hypit/references/playbooks/craft/caption-tracking.md +126 -0
- package/skills/hypit/references/playbooks/craft/captions.md +253 -0
- package/skills/hypit/references/playbooks/craft/generated-dependencies.md +38 -0
- package/skills/hypit/references/playbooks/craft/graphic-compositions.md +85 -0
- package/skills/hypit/references/playbooks/craft/motion-graphics.md +68 -0
- package/skills/hypit/references/playbooks/craft/screen-demonstrations.md +51 -0
- package/skills/hypit/references/playbooks/craft/sound-mix.md +70 -0
- package/skills/hypit/references/playbooks/formats/narration-led-demo.md +87 -0
- package/skills/image/SKILL.md +153 -0
- package/skills/image/references/characters.md +86 -0
- package/skills/image/references/creative-direction.md +137 -0
- package/skills/image/references/de-slop.md +95 -0
- package/skills/image/references/dimensional.md +88 -0
- package/skills/image/references/editing.md +112 -0
- package/skills/image/references/golden-rules.md +198 -0
- package/skills/image/references/gpt-image.md +228 -0
- package/skills/image/references/models.md +78 -0
- package/skills/image/references/multi-panel.md +354 -0
- package/skills/image/references/nano-banana.md +150 -0
- package/skills/image/references/patterns/character-design.md +150 -0
- package/skills/image/references/patterns/ecommerce.md +124 -0
- package/skills/image-smixs/SKILL.md +153 -0
- package/skills/image-smixs/references/characters.md +86 -0
- package/skills/image-smixs/references/creative-direction.md +137 -0
- package/skills/image-smixs/references/de-slop.md +95 -0
- package/skills/image-smixs/references/dimensional.md +88 -0
- package/skills/image-smixs/references/editing.md +112 -0
- package/skills/image-smixs/references/golden-rules.md +198 -0
- package/skills/image-smixs/references/gpt-image.md +228 -0
- package/skills/image-smixs/references/models.md +78 -0
- package/skills/image-smixs/references/multi-panel.md +354 -0
- package/skills/image-smixs/references/nano-banana.md +150 -0
- package/skills/image-smixs/references/patterns/character-design.md +150 -0
- package/skills/image-smixs/references/patterns/ecommerce.md +124 -0
- package/skills/image-story-video-wizard/SKILL.md +148 -0
- package/skills/image-story-video-wizard/docs/ARTICLE_ALIGNMENT.md +29 -0
- package/skills/image-story-video-wizard/references/host-routing.md +44 -0
- package/skills/image-story-video-wizard/references/state-schema.md +79 -0
- package/skills/image-story-video-wizard/references/workflow.md +203 -0
- package/skills/image-story-video-wizard/references/writing-and-review.md +60 -0
- package/skills/ip-as-logo/SKILL.md +151 -0
- package/skills/ip-as-logo-s1dashu/SKILL.md +151 -0
- package/skills/jtxvideo-skill/SKILL.md +337 -0
- package/skills/kinetic-reel/SKILL.md +140 -0
- package/skills/kinetic-reel/examples/work-reel-26/STORYBOARD.md +51 -0
- package/skills/kinetic-reel/references/sound.md +40 -0
- package/skills/kinetic-reel/references/style-guide.md +79 -0
- package/skills/knowledge-explainer-skill/SKILL.md +149 -0
- package/skills/knowledge-explainer-skill/examples/ai_video_3steps.md +61 -0
- package/skills/knowledge-explainer-skill/examples/algorithm_bubble.md +20 -0
- package/skills/knowledge-explainer-skill/examples/before_after_demo.md +38 -0
- package/skills/knowledge-explainer-skill/examples/cta_outro.md +11 -0
- package/skills/knowledge-explainer-skill/examples/double_pendulum.md +20 -0
- package/skills/knowledge-explainer-skill/examples/paper_fold.md +20 -0
- package/skills/knowledge-explainer-skill/examples/script.md +40 -0
- package/skills/lanshu-create-ai-presenter-video/SKILL.md +253 -0
- package/skills/lanshu-create-ai-presenter-video/references/editing.md +67 -0
- package/skills/lanshu-create-ai-presenter-video/references/generation.md +94 -0
- package/skills/lanshu-create-ai-presenter-video/references/qa-recovery.md +83 -0
- package/skills/lanshu-create-ai-presenter-video/references/styled-explainer.md +189 -0
- package/skills/laoxu-video-script/SKILL.md +117 -0
- package/skills/laoxu-video-script/references/cases.md +305 -0
- package/skills/laoxu-video-script/references/de-ai.md +32 -0
- package/skills/laoxu-video-script/references/diagnostics.md +67 -0
- package/skills/laoxu-video-script/references/format.md +62 -0
- package/skills/laoxu-video-script/references/formulas.md +43 -0
- package/skills/laoxu-video-script/references/method.md +115 -0
- package/skills/laoxu-video-script/references/motifs-and-lines.md +829 -0
- package/skills/laoxu-video-script/references/persona.md +38 -0
- package/skills/laoxu-video-script/references/qihao-path.md +35 -0
- package/skills/laoxu-video-script/references/qihao-xinfa.md +39 -0
- package/skills/laoxu-video-script/references/redlines.md +26 -0
- package/skills/lemo-opuscar/SKILL.md +67 -0
- package/skills/lipnardo/SKILL.md +308 -0
- package/skills/lipnardo/examples/batch-personalized.md +44 -0
- package/skills/lipnardo/examples/photo-to-avatar-pipeline.md +56 -0
- package/skills/lipnardo/examples/single-video.md +44 -0
- package/skills/lipnardo/references/avatar-types.md +42 -0
- package/skills/lipnardo/references/credit-costs.md +39 -0
- package/skills/lipnardo/references/error-codes.md +66 -0
- package/skills/lipnardo/references/heygen-api-reference.md +416 -0
- package/skills/ll-video-decomposer/SKILL.md +105 -0
- package/skills/ll-video-decomposer/references/audiovisual-analysis-guide.md +44 -0
- package/skills/ll-video-decomposer/references/evidence-and-confidence-rules.md +41 -0
- package/skills/ll-video-decomposer/references/multi-video-comparison-template.md +48 -0
- package/skills/ll-video-decomposer/references/single-video-report-template.md +47 -0
- package/skills/ll-video-decomposer/references/tool-discovery-workflow.md +30 -0
- package/skills/ll-video-decomposer/references/transcription-routing.md +65 -0
- package/skills/ll-video-decomposer/references/video-acquisition-workflow.md +30 -0
- package/skills/ltx2-video/SKILL.md +193 -0
- package/skills/ltx2-video/references/mode_ux.md +293 -0
- package/skills/make-ai-short/SKILL.md +130 -0
- package/skills/make-blender-education-video/SKILL.md +247 -0
- package/skills/make-blender-education-video/references/evidence-and-explanation.md +62 -0
- package/skills/make-blender-education-video/references/github-workflow-discovery.md +55 -0
- package/skills/make-blender-education-video/references/production-workflow.md +62 -0
- package/skills/make-blender-education-video/references/story-patterns.md +65 -0
- package/skills/make-blender-education-video/references/visual-quality.md +82 -0
- package/skills/manage-storyboard-projects/SKILL.md +128 -0
- package/skills/manim-composer/SKILL.md +176 -0
- package/skills/manim-composer/references/narrative-patterns.md +125 -0
- package/skills/manim-composer/references/scene-examples.md +216 -0
- package/skills/manim-composer/references/visual-techniques.md +223 -0
- package/skills/manim-composer/templates/scenes-template.md +147 -0
- package/skills/monet-ai-editor-monet/SKILL.md +367 -0
- package/skills/motion-graphics/SKILL.md +206 -0
- package/skills/motion-graphics/references/craft.md +136 -0
- package/skills/motion-graphics/references/engine.md +130 -0
- package/skills/motion-graphics/references/export.md +67 -0
- package/skills/motion-graphics/references/physics.md +100 -0
- package/skills/motion-graphics/references/verify.md +124 -0
- package/skills/motion-video/SKILL.md +133 -0
- package/skills/motion-video/references/audio-and-beat-sync.md +109 -0
- package/skills/motion-video/references/composition-contract.md +107 -0
- package/skills/motion-video/references/production-pipeline.md +147 -0
- package/skills/motion-video/references/style-comic-spiderverse.md +87 -0
- package/skills/motion-video/references/style-glass-keynote.md +69 -0
- package/skills/motion-video-maker/SKILL.md +1452 -0
- package/skills/motion-video-maker/reference/components.md +451 -0
- package/skills/motion-video-maker/reference/workflow.md +190 -0
- package/skills/motioncraft/SKILL.md +221 -0
- package/skills/motioncraft/references/animation-system.md +57 -0
- package/skills/motioncraft/references/assets-and-licensing.md +21 -0
- package/skills/motioncraft/references/customization.md +52 -0
- package/skills/motioncraft/references/gpu-cloud-render.md +15 -0
- package/skills/motioncraft/references/music.md +43 -0
- package/skills/motioncraft/references/phase1-planning-and-preview.md +74 -0
- package/skills/motioncraft/references/phase2-timeline-audio.md +33 -0
- package/skills/motioncraft/references/phase3-pixel-review.md +13 -0
- package/skills/motioncraft/references/phase4-templates.md +30 -0
- package/skills/motioncraft/references/preflight.md +27 -0
- package/skills/motioncraft/references/qa.md +53 -0
- package/skills/motioncraft/references/reference-analysis.md +37 -0
- package/skills/narrator-ai-cli/SKILL.md +256 -0
- package/skills/narrator-ai-cli/references/magic-video.md +205 -0
- package/skills/narrator-ai-cli/references/operations.md +230 -0
- package/skills/narrator-ai-cli/references/resources.md +126 -0
- package/skills/narrator-ai-cli/references/workflows.md +332 -0
- package/skills/newcut-video-clipping/SKILL.md +194 -0
- package/skills/newcut-video-clipping/references/examples.md +59 -0
- package/skills/newcut-video-clipping/references/provider-config.md +110 -0
- package/skills/newcut-video-clipping/references/quality-check.md +35 -0
- package/skills/newcut-video-clipping/references/semantic-plan.md +65 -0
- package/skills/notes-to-video/SKILL.md +476 -0
- package/skills/openchatcut/SKILL.md +100 -0
- package/skills/openchatcut/references/editing-workflow.md +54 -0
- package/skills/openchatcut/references/getting-started.md +106 -0
- package/skills/openchatcut/references/known-errors.md +62 -0
- package/skills/openstoryline-install/SKILL.md +228 -0
- package/skills/orca-motion/SKILL.md +100 -0
- package/skills/orca-motion/references/api.md +100 -0
- package/skills/orca-motion/references/integration.md +59 -0
- package/skills/orca-motion/references/kinetic-type.md +59 -0
- package/skills/orca-motion/references/principles.md +76 -0
- package/skills/package-talking-head-video/SKILL.md +90 -0
- package/skills/package-talking-head-video/docs/EXAMPLES.md +18 -0
- package/skills/package-talking-head-video/docs/TROUBLESHOOTING.md +29 -0
- package/skills/package-talking-head-video/docs/USAGE.md +83 -0
- package/skills/package-talking-head-video/docs/superpowers/plans/2026-08-08-multicolor-center-speaker.md +144 -0
- package/skills/package-talking-head-video/docs/superpowers/plans/2026-08-08-semantic-template-system-v2.md +1099 -0
- package/skills/package-talking-head-video/docs/superpowers/specs/2026-08-08-multicolor-center-speaker-design.md +154 -0
- package/skills/package-talking-head-video/docs/superpowers/specs/2026-08-08-semantic-template-system-v2-design.md +365 -0
- package/skills/package-talking-head-video/examples/auto-editing-0/GATE_A.md +56 -0
- package/skills/package-talking-head-video/examples/auto-editing-0/GATE_D.md +8 -0
- package/skills/package-talking-head-video/examples/auto-editing-0/QA_REPORT.md +34 -0
- package/skills/package-talking-head-video/references/director-rules.md +29 -0
- package/skills/package-talking-head-video/references/motion-and-illustration.md +25 -0
- package/skills/paper-cut/SKILL.md +164 -0
- package/skills/paper-cut/references/asset-spec.md +47 -0
- package/skills/paper-cut/references/audio-and-chatcut.md +26 -0
- package/skills/paper-cut/references/hyperframes-assembly.md +47 -0
- package/skills/paper-cut/references/image-led-production.md +65 -0
- package/skills/paper-cut/references/storyboard-schema.md +48 -0
- package/skills/paper-cut/references/workflow.md +39 -0
- package/skills/personal-ip-brand-intro/SKILL.md +216 -0
- package/skills/personal-ip-brand-intro/references/intake-schema.md +79 -0
- package/skills/personal-ip-brand-intro/references/music-upload-workflow.md +40 -0
- package/skills/personal-ip-brand-intro/references/originality-rules.md +42 -0
- package/skills/personal-ip-brand-intro/references/qa-checklist.md +60 -0
- package/skills/personal-ip-brand-intro/references/rhythm-routing.md +41 -0
- package/skills/personal-ip-brand-intro/references/storyboard-contract.md +42 -0
- package/skills/pixel2motion/SKILL.md +279 -0
- package/skills/pixel2motion/references/html-delivery-template.md +42 -0
- package/skills/pixel2motion/references/motion-personality.md +109 -0
- package/skills/pixel2motion/references/reveal-patterns.md +163 -0
- package/skills/pixel2motion/references/ribbon-fitting.md +90 -0
- package/skills/pixel2motion/references/twelve-principles-for-logos.md +116 -0
- package/skills/premiere-batch-delivery/SKILL.md +71 -0
- package/skills/premiere-pro-mcp/SKILL.md +161 -0
- package/skills/promo-creator-skills/SKILL.md +209 -0
- package/skills/promo-creator-skills/references/mureka_prompt_guide.md +251 -0
- package/skills/promo-creator-skills/references/product_promo_bgm_prompting.md +100 -0
- package/skills/promo-video/SKILL.md +408 -0
- package/skills/qisi-video-remix/SKILL.md +134 -0
- package/skills/qisi-video-remix/examples/creative-plan.md +133 -0
- package/skills/qisi-video-remix/references/delivery-guide.md +63 -0
- package/skills/reel-video/SKILL.md +237 -0
- package/skills/remotion-ad-video/SKILL.md +252 -0
- package/skills/remotion-ad-video/references/ad-aesthetic-qa.md +60 -0
- package/skills/remotion-ad-video/references/ad-brief-contract.md +235 -0
- package/skills/remotion-ad-video/references/ad-exemplars.md +186 -0
- package/skills/remotion-ad-video/references/ad-intake.md +54 -0
- package/skills/remotion-ad-video/references/asset-harvest.md +56 -0
- package/skills/remotion-ad-video/references/audio-caption-system.md +202 -0
- package/skills/remotion-ad-video/references/concept-contract.md +128 -0
- package/skills/remotion-ad-video/references/creative-direction.md +146 -0
- package/skills/remotion-ad-video/references/fast-test-workflow.md +86 -0
- package/skills/remotion-ad-video/references/game-ad-patterns.md +75 -0
- package/skills/remotion-ad-video/references/hyperframes-output.md +90 -0
- package/skills/remotion-ad-video/references/industry-angle-library.md +71 -0
- package/skills/remotion-ads/SKILL.md +278 -0
- package/skills/remotion-ads/references/ad-copywriting.md +229 -0
- package/skills/remotion-ads/references/animations.md +693 -0
- package/skills/remotion-ads/references/brand-config-template.md +355 -0
- package/skills/remotion-ads/references/captions.md +529 -0
- package/skills/remotion-ads/references/carousels.md +580 -0
- package/skills/remotion-ads/references/components.md +897 -0
- package/skills/remotion-ads/references/copy-frameworks.md +144 -0
- package/skills/remotion-ads/references/formats.md +436 -0
- package/skills/remotion-ads/references/gemini-tts.md +473 -0
- package/skills/remotion-ads/references/html-in-canvas.md +555 -0
- package/skills/remotion-ads/references/local-assets.md +543 -0
- package/skills/remotion-ads/references/music.md +656 -0
- package/skills/remotion-code-motion-explainer/SKILL.md +178 -0
- package/skills/remotion-code-motion-explainer/references/code-motion-design.md +86 -0
- package/skills/remotion-code-motion-explainer/references/motion-production-patterns.md +93 -0
- package/skills/remotion-code-motion-explainer/references/production-and-qc.md +99 -0
- package/skills/remotion-code-motion-explainer/references/reference-reconstruction.md +48 -0
- package/skills/remotion-code-motion-explainer/references/ui-motion-shot-library.md +62 -0
- package/skills/remotion-motion-graphics/SKILL.md +169 -0
- package/skills/remotion-motion-graphics/references/patterns.md +355 -0
- package/skills/remotion-motion-graphics/references/polish.md +102 -0
- package/skills/remotion-motion-graphics/references/scaffold.md +144 -0
- package/skills/remotion-motion-graphics/references/traps.md +152 -0
- package/skills/remotion-resemble-ai/SKILL.md +879 -0
- package/skills/remotion-resemble-ai/rules/resemble-captions.md +350 -0
- package/skills/remotion-resemble-ai/rules/resemble-remotion-integration.md +305 -0
- package/skills/remotion-resemble-ai/rules/resemble-setup.md +284 -0
- package/skills/remotion-resemble-ai/rules/resemble-streaming-tts.md +225 -0
- package/skills/remotion-resemble-ai/rules/resemble-sync-tts.md +239 -0
- package/skills/remotion-resemble-ai/rules/resemble-voices.md +213 -0
- package/skills/remotion-resemble-ai/rules/visual-animations.md +567 -0
- package/skills/riffkit/SKILL.md +196 -0
- package/skills/riffkit/examples/any-look-styles.md +11 -0
- package/skills/riffkit/examples/faceless-and-auto.md +16 -0
- package/skills/riffkit/examples/localize-spanish.md +18 -0
- package/skills/riffkit/examples/tiktok-shop-product.md +22 -0
- package/skills/riffkit/references/anchor.md +62 -0
- package/skills/riffkit/references/api.md +806 -0
- package/skills/riffkit/references/details.md +153 -0
- package/skills/riffkit/references/errors.md +69 -0
- package/skills/riffkit/references/intents.md +29 -0
- package/skills/saas-motion-video/SKILL.md +71 -0
- package/skills/script-to-video/SKILL.md +2627 -0
- package/skills/shorts/SKILL.md +372 -0
- package/skills/shorts/references/caption-styles.md +105 -0
- package/skills/shorts/references/platform-specs.md +149 -0
- package/skills/shorts/references/remotion-patterns.md +180 -0
- package/skills/shorts/references/scoring-rubric.md +106 -0
- package/skills/smart-video-editor/SKILL.md +327 -0
- package/skills/smart-video-editor/docs/FONTS.md +57 -0
- package/skills/story-telling/SKILL.md +222 -0
- package/skills/story-telling/rules/composition.md +130 -0
- package/skills/story-telling/rules/images.md +119 -0
- package/skills/story-telling/rules/models.md +98 -0
- package/skills/story-telling/rules/narration.md +87 -0
- package/skills/story-telling/rules/pitfalls.md +140 -0
- package/skills/story-telling/rules/story-formats.md +108 -0
- package/skills/story-telling/rules/story-json.md +143 -0
- package/skills/story-telling/rules/voices.md +114 -0
- package/skills/story-telling/rules/workflow.md +105 -0
- package/skills/story-to-handdrawn-video/SKILL.md +216 -0
- package/skills/story-to-handdrawn-video/references/asset-workflow.md +24 -0
- package/skills/story-to-handdrawn-video/references/reference-style-workflow.md +27 -0
- package/skills/su-card-to-video/SKILL.md +103 -0
- package/skills/talking-head-video-pipeline/SKILL.md +224 -0
- package/skills/talking-head-video-pipeline/examples/prompts.md +217 -0
- package/skills/talking-head-video-pipeline/references/asr-adapters.md +51 -0
- package/skills/talking-head-video-pipeline/references/caption-workflow.md +53 -0
- package/skills/talking-head-video-pipeline/references/export-recipes.md +78 -0
- package/skills/talking-head-video-pipeline/references/layout-safety.md +49 -0
- package/skills/talking-head-video-pipeline/references/video-use-integration.md +71 -0
- package/skills/talking-head-video-pipeline/references/workflows/captions.md +52 -0
- package/skills/talking-head-video-pipeline/references/workflows/design.md +77 -0
- package/skills/talking-head-video-pipeline/references/workflows/doctor.md +51 -0
- package/skills/talking-head-video-pipeline/references/workflows/export.md +50 -0
- package/skills/talking-head-video-pipeline/references/workflows/init.md +51 -0
- package/skills/talking-head-video-pipeline/references/workflows/learn.md +36 -0
- package/skills/text-to-lottie/SKILL.md +202 -0
- package/skills/text-to-lottie/references/chapterization-transition-grammar.md +132 -0
- package/skills/text-to-lottie/references/design-taste.md +292 -0
- package/skills/text-to-lottie/references/lottie-spec-map.md +82 -0
- package/skills/text-to-lottie/references/motion-taste.md +260 -0
- package/skills/text-to-lottie/references/player-contract.md +325 -0
- package/skills/text-to-lottie/references/recipe-camera-scene-motion.md +65 -0
- package/skills/text-to-lottie/references/recipe-data-stats.md +104 -0
- package/skills/text-to-lottie/references/recipe-diagram-technical.md +106 -0
- package/skills/text-to-lottie/references/recipe-loaders-icons.md +70 -0
- package/skills/text-to-lottie/references/recipe-logo.md +72 -0
- package/skills/text-to-lottie/references/recipe-lower-thirds.md +62 -0
- package/skills/text-to-lottie/references/recipe-product-promo.md +99 -0
- package/skills/ultrademo/SKILL.md +212 -0
- package/skills/video-assemble/SKILL.md +101 -0
- package/skills/video-assemble-zenstory-ai/SKILL.md +153 -0
- package/skills/video-assemble-zenstory-ai/references/audio-modes.md +63 -0
- package/skills/video-assemble-zenstory-ai/references/explicit-audio-mix.md +77 -0
- package/skills/video-assemble-zenstory-ai/references/jianying/SOURCE.md +14 -0
- package/skills/video-assemble-zenstory-ai/references/narration-adoption.md +103 -0
- package/skills/video-assemble-zenstory-ai/references/packaging.md +44 -0
- package/skills/video-assemble-zenstory-ai/references/source-score.md +146 -0
- package/skills/video-assemble-zenstory-ai/references/subtitle-track.md +202 -0
- package/skills/video-editing/SKILL.md +688 -0
- package/skills/video-explainer/SKILL.md +163 -0
- package/skills/video-explainer/references/brief-to-script.md +56 -0
- package/skills/video-explainer/references/errors-and-privacy.md +18 -0
- package/skills/video-explainer/references/motion-storyboard.md +82 -0
- package/skills/video-explainer/references/render-and-verify.md +62 -0
- package/skills/video-explainer/references/review-gate.md +82 -0
- package/skills/video-explainer/references/setup-and-doctor.md +33 -0
- package/skills/video-script-builder/SKILL.md +329 -0
- package/skills/video-script-builder/examples/quick-start-transcript.md +19 -0
- package/skills/video-script-builder/references/audio-workflow.md +84 -0
- package/skills/video-script-builder/references/caption-components.md +70 -0
- package/skills/video-script-builder/references/common-pitfalls.md +80 -0
- package/skills/video-script-builder/references/component-catalog.md +197 -0
- package/skills/video-script-builder/references/component-recipes.md +165 -0
- package/skills/video-script-builder/references/gsap-patterns.md +112 -0
- package/skills/video-script-builder/references/pacing-rules.md +78 -0
- package/skills/video-script-builder/references/quality-checklist.md +98 -0
- package/skills/video-script-builder/references/remotion-patterns.md +211 -0
- package/skills/video-script-builder/references/shader-transitions.md +115 -0
- package/skills/video-script-builder/references/taste-principles.md +160 -0
- package/skills/video-scrub/SKILL.md +216 -0
- package/skills/video-scrub/references/profiles.md +89 -0
- package/skills/video-scrub/references/residue-map.md +204 -0
- package/skills/video-short-maker/SKILL.md +182 -0
- package/skills/video-shot-analysis-feishu/SKILL.md +173 -0
- package/skills/video-shotcraft/SKILL.md +267 -0
- package/skills/video-shotcraft/docs/deepseek-harness.md +69 -0
- package/skills/video-shotcraft/references/aesthetic-rules.md +177 -0
- package/skills/video-shotcraft/references/final-review.md +112 -0
- package/skills/video-shotcraft/references/guided-free-creation.md +199 -0
- package/skills/video-shotcraft/references/jianying-export.md +182 -0
- package/skills/video-shotcraft/references/music-beat-sync.md +219 -0
- package/skills/video-shotcraft/references/pipeline.md +390 -0
- package/skills/video-shotcraft/references/sequences/promo-energy-arc.md +50 -0
- package/skills/video-shotcraft/references/shots/ATTRIBUTION.md +65 -0
- package/skills/video-shotcraft/references/shots/camera/basic-3d-scene.md +37 -0
- package/skills/video-shotcraft/references/shots/camera/crash-zoom-punch.md +39 -0
- package/skills/video-shotcraft/references/shots/camera/cursor-flyover.md +38 -0
- package/skills/video-shotcraft-vincentwei10/SKILL.md +316 -0
- package/skills/video-shotcraft-vincentwei10/references/aesthetic-rules.md +187 -0
- package/skills/video-shotcraft-vincentwei10/references/final-review.md +116 -0
- package/skills/video-shotcraft-vincentwei10/references/guided-free-creation.md +199 -0
- package/skills/video-shotcraft-vincentwei10/references/jianying-export.md +183 -0
- package/skills/video-shotcraft-vincentwei10/references/music-beat-sync.md +257 -0
- package/skills/video-shotcraft-vincentwei10/references/pipeline.md +401 -0
- package/skills/video-shotcraft-vincentwei10/references/publish-upload-post.md +111 -0
- package/skills/video-shotcraft-vincentwei10/references/sequences/promo-energy-arc.md +50 -0
- package/skills/video-shotcraft-vincentwei10/references/shots/ATTRIBUTION.md +62 -0
- package/skills/video-shotcraft-vincentwei10/references/shots/camera/basic-3d-scene.md +41 -0
- package/skills/video-shotcraft-vincentwei10/references/shots/camera/crash-zoom-punch.md +52 -0
- package/skills/video-shotcraft-vincentwei10/references/shots/camera/cursor-flyover.md +39 -0
- package/skills/video-structure-analyzer/SKILL.md +148 -0
- package/skills/video-structure-analyzer/examples/xhs-rook-time-spend/xhs-rook-time-spend_/346/213/211/347/211/207/346/213/206/350/247/243.md +50 -0
- package/skills/video-structure-analyzer/examples/xhs-smelly-cat/xhs-smelly-cat_/346/213/211/347/211/207/346/213/206/350/247/243.md +19 -0
- package/skills/video-toolkit/SKILL.md +686 -0
- package/skills/videocut/SKILL.md +159 -0
- package/skills/videodb/SKILL.md +497 -0
- package/skills/videodb/reference/api-reference.md +741 -0
- package/skills/videodb/reference/capture-reference.md +399 -0
- package/skills/videodb/reference/capture.md +110 -0
- package/skills/videodb/reference/editor-reference.md +506 -0
- package/skills/videodb/reference/editor.md +389 -0
- package/skills/videodb/reference/generative.md +344 -0
- package/skills/videodb/reference/indexing-reference.md +481 -0
- package/skills/videodb/reference/indexing.md +537 -0
- package/skills/videodb/reference/legacy/index-reference.md +223 -0
- package/skills/videodb/reference/legacy/index.md +241 -0
- package/skills/videodb/reference/legacy/search.md +249 -0
- package/skills/videodb/reference/migration.md +113 -0
- package/skills/vlog-auto-edit/SKILL.md +982 -0
- package/skills/vlog-auto-edit/examples/project_structure.md +84 -0
- package/skills/vox-animated-ad-mcp/SKILL.md +419 -0
- package/skills/vox-director/SKILL.md +351 -0
- package/skills/vox-director/references/beat-layer.md +143 -0
- package/skills/vox-director/references/host-mode.md +120 -0
- package/skills/vox-director/references/local-engine.md +73 -0
- package/skills/vox-director/references/models-and-gotchas.md +91 -0
- package/skills/vox-director/references/prompt-guide.md +275 -0
- package/skills/vox-director/references/voices.md +59 -0
- package/skills/xingchen-vox-collage/SKILL.md +251 -0
- package/skills/xingchen-vox-collage/references/asset-layer-contract.md +98 -0
- package/skills/xingchen-vox-collage/references/creative-exploration.md +19 -0
- package/skills/xingchen-vox-collage/references/learned-branches.md +34 -0
- package/skills/xingchen-vox-collage/references/remotion-scene-contract.md +77 -0
- package/skills/xingchen-vox-collage/references/visual-language.md +74 -0
- package/skills/xingchen-vox-collage/references/visual-qa.md +59 -0
- package/skills/youtube/SKILL.md +147 -0
- package/skills/youtube/references/algorithm-guide.md +59 -0
- package/skills/youtube/references/analytics-benchmarks.md +67 -0
- package/skills/youtube/references/dataforseo-integration.md +51 -0
- package/skills/youtube/references/monetization-guide.md +62 -0
- package/skills/youtube/references/repurposing-guide.md +54 -0
- package/skills/youtube/references/retention-scripting-guide.md +75 -0
- package/skills/youtube/references/seo-playbook.md +77 -0
- package/skills/youtube/references/shorts-playbook.md +64 -0
- package/skills/youtube/references/thumbnail-ctr-guide.md +73 -0
- package/skills/youtube-shorts-factory/SKILL.md +358 -0
- package/skills/youtube-shorts-factory/resources/adaptation-guide.md +133 -0
- package/skills/youtube-shorts-factory/resources/storyboard-template.md +271 -0
- package/skills/youtube-shorts-factory/resources/workflow-steps.md +139 -0
- package/studio/client.mjs +3 -3
- package/studio/server/server.mjs +31 -3
- package/studio/ui/dist/assets/ExportCenter-DEyy1vs_.js +1 -0
- package/studio/ui/dist/assets/SettingsModal-CQmsA2A2.js +2 -0
- package/studio/ui/dist/assets/apple-touch-icon-ClxQ7j-O.png +0 -0
- package/studio/ui/dist/assets/{es-BRUzvuoM.js → es-AqUfIkAy.js} +1 -1
- package/studio/ui/dist/assets/favicon-Blwx8Trs.png +0 -0
- package/studio/ui/dist/assets/index-C7moXjTY.css +1 -0
- package/studio/ui/dist/assets/index-DdU5QNpY.js +1623 -0
- package/studio/ui/dist/assets/{ja-Cth-uDcW.js → ja-YwiCB4QQ.js} +1 -1
- package/studio/ui/dist/assets/{ko-upvw591D.js → ko-CKtBPDze.js} +1 -1
- package/studio/ui/dist/assets/{zh-CN-BCfJFazB.js → zh-CN-DtNEwKWJ.js} +1 -1
- package/studio/ui/dist/index.html +4 -3
- package/studio/ui/dist/assets/ExportCenter-F-2vF-lQ.js +0 -1
- package/studio/ui/dist/assets/SettingsModal-BgVYguNu.js +0 -2
- package/studio/ui/dist/assets/index-Bhg-9dA3.css +0 -1
- package/studio/ui/dist/assets/index-CWur1Iw9.js +0 -1625
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# Motion grammar: six ways to get from one picture to the next
|
|
2
|
+
|
|
3
|
+
A film that shows one good thing, then another unrelated good thing, reads as a slideshow however
|
|
4
|
+
well each is animated. These six mechanisms are ways to make the next picture come OUT of the
|
|
5
|
+
current one. They are a grammar to compose from, never presets: pick the one the story is already
|
|
6
|
+
asking for, and build it for that film's subject and medium.
|
|
7
|
+
|
|
8
|
+
**The default does not change.** A gentle move (a bloom, a flip, a push) is still the standard
|
|
9
|
+
seam (`workflows/launch-video.md`, Motion). Each mechanism below is a judgement with conditions.
|
|
10
|
+
If its "use it when" does not clearly hold, use the gentle move.
|
|
11
|
+
|
|
12
|
+
Three things hold for all six:
|
|
13
|
+
|
|
14
|
+
- **The destination is in place before the move starts.** The next scene is already drawn under
|
|
15
|
+
or behind the move, so there is never an empty frame between scenes.
|
|
16
|
+
- **Something is carried across**: a shape, a position, a direction of travel. That is what
|
|
17
|
+
separates a designed seam from a transition laid over a join.
|
|
18
|
+
- **One or two mechanisms a film, each used for the seams that matter.** All six in 30 seconds is
|
|
19
|
+
a demo reel of moves, not a story.
|
|
20
|
+
|
|
21
|
+
## 1. Foreground as transition
|
|
22
|
+
|
|
23
|
+
Something already in the scene (a word, a mark, a shape) grows or sweeps until it covers the
|
|
24
|
+
frame, and when it clears the next scene is there.
|
|
25
|
+
|
|
26
|
+
- **Use it when** the covering thing is part of the story (the brand's ink, the product's mark,
|
|
27
|
+
the claim itself) and the two scenes share nothing else to carry across.
|
|
28
|
+
- **Not when** the cover would be an arbitrary shape brought in only to hide the join, or when it
|
|
29
|
+
would happen on every seam: the third time, it reads as a wipe preset.
|
|
30
|
+
- **Ours**: the type frames of the launch film (`launch3.ts`, `typeFrame` in `launchCut.ts`). Ink
|
|
31
|
+
blooms open from a point over the picture, the word letters itself on the page inside the
|
|
32
|
+
bloom, and the ink closes to a point on the NEXT picture. The bloom takes the content frame it
|
|
33
|
+
opens over and the one it closes onto as data (`type(lines, len, before, after)`), so the next
|
|
34
|
+
scene is always waiting under it.
|
|
35
|
+
|
|
36
|
+
## 2. Persistent actor
|
|
37
|
+
|
|
38
|
+
One object keeps its identity through the whole film while the scenes change around it.
|
|
39
|
+
|
|
40
|
+
- **Use it when** the story already owns such an object (a cursor, the product's dot, a
|
|
41
|
+
character, a line being drawn) and it has a reason to be in every scene it visits.
|
|
42
|
+
- **Not when** it has to be invented for the purpose, or dragged through scenes where it does
|
|
43
|
+
nothing: a mascot that only watches is decoration.
|
|
44
|
+
- **Ours**: the ink drop in the launch template (`launchTemplate.ts`). Every press of Generate
|
|
45
|
+
sends a drop into the thread, where it blooms into the answer card; at the end it lifts off
|
|
46
|
+
Generate one last time, lands as the dot of the end card's mark, and the end card opens from
|
|
47
|
+
it. `motif.ts` holds it to the rule: same screen position and size on both sides of the seam,
|
|
48
|
+
within 2 px, or `checkRelay` throws.
|
|
49
|
+
|
|
50
|
+
- **The general move**: `engine/src/canvas-core/morph.ts`. `handoff({ from, to, t0, t1 })` carries
|
|
51
|
+
one outline from a source shape to a target shape: it travels, stretches a little while it is
|
|
52
|
+
moving, and becomes the target in the second half of the trip, landing on it exactly.
|
|
53
|
+
`coverShape` grows a shape until it is the whole page. Keep the object's colour and edge the
|
|
54
|
+
same on both sides, and hold the seam with `checkShapes` (2 px). `morphDemo.ts`: a full stop
|
|
55
|
+
becomes a card, the card becomes the page.
|
|
56
|
+
|
|
57
|
+
## 3. Selection to expansion
|
|
58
|
+
|
|
59
|
+
One item in a set is picked, and it grows until it IS the next scene.
|
|
60
|
+
|
|
61
|
+
- **Use it when** the story moves from many to one: a wall of options, then the one being used;
|
|
62
|
+
a list, then the item opened. The viewer sees where the next scene came from.
|
|
63
|
+
- **Not when** the set was only there to be left (build the set because the story needs range,
|
|
64
|
+
not as a launch pad), or when the item's small and full-frame versions do not match: frame the
|
|
65
|
+
full scene's first frame exactly like the card it grew from.
|
|
66
|
+
- **Ours**: the style wall (`launchGallery.ts`, used in `launch2.ts`). The camera punches into
|
|
67
|
+
cards and comes back out; the last punch does not come back, the card fills the frame and
|
|
68
|
+
becomes the scene. The koi does the same from a still: `koiWorld.ts` frames its first frame
|
|
69
|
+
exactly like the koi plate, so the card hands over to the swimming world with no seam.
|
|
70
|
+
|
|
71
|
+
## 4. Registered decomposition
|
|
72
|
+
|
|
73
|
+
A whole stays recognisable while its parts move into groups, each part traceable from where it
|
|
74
|
+
was to where it lands.
|
|
75
|
+
|
|
76
|
+
- **Use it when** the point is that the product sorts, extracts or reorganises something the
|
|
77
|
+
viewer has just seen: a crowded week becoming a plan, a document becoming fields.
|
|
78
|
+
- **Not when** the parts cannot be followed. Past about seven moving at once, or with parts that
|
|
79
|
+
cross paths, the viewer loses the map; stagger them, or move groups rather than items.
|
|
80
|
+
- **Ours**: `productUI.ts` (a `kind: "ui"` ask in the launch template). The interface is drawn
|
|
81
|
+
from data in two states. One press of the product's action and every item, matched by id,
|
|
82
|
+
springs from its place in the before state to its place in the after: rows travel to their new
|
|
83
|
+
slots, values count to their new numbers, new items arrive, old ones leave.
|
|
84
|
+
|
|
85
|
+
## 5. Continuous canvas
|
|
86
|
+
|
|
87
|
+
All the scenes live in one layout bigger than the frame, and the camera travels between them
|
|
88
|
+
instead of cutting.
|
|
89
|
+
|
|
90
|
+
- **Use it when** the places are really related in space (sections of one page, rooms of one
|
|
91
|
+
building, steps along one path) and the route between them tells the viewer how.
|
|
92
|
+
- **Not when** the places are unrelated (the travel then invents a relationship that is not
|
|
93
|
+
there), or when the journey between two stops is long and empty: every second must change
|
|
94
|
+
(`craft-bar.md`, no dead air). One camera for every plane (`camera.md`).
|
|
95
|
+
- **Ours**: `webTour.ts`. Three sections on one long page, a visible cursor, and a camera that
|
|
96
|
+
shows the whole page, then pushes in on every click and every field. `koiWorld.ts` is the
|
|
97
|
+
drawn version: a pond much bigger than the frame, with the scenery placed in the world so it
|
|
98
|
+
changes as the fish travels.
|
|
99
|
+
|
|
100
|
+
## 6. Exploded layers
|
|
101
|
+
|
|
102
|
+
One object separates into its layers along its depth, holds so each can be read, then closes
|
|
103
|
+
back into the object.
|
|
104
|
+
|
|
105
|
+
- **Use it when** what is inside is the point: how a thing is built, what a stack is made of.
|
|
106
|
+
The layers must be real parts of the subject, in their real order.
|
|
107
|
+
- **Not when** the subject has no true layers and they would be invented for the effect, or when
|
|
108
|
+
the pieces are not held long enough apart to be read. If it never closes again, it is a
|
|
109
|
+
diagram, which may be what the film wants; decide which.
|
|
110
|
+
- **Ours, in one direction only**: `paperCraft.ts`, the toy theatre. The scene is built from the
|
|
111
|
+
back, flat by flat, with real gaps between the flats: each piece travels held above the stack,
|
|
112
|
+
its shadow wide and far, and the shadow closes as it lands. That is the closing half. No film
|
|
113
|
+
of ours yet starts whole and separates; treat the opening half as unproven until one does.
|
|
114
|
+
|
|
115
|
+
## Three ready-made seams
|
|
116
|
+
|
|
117
|
+
For a plain change of scene that still wants a made mark, `engine/src/canvas-core/transitions.ts`
|
|
118
|
+
has three calls. Each takes the two scenes as draw functions and a progress, at any frame size,
|
|
119
|
+
with the incoming scene already complete underneath. `transitionsDemo.ts` shows each once.
|
|
120
|
+
|
|
121
|
+
- **`brushWipe`**: a loaded brush pulled across; with `ink`, a band of wet ink ahead of the new
|
|
122
|
+
picture (without it, a clean bristled edge).
|
|
123
|
+
For the drawn register, in the direction the story is already moving. Not in the clean
|
|
124
|
+
register, and not more than once or twice a film.
|
|
125
|
+
- **`iris`**: a round opening from a point, or closing to one. Open it from the thing the next
|
|
126
|
+
scene is about, close it on the thing this one was about; centred on nothing it is only a
|
|
127
|
+
shape. `shape: "blot"` for ink, the plain circle for the clean register.
|
|
128
|
+
- **`flashCut`**: a hard cut under a short burst of light, so the hard cut's conditions apply
|
|
129
|
+
(a strong beat, in a piece whose energy asks for it). Never one frame, never full white by
|
|
130
|
+
default, never repeated quickly: declare a film's flashes to `checkFlashes`, which throws on
|
|
131
|
+
any two within half a second.
|
|
132
|
+
|
|
133
|
+
## Cuts that carry motion
|
|
134
|
+
|
|
135
|
+
A hard cut between two shots that are both moving can be the smoothest seam there is, or the
|
|
136
|
+
roughest. The difference is arithmetic, and `engine/src/canvas-core/seams.ts` does it.
|
|
137
|
+
|
|
138
|
+
- **Both sides at rest, or both at one speed.** A cut from a moving shot to a still one (or the
|
|
139
|
+
other way) reads as a jerk. So does a cut where the travel turns, halves or doubles.
|
|
140
|
+
- **Accelerate out, cut after the fastest frame, arrive and settle.** The outgoing shot speeds up
|
|
141
|
+
over about 0.2 to 0.4 s; the incoming shot opens at that same speed, in that same screen
|
|
142
|
+
direction, and comes to rest over 0.8 to 1.4 s. The exit is the short side.
|
|
143
|
+
`matchedMove({ dir, exitDist, exitF, entryF })` gives both halves, to add to each scene's
|
|
144
|
+
camera look; the entry distance is worked out from the exit speed, so the two always agree.
|
|
145
|
+
The incoming shot owns the cut frame: the outgoing shot's last frame on screen is the one
|
|
146
|
+
before it, and that is its fastest.
|
|
147
|
+
- **Through the cut, in depth.** `matchedZoom({ push, exitF, entryF })` does the same for a
|
|
148
|
+
camera that flies into one shot and out in the next: a dolly push through the cut. A push is a
|
|
149
|
+
ratio, so both sides run in log space and grow at the same rate per frame across the cut. With the default push the
|
|
150
|
+
incoming shot opens at about two thirds of its size, so its scene must be painted that much
|
|
151
|
+
wider than the frame; a zoom that would open it under 0.4 is refused.
|
|
152
|
+
- **There is a top speed.** Past about two and a half frame widths a second
|
|
153
|
+
(`speedCeiling(W, fps)`), blur stops reading as motion and shows as a streak with stepped
|
|
154
|
+
copies. A move that needs more than that wants a shorter travel with the rest hidden behind
|
|
155
|
+
the cut, or a plain cut on the beat. Render fast seams with `--blur auto`.
|
|
156
|
+
- **Match everything, once.** Whatever crosses the cut keeps its position, size, colour and
|
|
157
|
+
edge; a property that flips on the cut frame pops. And the resting pose is shown once: if one
|
|
158
|
+
shot settles onto a pose and the next opens on it, the first shot's last frame is the move's
|
|
159
|
+
last in-between, never the pose itself, or the film stops, holds and goes.
|
|
160
|
+
- **Never dissolve two copies of one thing.** At the halfway point both are half there and the
|
|
161
|
+
eye sees a ghost. Move one object; change what it is at the middle of its trip.
|
|
162
|
+
|
|
163
|
+
`checkSeam(velocity before, velocity after, { W, fps })` returns what is wrong with a cut, or
|
|
164
|
+
nothing: one side at rest, a turn of more than 30 degrees, a speed that drops or jumps. `checkSeamPlan` reads the film's list of seams and flags a designed seam used a third
|
|
165
|
+
time; plain and matched cuts are exempt, and the film's one signature move gets three (the open,
|
|
166
|
+
the middle, the close). Use this when both scenes have room to travel the same way. When they do
|
|
167
|
+
not, bring both to rest and cut on a beat.
|
|
168
|
+
|
|
169
|
+
## Dealing a hand
|
|
170
|
+
|
|
171
|
+
Left to choose, every film reaches for the same three moves. `node tools/deck.mjs deal --kind
|
|
172
|
+
story --energy high --seconds 27` deals a hand from `references/motion-deck.json`: an opening, a
|
|
173
|
+
close and a spread of seams, camera moves, reveals and acting notes, each with its numbers, its
|
|
174
|
+
engine call and when not to use it. The deal is weighted toward what fits the film and is
|
|
175
|
+
repeatable from its printed seed; `--avoid` keeps the next film off the last one's cards.
|
|
176
|
+
|
|
177
|
+
A card is a prompt, never an order. Keep it, adapt it to this film's subject and medium, or drop
|
|
178
|
+
it, and say which in the brief. The default at the top of this page still holds: a card whose
|
|
179
|
+
"not when" applies is dropped, and the gentle move takes its place.
|
|
180
|
+
|
|
181
|
+
## Names people use
|
|
182
|
+
|
|
183
|
+
People ask for moves by the names they know: a whip pan, a mask reveal, a Vertigo shot, a J-cut.
|
|
184
|
+
`node tools/deck.mjs find "<name>"` routes the words to the card that builds it, to an engine call
|
|
185
|
+
that is not a card (an iris, a lens zoom, a typewriter), or to a refusal. Every card carries those
|
|
186
|
+
names in its `aka`. Run it before building anything named, so a word never turns into an
|
|
187
|
+
improvised effect; the card's numbers are the default unless the person gave their own
|
|
188
|
+
(`workflows/start-here.md`, When they name a move).
|
|
189
|
+
|
|
190
|
+
## Names we refuse
|
|
191
|
+
|
|
192
|
+
Some names ask for an effect that breaks the contract or the craft bar. Say so in one line and
|
|
193
|
+
offer the alternative; `deck.mjs find` prints the same reason.
|
|
194
|
+
|
|
195
|
+
| Name | Why not | Make instead |
|
|
196
|
+
|---|---|---|
|
|
197
|
+
| glitch | colour split and torn pixels are a template overlay with no cause in the picture | a cut on the beat, or one shake on a real impact |
|
|
198
|
+
| light sweep | a shine sliding over chrome that nothing in the picture casts | `reveal-by-light`: the light belongs to the world |
|
|
199
|
+
| fade-in | marks are made, not faded or scaled up from nothing; a tell on the craft bar | drawn on, revealed from behind, or written |
|
|
200
|
+
| particle burst | decoration with no force behind it, never a default | `emph-contact`: dust or splash born on a real contact |
|
|
201
|
+
| cross dissolve | two copies of one thing read as a ghost; unrelated pictures, a slideshow join (a poster frame or a reduced-motion fallback may still dissolve) | one object moving and changing mid-trip; the gentle move |
|
|
202
|
+
| lens flare | lens artefacts (flare, leaks, bokeh discs) painted onto a drawing read as stock overlays | one named light in the scene, or `reveal-by-light` |
|
|
203
|
+
|
|
204
|
+
## Callouts and the label handoff
|
|
205
|
+
|
|
206
|
+
`engine/src/canvas-core/callout.ts` names one thing in the picture: a dot lands on it, a leader
|
|
207
|
+
line is drawn out, a label is written at the end. The dot follows the thing as the camera moves
|
|
208
|
+
(pin it with `cam.toScreen`, `camera.md`); the label holds still so it can be read. It is type
|
|
209
|
+
over the picture, so that judgement applies in full (`workflows/launch-video.md`, Type): a calm
|
|
210
|
+
area, a label that names what it points at, one or two on screen at a time. Where the picture is
|
|
211
|
+
busy, give the label a `backing` or leave the callout out.
|
|
212
|
+
|
|
213
|
+
The label can also be the persistent actor across a seam. With `handoff`, the dot and line
|
|
214
|
+
retract and the label travels to where the next scene starts, landing as its heading on that
|
|
215
|
+
scene's first frame; the next scene draws it from there with `drawLabel` at the same pose.
|
|
216
|
+
`checkHandoff` holds the two sides to within 2 px and throws if the seam jumps.
|
|
217
|
+
`calloutDemo.ts` shows both.
|
|
218
|
+
|
|
219
|
+
## Choosing
|
|
220
|
+
|
|
221
|
+
Ask what the seam has to tell the viewer, then take the mechanism that says it:
|
|
222
|
+
|
|
223
|
+
| The seam says | Mechanism |
|
|
224
|
+
|---|---|
|
|
225
|
+
| "and now this", with nothing shared but the brand | Foreground as transition |
|
|
226
|
+
| "the same thing, further along" | Persistent actor |
|
|
227
|
+
| "this one, out of all of those" | Selection to expansion |
|
|
228
|
+
| "the same things, put in order" | Registered decomposition |
|
|
229
|
+
| "next to that, over here" | Continuous canvas |
|
|
230
|
+
| "and this is what is inside" | Exploded layers |
|
|
231
|
+
|
|
232
|
+
If none of these is what the seam says, it is a plain change of scene: use the gentle move, or
|
|
233
|
+
a matched hard cut where its conditions hold. Review every designed seam as a before/after pair
|
|
234
|
+
of stills, and as a strip of the frames between them, before the film is rendered in full.
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
# Compose: from a brief to an original score
|
|
2
|
+
|
|
3
|
+
A style is a **vocabulary**. It gives you:
|
|
4
|
+
- sound: voices, levels and fx;
|
|
5
|
+
- groove families;
|
|
6
|
+
- a harmony language;
|
|
7
|
+
- melody rules;
|
|
8
|
+
- an arrangement grammar.
|
|
9
|
+
|
|
10
|
+
It never gives you notes. **You write every note**:
|
|
11
|
+
- the chords and their voicings;
|
|
12
|
+
- the bass lines;
|
|
13
|
+
- the motifs and lines;
|
|
14
|
+
- the form.
|
|
15
|
+
|
|
16
|
+
The engine refuses to fill gaps. Missing harmony, melody, grooves or form is an error that tells you
|
|
17
|
+
what to compose. The engine then performs, mixes and masters, deterministically, in code, and it
|
|
18
|
+
plays recordings of real instruments where you ask for one.
|
|
19
|
+
|
|
20
|
+
> **Never reuse shipped material.** The demos (`node tools/music.mjs list`) and our own film scores
|
|
21
|
+
> are listening references and the novelty corpus. They are never a film's score or a template. Don't
|
|
22
|
+
> copy them, transpose them or re-rhythm them. `node tools/music.mjs novelty` fails a score that
|
|
23
|
+
> sounds like any shipped piece, or that quotes one: a 6-note fragment (transposed or not), or an
|
|
24
|
+
> 8-note melody shape in any key, meter or rhythm.
|
|
25
|
+
>
|
|
26
|
+
> **Idioms are fine.** A ii-V-I, a plagal amen, a two-chord vamp, a I-bVII-IV are vocabulary. The
|
|
27
|
+
> style pages name them so you can use them. What is not fine is reusing the same music: a
|
|
28
|
+
> multi-bar progression together with its rhythm, groove, contour and form, or a quoted melody.
|
|
29
|
+
>
|
|
30
|
+
> Why this rule exists: a "new" example once changed the key, chords and pitches of the launch
|
|
31
|
+
> score but kept its rhythms, contour, drums and form. It was heard at once as the same song. The
|
|
32
|
+
> novelty fingerprint weighs exactly those things.
|
|
33
|
+
|
|
34
|
+
## The workflow
|
|
35
|
+
|
|
36
|
+
1. **Read the brief as numbers.** Write down:
|
|
37
|
+
- the use case (launch film, explainer, loop for a site, game, ad);
|
|
38
|
+
- the length in seconds, and whether it must loop;
|
|
39
|
+
- 3-5 picture beats with their times (the reveal, the claim, the cut to the end card);
|
|
40
|
+
- the words the person used for the feeling.
|
|
41
|
+
2. **Pick one style and one mood.** Styles:
|
|
42
|
+
```
|
|
43
|
+
node tools/music.mjs vocab
|
|
44
|
+
node tools/music.mjs vocab <style>
|
|
45
|
+
```
|
|
46
|
+
For the details, see [styles/vocabularies.md](styles/vocabularies.md). The mood is a row in
|
|
47
|
+
`tables.ts` (see the README's mood list). Then set the five **mood controls**, each 0..1, where
|
|
48
|
+
0.5 = the calibrated palette:
|
|
49
|
+
|
|
50
|
+
| Control | What it moves |
|
|
51
|
+
|---|---|
|
|
52
|
+
| `energy` | groove density, drum level, sidechain depth, dynamics |
|
|
53
|
+
| `warmth` | filters darker, tape drive and wow, a little more bass |
|
|
54
|
+
| `brightness` | filters and pluck brightness open, hats up |
|
|
55
|
+
| `tension` | pad detune wider, string attacks shorter, lead decays shorter |
|
|
56
|
+
| `space` | reverb sends, delay mix, pad release |
|
|
57
|
+
|
|
58
|
+
Controls change the sound only. Harmonic tension is yours to write (step 4). To choose the tempo,
|
|
59
|
+
mode, register and density that make a feeling read, see [theory/mood.md](theory/mood.md): tempo
|
|
60
|
+
and mode are the strongest cues, and several cues pointing the same way make the mood unmistakable.
|
|
61
|
+
3. **Sketch the arc and the motif before any chord.** Write three things down:
|
|
62
|
+
- **The tension curve.** One number 0..1 per section: it rises, dips just before the peak (a breath
|
|
63
|
+
or breakdown), peaks on the picture's key frame, then releases. This becomes each section's
|
|
64
|
+
`energy`, its layers and its harmony (leaning chords before home).
|
|
65
|
+
- **The climax.** The bar, the highest note of the piece, and the chord under it (home, full layers).
|
|
66
|
+
- **The motif.** Its rhythm (which beats it avoids, where the long note sits), its contour (one leap,
|
|
67
|
+
then steps back), and how it will develop across the form: stated, sequenced, fragmented in the
|
|
68
|
+
build, augmented at the climax, last word at the end ([theory/melody.md](theory/melody.md)).
|
|
69
|
+
4. **Compose the harmony.** Work inside the style's harmony language: its modes, chord qualities,
|
|
70
|
+
tendencies and voicing rule. Decide the key and mode from the mood, not from habit.
|
|
71
|
+
- Write a progression **for this brief**. Choose its length (2, 3, 4, 5, 6 or 8 bars) and its
|
|
72
|
+
harmonic rhythm (one chord per bar, two per bar, or one per two bars) on purpose.
|
|
73
|
+
- Voice each chord yourself. Move the voices by step and hold common tones. The bass owns the
|
|
74
|
+
root.
|
|
75
|
+
- Write each chord's bass line (one bar) in the style's bass idiom: held root, root and fifth,
|
|
76
|
+
walking, offbeat 8ths, a syncopated 808 figure. Make the rhythm YOURS.
|
|
77
|
+
- **Tension and release as a curve.** Stable (tonic), moving away (subdominant, relative,
|
|
78
|
+
borrowed), leaning (dominant, suspension, pedal), home. Put home on the picture's key beat. End
|
|
79
|
+
inner sections on half or deceptive cadences, and save the full close for the end
|
|
80
|
+
([theory/harmony.md](theory/harmony.md)).
|
|
81
|
+
- **Spread low, close high.** No close intervals below about C3 ([theory/sound.md](theory/sound.md)).
|
|
82
|
+
5. **Compose the motif(s).** A motif is 2-5 notes with its own rhythm. Invent the rhythm first:
|
|
83
|
+
- Which beats does it avoid?
|
|
84
|
+
- Does it start on an upbeat?
|
|
85
|
+
- Where is the long note?
|
|
86
|
+
|
|
87
|
+
Then the pitches: the contour, one leap, then steps back.
|
|
88
|
+
|
|
89
|
+
Develop the motif. Don't photocopy it:
|
|
90
|
+
- **repeat**, then **vary**: change the last interval, displace it by an eighth, extend it;
|
|
91
|
+
- **sequence**: the same shape a step or a third higher;
|
|
92
|
+
- **call and response**: the question ends off the tonic, the answer lands on it, or another
|
|
93
|
+
instrument answers;
|
|
94
|
+
- **fragment** it in a build, **augment** it (slower, longer notes) at the climax;
|
|
95
|
+
- put it in the bass for menace, or high and quiet at the close.
|
|
96
|
+
|
|
97
|
+
The phrase's high point goes in its second half. A phrase is 2 or 4 bars; a period is two phrases
|
|
98
|
+
(question, answer). The line must respect the style's range and density. Put chord tones on strong
|
|
99
|
+
beats, and put the feeling in appoggiaturas and suspensions that resolve by step.
|
|
100
|
+
6. **Choose or write the groove.** Pick a family from the style's list (`bounce`, `trap`,
|
|
101
|
+
`brushes`, `hand`, ...). Set `density` 0..1, `variation` 0..1 and `fill` (a fill on a section's
|
|
102
|
+
last bar). The seed varies every bar, so no two pieces share a loop. You can also write the drum
|
|
103
|
+
bars yourself as notation, one or more bars per lane: `kick`, `snare`, `ghost`, `hat`, `perc`.
|
|
104
|
+
Use a second groove for contrast (`half`, `build`). Keep the kick and backbeat stable, and syncopate on
|
|
105
|
+
top of them ([theory/rhythm.md](theory/rhythm.md)).
|
|
106
|
+
7. **Write the form.** Sections are `{ kind, bars, harmony, lead, counter, arp, comp, groove, bass,
|
|
107
|
+
chordVel, energy, repeat, stretch }`.
|
|
108
|
+
- The **kind** sets which layers may sound: intro, verse, groove, hook, build, half, breakdown,
|
|
109
|
+
drop, bridge, swell, breath, outro. See the arrangement grammar in vocabularies.md.
|
|
110
|
+
- Lines sound only where you write them.
|
|
111
|
+
- Land each section change on a picture beat. At `bpm`, a bar lasts `beatsPerBar x 60 / bpm`
|
|
112
|
+
seconds, and at 30 fps a beat is `1800 / bpm` frames.
|
|
113
|
+
- Mark one section `stretch: true`: a film fit repeats or drops it to reach the exact length and
|
|
114
|
+
still end on your outro.
|
|
115
|
+
- **Music that must hit exact picture moments** (a drop on the reveal at 16.0 s): compose it to
|
|
116
|
+
the length (bars x beats x 60 / bpm) and render without `--fit`, or use the beat-grid mode the
|
|
117
|
+
launch films use (`gridScore` in `launchTemplate.ts`: the score plays at the film's bpm exactly
|
|
118
|
+
and the cuts sit on its downbeats). `--fit` keeps your tempo when the form already ends within
|
|
119
|
+
max(0.5 s, one beat) of the length, and the tail takes up the difference. Past that it changes
|
|
120
|
+
the tempo, and every hit moves with it.
|
|
121
|
+
- Song and cue forms, builds, and orchestration slots: [theory/form.md](theory/form.md).
|
|
122
|
+
8. **Revise with craft, before you render.** `craft` reads the notes in milliseconds:
|
|
123
|
+
```
|
|
124
|
+
node tools/music.mjs craft <file>.ts#<export>
|
|
125
|
+
```
|
|
126
|
+
- It prints scores (0..1) for melody, harmony, rhythm, tension and mood, the tension curve per
|
|
127
|
+
section and per bar, and each section's cadence.
|
|
128
|
+
- Each `CRAFT` line names what it saw, where (bar and beat), and a fix.
|
|
129
|
+
- Loop: read the findings, revise the notes, run `craft` again. Stop when every remaining
|
|
130
|
+
finding is one you chose on purpose (an open ending for suspense, parallel fifths in rock). Say
|
|
131
|
+
which ones in your note to the person.
|
|
132
|
+
- Compare the printed tension curve with your sketch from step 3. If the peak is not where you
|
|
133
|
+
planned it, the arrangement is wrong, not the sketch. The line under the curve says what drives
|
|
134
|
+
each section (loudness, density, register, harmony): loudness and density weigh most, so a
|
|
135
|
+
home-chord tutti or a drop is the peak ([theory/harmony.md](theory/harmony.md), section 8).
|
|
136
|
+
|
|
137
|
+
| `craft` says | Usual fix |
|
|
138
|
+
|---|---|
|
|
139
|
+
| leaps keep going the same way | turn back by step after a leap |
|
|
140
|
+
| nothing comes back / exact copies | develop one motif: sequence, vary the last interval, fragment |
|
|
141
|
+
| phrases don't end on chord tones | land answers on 1, 3 or 5; keep one open question |
|
|
142
|
+
| the melody peaks early | move the highest note to the second half, on the key frame |
|
|
143
|
+
| parallel 5ths (common-practice idiom) | contrary motion; hold the common tone |
|
|
144
|
+
| close intervals below their low limit | spread the voicing: 1-5-3', or lift the upper note an octave |
|
|
145
|
+
| melody under the chords | voice the chords lower, or the melody higher |
|
|
146
|
+
| no syncopation (groove idiom) | anticipate a bass or melody note by an eighth |
|
|
147
|
+
| flat tension curve / no release | change layers, loudness (`energy`), register and harmony by section; release after the peak (a loop, ambient or calm piece may stay level: a note, not a warning) |
|
|
148
|
+
| mood cues (tempo, mode, register, density) | move the cue toward the mood, or declare the mood you wrote |
|
|
149
|
+
9. **Check, render, listen:**
|
|
150
|
+
```
|
|
151
|
+
node tools/music.mjs check <file>.ts#<export> [--fit --seconds 62] # EVERYTHING, must PASS (below)
|
|
152
|
+
node tools/music.mjs render <file>.ts#<export> out.mp3 --stems # the file, plus the same report
|
|
153
|
+
node tools/music.mjs novelty <a>.ts#x <b>.ts#y # several scores: vs shipped AND pairwise
|
|
154
|
+
node tools/music.mjs score <file>.ts#<export> # the text score, bar by bar
|
|
155
|
+
```
|
|
156
|
+
`check` runs everything:
|
|
157
|
+
- key/mode problems and composer warnings (for example, a line shorter than its section);
|
|
158
|
+
- the master: loudness vs target, true peak, and a note when the -1 dBTP ceiling stopped the
|
|
159
|
+
gain short;
|
|
160
|
+
- the **ghost, reverb and masking guards**;
|
|
161
|
+
- the stems;
|
|
162
|
+
- craft (the step-8 report, with brightness measured from the render; only an unplayable range fails);
|
|
163
|
+
- novelty.
|
|
164
|
+
|
|
165
|
+
It exits non-zero on any failure. `render` prints the same report (stems with `--stems`), except
|
|
166
|
+
novelty. Both synthesize each voice once, on all but one of your cores, and render the guards and
|
|
167
|
+
the stems in parallel with the mix: the audio is bit-identical to a serial render (`render
|
|
168
|
+
--verify` renders again serially and compares; `ANIDOODLE_THREADS=1` turns the pool off).
|
|
169
|
+
- **Stems:** fix any part flagged more than 3 dB off with `levels`. `levels` is a **dB offset** per
|
|
170
|
+
slot (+2 = two dB louder), added on top of the calibrated gain, the trims and the mood controls'
|
|
171
|
+
shifts, on the same scale as your own voice's `gainDb`. LUFS alone once hid a sub 7-10 dB too hot.
|
|
172
|
+
- **When the guards and the stems disagree, the guards win.** If masking fails (the melody isn't
|
|
173
|
+
heard), raise the lead. The stem meter lets the lead sit up to +3 dB above its tolerance for
|
|
174
|
+
this. You can also lower or thin what sits in the melody's register. Mood controls shift the
|
|
175
|
+
stem targets with the sound (for example, brightness lifts the hats and their target); the
|
|
176
|
+
printed targets already include that.
|
|
177
|
+
- **Master short of target:** a gentle master (-16 LUFS) never compresses. If one peak blocks the
|
|
178
|
+
gain, the whole piece stays quieter, and `check` says by how much, where the peak is (bar, beat
|
|
179
|
+
and seconds) and which parts pile up there, loudest first, with the notes they are playing.
|
|
180
|
+
Fix it in the notes at that spot: stagger the bass under that downbeat, roll the big chord, don't
|
|
181
|
+
double the climax note.
|
|
182
|
+
- **Novelty:** if it fails, change what the numbers point at. Changing the key fixes nothing.
|
|
183
|
+
Each feature is a bag of n-grams compared by cosine (0 = nothing shared, 1 = the same); the
|
|
184
|
+
score is their weighted mean, and it fails above 0.5:
|
|
185
|
+
|
|
186
|
+
| Feature | Weight | What it counts |
|
|
187
|
+
|---|---|---|
|
|
188
|
+
| `melodyRhythm` | 0.20 | the lead's onset positions in each bar, and its inter-onset-interval trigrams |
|
|
189
|
+
| `melodyContour` | 0.15 | the lead's up / down / same 4-grams |
|
|
190
|
+
| `melodyIntervals` | 0.10 | the lead's interval trigrams, in semitones (transposition-free) |
|
|
191
|
+
| `lineRhythm` | 0.15 | the counter line's rhythm plus the bass's rhythm (bar positions and inter-onset trigrams of each) |
|
|
192
|
+
| `drums` | 0.15 | each drum part's hit positions per bar |
|
|
193
|
+
| `chords` | 0.10 | chord-function trigrams: each root against the key, with its quality |
|
|
194
|
+
| `qualities` | 0.07 | chord-quality trigrams (maj7, min, dom, sus ...) |
|
|
195
|
+
| `form` | 0.08 | the order of section kinds, in pairs |
|
|
196
|
+
|
|
197
|
+
The lead is the top note of each onset of the melody part. Bar positions depend on the meter;
|
|
198
|
+
the inter-onset trigrams, the contour, the intervals and both quote gates do not. Two gates fail
|
|
199
|
+
outright whatever the score: a **6-note fragment** of a shipped melody (its intervals and
|
|
200
|
+
durations, in any key), and an **8-note melody shape** (its intervals alone, in any key, meter
|
|
201
|
+
or rhythm: a quote re-barred into 5/4 or stretched is still the tune). Only distinctive shapes
|
|
202
|
+
count (three or more different intervals, a leap of a third or more, at most three repeated
|
|
203
|
+
notes), so a scale run is never a quote.
|
|
204
|
+
- **Listen:** the person hears it before it is used. Meters prove you aren't obviously wrong.
|
|
205
|
+
Only an ear says right. For a **loop**, deliver a `.wav`: mp3 adds encoder padding, so it clicks
|
|
206
|
+
or gaps at the loop point.
|
|
207
|
+
|
|
208
|
+
## Recorded instruments
|
|
209
|
+
|
|
210
|
+
Eight acoustic parts play recordings of the real thing when the sound pack is installed: `piano`
|
|
211
|
+
(and `piano` with `variant: "upright"`), `harp`, `marimba`, `vibes`, `glockenspiel`, `bell` with
|
|
212
|
+
`variant: "tubular"`, and `timpani`. Strings, guitar, bass, brass, woodwinds, choir, celesta, music
|
|
213
|
+
box, the electric pianos and the acoustic drum kit stay modeled either way, and every score plays
|
|
214
|
+
without the pack.
|
|
215
|
+
|
|
216
|
+
Four things decide what you write:
|
|
217
|
+
|
|
218
|
+
- **Stay inside the range, or the render throws.** The grand reaches A0; the timpani stops at B3;
|
|
219
|
+
the vibraphone starts at F3 and the glockenspiel at G5. The full table is in
|
|
220
|
+
[README.md](README.md#recorded-instruments-the-optional-sound-pack).
|
|
221
|
+
- **A recorded note decays the way that instrument decays.** A low grand note rings for tens of
|
|
222
|
+
seconds. Do not write a dense texture under it and expect the tail to get out of the way.
|
|
223
|
+
- **The piano has a real pedal.** `sus` zones sound while the dampers are lifted, so the pedal
|
|
224
|
+
changes `perform.ts` already writes just after each harmony change are audible, and a chord left
|
|
225
|
+
ringing under the next one is what a real player does. `opts: { pedal: false }` holds the pedal.
|
|
226
|
+
- **A real marimba's low notes are rich.** D2 to C4 carries as much as its top. Keep a bass line out
|
|
227
|
+
of the melody's register instead of reaching down for a note that will not sit under a tune.
|
|
228
|
+
|
|
229
|
+
Two options go in a part's `opts`:
|
|
230
|
+
|
|
231
|
+
| Option | What it does |
|
|
232
|
+
|---|---|
|
|
233
|
+
| `variant: "upright"` / `variant: "tubular"` | picks the second recording of that instrument |
|
|
234
|
+
| `sampled: false` | keeps the modeled voice for that part, whatever is installed |
|
|
235
|
+
|
|
236
|
+
`node tools/music.mjs check` prints the split, so read it before you believe the instrument table:
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
voices recordings: lead (piano), accomp (piano.upright); modeled: bass (bass), drums (kick)
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
A part you expected to be recorded and find modeled is either out of range or opted out. Both are
|
|
243
|
+
yours to fix; neither is a silent fallback.
|
|
244
|
+
|
|
245
|
+
## The material format
|
|
246
|
+
|
|
247
|
+
Write the score in the film's own file, next to the film module: `src/canvas-core/<film>Score.ts`
|
|
248
|
+
in a scaffolded project (`engine/src/canvas-core/<film>Score.ts` inside the skill), and export it:
|
|
249
|
+
|
|
250
|
+
```ts
|
|
251
|
+
import type { Material } from "./music";
|
|
252
|
+
export const score = (): Material => ({
|
|
253
|
+
style: "<style id>", title: "<this film's score>", seed: <any integer>, mood: "<mood id>",
|
|
254
|
+
bpm: <tempo in the style's range>, key: "<tonic>", mode: "<mode id>", meter: "<meter>",
|
|
255
|
+
moodControls: { energy: <0..1>, warmth: <0..1>, brightness: <0..1>, tension: <0..1>, space: <0..1> },
|
|
256
|
+
swing: <0.5 straight .. 0.67 hard>, dyn: [<start 0..1>, <end 0..1>], tail: <seconds of ring-out>,
|
|
257
|
+
chords: { "<name>": { voicing: "[<note> <note> <note>]", bass: "<one bar of notation>" }, /* ... */ },
|
|
258
|
+
motifs: { "<motif>": "<one or more bars of notation>", /* your variations are motifs too */ },
|
|
259
|
+
grooves: { main: { family: "<family>", density: <0..1>, variation: <0..1> }, half: { family: "<family>" } },
|
|
260
|
+
sections: [
|
|
261
|
+
{ kind: "intro", bars: <n>, harmony: ["<chord>", /* per bar, cycled */], chordVel: <0..1> },
|
|
262
|
+
{ kind: "hook", bars: <n>, harmony: [/* ... */], lead: ["<motif>", "<motif variant>", "r:<beats>"], stretch: true, energy: <0..1> },
|
|
263
|
+
{ kind: "groove", bars: <n>, harmony: [/* ... */], lead: ["<2-bar motif>"], loopLines: true },
|
|
264
|
+
{ kind: "verse", bars: <n>, harmony: ["<chord>", "~"], comp: ["x:1 r:.5 x:.5 r:2"] }, // held over the bar line; a comped rhythm
|
|
265
|
+
{ kind: "bridge", bars: <n>, key: "<new tonic>", mode: "<mode>", harmony: [/* in the new key */], lead: [/* ... */] },
|
|
266
|
+
/* ... */
|
|
267
|
+
{ kind: "outro", bars: <n>, harmony: ["<home chord>"], lead: ["<the motif's last word>"] },
|
|
268
|
+
],
|
|
269
|
+
});
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
A film plays it with `filmScore(score(), fps, frames)` from `canvas-core/score.ts`. That fits your
|
|
273
|
+
form to the exact length. `score.ts` is an empty skeleton to copy.
|
|
274
|
+
|
|
275
|
+
- **Voices:** `voices: { lead: "<alternate name>" }` swaps a slot for one of the style's
|
|
276
|
+
alternates. Or give your own `{ inst, role, opts }` (instruments: README table), with the slot's
|
|
277
|
+
role: `chords` and `arp` are `"accomp"`, `lead` is `"melody"`, `counter` is `"color"`, `bass` is
|
|
278
|
+
`"bass"`, drum lanes are `"drum"`. **Levels are one scale.** The palette voice, an alternate and
|
|
279
|
+
your own voice all sit at the slot's stem target (the column in
|
|
280
|
+
[styles/vocabularies.md](styles/vocabularies.md), fix included): alternates carry a measured trim,
|
|
281
|
+
and your own voice is placed from its instrument's measured level in the register your notes
|
|
282
|
+
play in. So leave your voice's `gainDb` out (0 = at the target) and set it, like `levels`, only
|
|
283
|
+
as an offset: `gainDb: 2` is two dB over. Then read `check`'s stems and adjust by the dB it
|
|
284
|
+
prints. Options (`attack`, `bright`, `drive`) move the level a little; a piano far up its range
|
|
285
|
+
is quiet by nature. `variant` and `sampled` are the two options that change which sound you get,
|
|
286
|
+
and they are in [Recorded instruments](#recorded-instruments) above.
|
|
287
|
+
- **Loops:** `loop: true`, and the form length is the loop. `render` makes it seamless.
|
|
288
|
+
- **Split bars:** `harmony: ["<chord> <chord>"]` splits a bar where the meter divides, not at its
|
|
289
|
+
arithmetic middle. Give that section a `bass` override for it.
|
|
290
|
+
|
|
291
|
+
| Meter | 2 chords | 3 chords |
|
|
292
|
+
|---|---|---|
|
|
293
|
+
| 2/4 | 1 + 1 | even |
|
|
294
|
+
| 3/4 | 2 + 1 (the change on beat 3) | 1 + 1 + 1 |
|
|
295
|
+
| 4/4 | 2 + 2 | 2 + 1 + 1 |
|
|
296
|
+
| 5/4 | 3 + 2 | 2 + 1 + 2 |
|
|
297
|
+
| 6/8 | 1 + 1 (3 + 3 eighths) | even |
|
|
298
|
+
| 7/8 | 2 + 1.5 (4 + 3 eighths) | 1 + 1 + 1.5 (2 + 2 + 3) |
|
|
299
|
+
| 9/8 | 2 + 1 | 1 + 1 + 1 |
|
|
300
|
+
| 12/8 | 2 + 2 | 2 + 1 + 1 |
|
|
301
|
+
|
|
302
|
+
Beats are the meter's beats (in 6/8, 9/8 and 12/8 a dotted quarter). To feel the bar another
|
|
303
|
+
way, set the piece's `grouping` (for example `grouping: [2, 3]` for a 5/4 felt 2 + 3): a split
|
|
304
|
+
into as many chords as it has groups follows it. Or give each chord its beats: `"Dm9:1 G13:2"`.
|
|
305
|
+
- **Held chords:** `"~"` holds the chord before it over the bar line, with no restrike, so a pad
|
|
306
|
+
never dips at the bar line: `harmony: ["Cmaj9", "~", "Am9", "~"]` is two chords of two bars each.
|
|
307
|
+
`"~ G13"` holds into the bar, then changes. The bass keeps its own line under a held chord (the
|
|
308
|
+
chord's bass line plays again). To tie the bass too, write that bar of the section's `bass` as `"~"`.
|
|
309
|
+
- **Comping:** a section's `comp` gives the chord part a rhythm, one bar per item, cycled over the
|
|
310
|
+
section. `x:DUR` strikes the chord sounding at that point, `r:DUR` rests, `x:DUR@0.7` accents, and
|
|
311
|
+
a bar may start with `~:DUR` to hold the last strike over the bar line (a pushed chord):
|
|
312
|
+
`comp: ["x:1 r:.5 x:.5 r:1 x:1", "r:3.5 x:.5", "~:1 r:1 x:2"]`. A comp bar must add up to the bar.
|
|
313
|
+
Without `comp`, each chord sounds for its whole span.
|
|
314
|
+
- **A silent chord:** `voicing: "r"` makes the chord part rest while the chord still names the
|
|
315
|
+
harmony: the key check, `craft`, novelty and the bass all read it. Use it for a bar that the bass
|
|
316
|
+
or an arp states alone, or a stop-time break.
|
|
317
|
+
- **Lines play once.** `lead`, `counter` and `arp` start at the section's first bar and play ONCE,
|
|
318
|
+
even though `harmony` cycles. A shorter line leaves rests, and `check` warns. Set
|
|
319
|
+
`loopLines: true` to repeat the line until the section is full. `repeat: n` replays the whole
|
|
320
|
+
section, lines included.
|
|
321
|
+
- **Section `energy`** (0..1, 0.5 = as written) sets the section's dynamics for every part,
|
|
322
|
+
hand-written lines included. It scales velocity from 0.55x to 1.45x, roughly -5 to +3 dB. It
|
|
323
|
+
also sets the density of generated grooves.
|
|
324
|
+
- **`dyn`** is the whole piece's dynamic level `[start, end]`, ramped (default `[0.62, 0.66]`).
|
|
325
|
+
`swing` and `tail` default to the style's lower swing bound and 3.2 s.
|
|
326
|
+
- **Modulation:** give a section its own `key` and `mode`. The key check then reads each key region
|
|
327
|
+
on its own. A lift of a step for the last chorus is fine when that section declares the new key.
|
|
328
|
+
- **The key check weighs the tonic.** It accepts your declared tonic and mode when the mode's scale
|
|
329
|
+
explains the notes as well as any other reading, and the tonic is heard (at least 8 % of note
|
|
330
|
+
time). A lydian or dorian passage whose notes lean on another degree gets read as that degree's
|
|
331
|
+
major. Put the bass on the tonic at section starts and cadences, and state the mode's colour note.
|
|
332
|
+
- **Written drums:**
|
|
333
|
+
- A `LiteralGroove` gives notation bars per lane (`kick`, `snare`, `ghost`, `hat`, `perc`).
|
|
334
|
+
- The bars cycle from each section's first bar; `cycle: "piece"` cycles on the piece's bar count
|
|
335
|
+
instead.
|
|
336
|
+
- Unpitched drums ignore the written pitch: write `C4`.
|
|
337
|
+
- A timpani in a drum lane (orchestral, choral, suspense, world) is tuned to the tonic of `key`,
|
|
338
|
+
generated grooves included (`epic`).
|
|
339
|
+
|
|
340
|
+
**Notation** (bar-checked; a bar that doesn't add up throws, the last bar too: a line that ends
|
|
341
|
+
mid-bar writes its rest, `C2:3 r:1`, never a silent gap):
|
|
342
|
+
- A token is `NOTE:DUR[@VEL]` (a pitch name with an octave, e.g. `F#4`), `[NOTE NOTE ...]:DUR` (a
|
|
343
|
+
chord) or `r:DUR` (a rest).
|
|
344
|
+
- Bars are separated by `|`, or given as array items.
|
|
345
|
+
- Durations are in beats. In 6/8, 9/8 and 12/8 a beat is a dotted quarter, so an eighth is `1/3`.
|
|
346
|
+
In 7/8 a beat is a quarter, so an eighth is `.5` and a bar is 3.5.
|
|
347
|
+
- `@VEL` scales the line's velocity (0..1).
|
|
348
|
+
- In a hand-written piece, a one-bar sting on any beat says so: `line(t, "G6:1", { ..., hit: true })`.
|
|
349
|
+
|
|
350
|
+
## What makes it beautiful (check before you call it done)
|
|
351
|
+
|
|
352
|
+
- [ ] **One idea, developed.** One motif, heard 6-12 times, never the same way twice. A second idea
|
|
353
|
+
answers or contrasts it.
|
|
354
|
+
- [ ] **A line you could sing.** Mostly steps, leaps that turn back, arches, and one high point per
|
|
355
|
+
phrase group in its second half.
|
|
356
|
+
- [ ] **Questions and answers.** Phrases in 2s and 4s. Questions end open, answers end home.
|
|
357
|
+
- [ ] **Feeling in the dissonance.** Chord tones on the beats. An appoggiatura or suspension where
|
|
358
|
+
the picture needs an ache, resolved down by step.
|
|
359
|
+
- [ ] **Harmony that moves smoothly.** Common tones held, voices by step, the bass contrary to the
|
|
360
|
+
tune, the low end spread.
|
|
361
|
+
- [ ] **A groove that breathes.** An anchored kick and backbeat, syncopation on top, rests in the
|
|
362
|
+
melody, a fill only at section ends.
|
|
363
|
+
- [ ] **An arc.** Contrast by section in density, register, harmonic rhythm and groove. A dip
|
|
364
|
+
before the peak, the peak on the key frame, then release.
|
|
365
|
+
- [ ] **Cadences on picture beats.** The claim, the reveal and the logo each get a structural
|
|
366
|
+
downbeat.
|
|
367
|
+
- [ ] **An ending on a phrase:** a held home chord with the motif's last word, a button, or (suspense
|
|
368
|
+
only) an unresolved hold.
|
|
369
|
+
- [ ] **Mood cues aligned.** Tempo, mode, register, density, articulation and brightness all point
|
|
370
|
+
at the words. If a listener names a different emotion, the choice was wrong, not the listener.
|
|
371
|
+
- [ ] **Breadth.** Across projects, vary the meter, harmonic rhythm, groove family and form length.
|
|
372
|
+
Two scores for two products should not be siblings.
|
|
373
|
+
|
|
374
|
+
## What checks what
|
|
375
|
+
|
|
376
|
+
| Check | Runs in | Fails when |
|
|
377
|
+
|---|---|---|
|
|
378
|
+
| key/mode (`planProblems`) | `check`, `render` | a key region's notes don't support its declared tonic and mode |
|
|
379
|
+
| composer warnings | `check`, `render` | (warns only) a line is shorter than its section, ... |
|
|
380
|
+
| master | `check`, `render` | (notes only) the peak ceiling stopped the gain short of the target |
|
|
381
|
+
| ghost guard | `check`, `render` | 4-bar windows are formless (few onsets, sustained, wet, no cadence) |
|
|
382
|
+
| reverb guard | `check`, `render` | the late tail sits within 10 dB of the dry sound |
|
|
383
|
+
| masking guard | `check`, `render` | the melody doesn't clear the other parts in 500 Hz-4 kHz |
|
|
384
|
+
| stems | `check`, `render --stems`, `stems` | a part is more than 3 dB off target (lead: up to +6 dB allowed); advisory for uncalibrated styles |
|
|
385
|
+
| craft | `craft`, `check` | (advisory scores and fixes) melody, harmony, rhythm, tension, mood fit; fails only on a note an acoustic instrument cannot play |
|
|
386
|
+
| novelty | `check`, `novelty` | similarity above 0.5 to a shipped piece (or to each other), a reused 6-note melody fragment, or an 8-note melody shape in any key, meter or rhythm |
|
|
387
|
+
|
|
388
|
+
`tools/music-unit.mjs` keeps the engine honest: determinism, no defaults, every vocabulary renders.
|