# Beat Cut Moves

Two ways to use hard cuts as percussion — accelerating hard-cut chains (halving intervals to close in) and paparazzi flash freezes (three white flashes, each a different crop).

- Category: rhythm · Tags: shotcraft, remotion, rhythm, transition
- Spec: 1920×1080 @ 30 fps · 4.39s (16:9)
- License: Apache-2.0 · Tier: free
- JSON: https://gimgs.net/motion/beat-cut-moves.json
- Kind: remotion
- Source (TSX): https://gimgs.net/motion/beat-cut-moves/template.html
- Repo: https://github.com/Vincentwei1021/video-shotcraft
- Credits: video-shotcraft (Vincent Wei) — https://github.com/Vincentwei1021/video-shotcraft
- Page: https://gimgs.net/motion/beat-cut-moves.html

## Params

_No params._

Default params (base64url for `?p=`): `e30`

## Prompt

## When to use

Turning "the cut itself" into a drumbeat for highlight/sprint segments; version A is a trailer-style accelerating approach, version B is award-ceremony burst-shot ritual.

## Intention

The library's existing rhythm vocabulary only governs rate "within one move" (speed-ramp varies speed inside a single take) and "how long to hold after settling" (the R-series breathing rules) — none of it governs how cut points between multiple shots are arranged. This card fills that gap: hard cuts skip all transitions, and the cut-interval pattern itself becomes the score — shrinking intervals read as an accelerating approach (A), three evenly spaced flashes read as a shutter burst (B). No conflict with the R-series: R governs the hold after settling, this card governs cut-point layout, and after a cut chain ends it must be followed by enough hold to "pay back" the breathing room. Note this is a deliberate exception — the rhythm-preference rule is a one-way "slow down," but the harder the cut chain, the longer the hold after it must be.

## Duration & energy

- Duration: A: full run ~4.3s (build 49f + five-cut chain + 35f freeze hold); B: full run ~4.3s (live footage 30f + three flashes + 60f hold).
- Energy: High

## Shot recipe (original Chinese — timing, easing, parameter table, known pitfalls)

## 意图
库内节奏词汇一直只管"一条运动内"的速率（speed-ramp 是同一条 take
里变速）和"落定后停多久"（R 系呼吸判例），没有词管**多镜之间切点
怎么排**。本卡补这一块：硬切不做任何过渡，切点间隔本身就是乐谱——
间隔递减读作加速逼近（A），等距三闪读作快门连拍（B）。与 R 系不
冲突：R 管落定后的停，本卡管切点排布，切串结束必须接足量 hold 把
呼吸还回去。注意这是刻意的例外——节奏偏好判例是单向"放慢"，硬切
串切得越狠，切完的 hold 要比平常更长。

## 两式选型
| 式 | 做法 | 适用 |
|----|------|------|
| A beat-cut-accelerando 递进硬切串 | 六视图按 16→12→8→6→4f 间隔减半全屏硬切，加速逼近，末刀戛然定格回主画面轻推收住 | 冲刺逼近感：预告片式蓄力、功能连打冲向结论 |
| B paparazzi-flash 连闪定格 | 三次白闪各硬切同素材不同裁切（全景→卡片特写→数字特写），快门余韵沉降，第三闪停在数字收束 | 高光时刻仪式感：颁奖连拍、关键数字的加冕 |

