# Riso print hits

Two Riso-print misregistration hits: a single split-and-snap impact, and a rhythmic version that compounds beat by beat.

- Category: effects · Tags: shotcraft, remotion, effects, typography, rhythm
- Spec: 1920×1080 @ 30 fps · 4.05s (16:9)
- License: Apache-2.0 · Tier: free
- JSON: https://gimgs.net/motion/riso-print-hits.json
- Kind: remotion
- Source (TSX): https://gimgs.net/motion/riso-print-hits/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/riso-print-hits.html

## Params

_No params._

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

## Prompt

## When to use

Hit emphasis for titles/cards, a paper-and-ink take on the "glitch flash"; A for a single climax hit, B for repeated hits in a rhythm section

## Intention

RGB chromatic-aberration glitch (part of impact-feedback style C) is a screen-native language that clashes with a paper-and-ink tonality. These two styles are the print-based equivalent: the element splits into light-gray and dark-ink single-color print plates (a multiply ink feel rather than a screen glow feel), like a risograph print that's out of register, shaking a few times before snapping "clack" into register — the same impact, but with the medium fully swapped to ink on paper. A is a single hit: the impact freezes and splits the plates, the shake decays, then a hard cut snaps them into register, stamping one hit; B is its rhythmic form: every beat the whole frame jumps 8% and the title splits its plates, the misregistration compounding with each beat — getting harder every time, a visual bass drum for a beat-driven section. Same technical root (decaying-oscillation two-plate misregistration), choose single-hit or repeated-hit.

## Duration & energy

- Duration: A 4s (single hit); B 4.7s (four beats)
- Energy: High

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

## 意图
RGB 色散故障闪（impact-feedback C 式的一部分）是荧光屏语言，与纸墨
调性相克。这两式给出印刷版平替：元素裂成浅灰/深墨两份单色印版
（multiply 油墨感而非 screen 荧光感），像 risograph 没对准版，抖几下
"啪"地套准——同样的冲击力，介质想象完全换成纸上油墨。A 是单发：
撞停瞬间裂版、震荡衰减、硬切套准，给一次命中盖章；B 是它的节奏化：
每个鼓点整画面跳大 8% + 标题裂版，错位逐拍加码，越打越狠——
卡点段的视觉低音鼓。同技术根（衰减震荡的双版错位），单发/连打二选一。

## 两式选型
| 式 | 做法 | 适用 |
|----|------|------|
| A misregistration-hit 单发 | 标题 8f 撞入撞停，裂两版反向错 ~32px，44f 衰减震荡后硬切套准 + scale 脉冲 | 全片 1–2 次的命中盖章；标题/大字的到位一瞬 |
| B beat-pump 节拍泵 | 每 24f 一拍：整画面瞬跳 1.08 指数回落 + 标题错版逐拍 8/14/22/32px 加码套准 | 音乐卡点段；"越打越狠"的蓄力连打 |

## 参数表
| 参数 | 典型值 | 调节手感 |
|------|--------|----------|
| 双版 | 浅灰版（G.mid）+ 深墨版（G.ink），`mix-blend-mode: multiply`，位移反向 | multiply 叠出的重影灰阶就是"油墨没对准"；screen 叠加立刻变荧光故障 |
| A 错位包络 | `offset = A·cos(2πt/18)·exp(-t/60)`，A=(16,7)px 两版反向；帧 72 硬切归零 | 命门：套准是**硬切跳变**不是渐收——衰减到 ~14px 残余时啪地归零才有"啪"；纯渐收读不出套准一拍 |
| A 撞入 | 8f Easing.in(cubic) 从画外撞停，命中帧即裂版 | 裂版必须与撞停同帧——晚 2f 就读作两件事 |
| A 套准脉冲 | 归零帧 4f scale 1.03→1 | 盖章的一拍；省略则套准无重量 |
| B 泵 | `scale = 1 + 0.08·exp(-t/3)`（t=0 即满值、一帧到位无渐入），14f 窗口外精确归 1 | 瞬跳是"顿推"本体——加渐入就成了普通 zoom 呼吸 |
| B 错版加码 | AMP 逐拍 4/7/11/16px（单版，双版反向即总分离 8/14/22/32px），`AMP·cos(2πt/6)·exp(-t/3)` 12f 窗口 | 逐次加码是命门（同 hit-counter 判例）：四拍一样大读不出"越打越狠" |
| B 作用域 | scale 作用整画面容器，错版只作用标题 | 整画面全裂读作故障而非印刷 |
| B 节拍参照物 | 底部节拍刻度点，命中闪深常驻 | 静音预览环境的节拍可读性 |
| 收尾 | A 套准后 ≥40f / B 末拍归零后 ≥20f 真静止 | R1 |

## 已知坑
- demo 在灰阶/占位素材上调校通过——参数是调校起点非实战定稿，
  首次实战须以真实素材回验
- **错位幅度可感性判例（本批实渲）**：词汇表原案 ±5px 在 1920 宽画面
  正常速度下肉眼几乎不可见——单版 16px/总分离 32px 起步才可感；
  幅度存疑时做极端版给用户看（可感性优先）
- 两式与 impact-feedback C（负片冲击帧）语义重叠——纸墨调性片子用本卡、
  游戏/动漫调性用 C 式，同片不并用（P4）
- B 式是声音强依赖：命中帧必须钉鼓点（sound-design §4.5）；无音轨
  段落读作画面抽搐
- A 式错位方向一横一纵混合（x 为主 y 少量）更像没对准版；纯横向读作
  左右晃动
- B 式四拍后必须接足量 hold（≥24f）——连打完不还呼吸，观众的耳朵还
  在等第五拍

## 参考实现
demos/effects/riso-print-hits/
（RisoBeatPump.tsx / RisoMisregistrationHit.tsx）

## Reference implementation (Remotion)

- demos/effects/riso-print-hits/RisoBeatPump.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/effects/riso-print-hits/RisoBeatPump.tsx
- demos/effects/riso-print-hits/RisoMisregistrationHit.tsx — https://raw.githubusercontent.com/Vincentwei1021/video-shotcraft/main/demos/effects/riso-print-hits/RisoMisregistrationHit.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/effects/riso-print-hits/RisoBeatPump.tsx, demos/effects/riso-print-hits/RisoMisregistrationHit.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.