## 参数表
| 参数 | 典型值 | 调节手感 |
|------|--------|----------|
| A 切点帧 | 0/49/65/77/85/91/95（建立 49f，间隔 16→12→8→6→4f） | 间隔按"减半律"缩，等差缩读不出加速；末间隔 <4f 肉眼跟不上 |
| A 视图池 | 6 个 = 两块 FakeDashboard × scale 1/1.8/2.6 + 对焦点，transformOrigin 钉焦点再平移居中 | 视图必须是同一产品的不同构图（语义连续），六个无关画面读作故障 |
| A 切帧快门感 | 切帧 1f brightness 1.05 + 叠 6% 不透明度白层 | 只在切帧亮一下，是"咔"不是闪光灯；再厚就抢了 B 式的活 |
| A 末段收住 | 定格回主画面 hold 35f，scale 1→1.06 ease-out 慢推 20f 后静止 | 戛然而止是这式的句号——末刀后不许再有任何切 |
| B 三闪切点 | 30/52/70（间隔 22f→18f 渐紧），闪前 30f 慢推"活素材"衬托闪后定格 | 闪前必须是活的，全片死素材三闪读不出"定格" |
| B 白闪层 | 每闪 opacity 0.95→0 走 4f ease-out 衰减；闪帧 ±2px seed 哈希全屏抖动 | 0.95 起步才有闪光灯的爆点；衰减 >6f 变柔光转场，失去快门感 |
| B 快门余韵 | 切入视图 scale 1.03→1 走 6f ease-out 回落 + −16px 沉降归零 | 余韵是"被拍到晃了一下"；去掉后三闪读作幻灯片翻页 |
| B 三裁切 | 同一 Footage 换 scale/transformOrigin：1.0 全景 / 2.3 卡片 / 4.0 数字 | 层层逼近有叙事方向；乱序（特写→全景→特写）读作剪错 |
| B 末段收束 | 第三闪后数字特写 hold 60f 静止 | 三闪是重击，hold 要给足平常两倍以上 |

## 已知坑
- **demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿，
  首次实战须以真实素材回验**
- 两式都是**声音强依赖**手法：切点必须钉在音轨拍点上，每切一声
  tick（A）/ 快门咔嚓（B），无声版只剩画面乱跳；钉帧走
  sound-design.md §4.5 相对 shot 起点，不钉绝对帧
- A 式六视图要"同一产品的不同构图"而非六个无关画面——观众要在加速
  中始终认得这是谁；跨产品/跨场景的素材别用这式
- 切串全片 ≤1 次（P4 克制原则）：这是全片最响的一记，第二次出现
  第一次就白打了
- 节奏偏好判例是单向"放慢"，本卡是刻意例外——切完的 hold（A 35f /
  B 60f）是底线不是建议，宁多勿少
- 真硬切 = frame 落区间渲染对应视图，无任何过渡帧；手滑加 2f 交叉
  淡化就不是硬切了，节拍感立即糊掉

## 参考实现
demos/rhythm/beat-cut-moves/
（BeatCutAccelerando.tsx / PaparazziFlash.tsx）

## Reference implementation (Remotion)

- demos/rhythm/beat-cut-moves/BeatCutAccelerando.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/rhythm/beat-cut-moves/BeatCutAccelerando.tsx
- demos/rhythm/beat-cut-moves/PaparazziFlash.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx

The component imports shared fixtures from `demos/_fixtures` and helpers from `assets/lib` in the repo; SKILL.md there documents the render workflow.


## Flow

1. **Read the recipe**
   Prompt = when to use, intention, parameter table with typical values and how each one feels, known pitfalls. Treat values as calibrated starting points.
2. **Get the code** — tool: git
   `git clone https://github.com/Vincentwei1021/video-shotcraft && cd video-shotcraft && npm install`
3. **Register + render** — tool: remotion
   `npx remotion render <CompositionId> out.mp4   # component: demos/rhythm/beat-cut-moves/BeatCutAccelerando.tsx, demos/rhythm/beat-cut-moves/PaparazziFlash.tsx`
4. **Or re-implement**
   Port the timing/easing from the recipe to HTML + WAAPI (gimgs motion contract) or any engine; keep the same segment windows and easing.

## Render

Clone https://github.com/Vincentwei1021/video-shotcraft (npm install). The component lives under demos/{category}/{name}/ and imports shared fixtures from demos/_fixtures and helpers from assets/lib. Copy it (with those imports) into a Remotion project, register a <Composition> with the template's width/height/fps/duration in Root.tsx, then `npx remotion render <CompositionId> out.mp4`. SKILL.md in the repo documents the full Claude Code / Codex workflow. The prompt below is the shot recipe (timing, easing, parameter table, pitfalls) — enough to re-implement the shot in HTML/WAAPI or another engine if you prefer.

## Contract

React/Remotion composition (TSX) from the open-source video-shotcraft library (Apache-2.0). It is not a browser-playable template: clone the repo, register the component in a Remotion project and render with `npx remotion render`. The recipe (prompt) describes timing, easing and parameters so you can also re-implement the shot in any engine.
