beat-sync-editing について
映像編集者やモーションデザイナー向けのビート同期編集スキルです。音楽や物語の構成を、NLEやコードベースのタイムラインで使えるフレーム単位のカット、トランジション、リタイミング案に変換します。
主な機能
- 01BPMをフレーム単位の拍グリッドに変換
- 02フレーズとリズムに沿ったカット設計
- 03マッチカットやJカット、Lカットの設計
- 04スピードランプとペース展開の設計
- 05移植可能な編集タイミング案の作成
活用シーン
- 01映像素材を音楽に合わせて編集
- 02遅い、またはぎこちないテンポの修正
- 03クライマックスやトランジション、速度変化の計画
- 04編集案をフレーム単位のタイムラインに変換
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ iart-ai/ motion-design-skills --skill beat-sync-editingインストール後、Claude Code で/beat-sync-editingを入力して読み込まれたか確認します。
同梱ファイルREADME.mdreferences/editing-techniques.md
詳細
ビートに同期した編集(カットとリズム)
タイムライン編集の技術:クリップとビートを組み合わせて、しっくりくる作品に仕上げる方法です。編集は時間のデザインです。画面に何が映っているかと同じくらい、カットのタイミングが重要です。このスキルでは、音楽や物語の構成を具体的なカットポイント、トランジション、リタイミングに落とし込み、NLE上で、またはコード内のフレーム番号として表現します。
使用する場面
- シーケンスを組み立てたり、音楽トラックに合わせて映像をカットしたりするとき。
- ペースがもたついたり、ぎこちなく感じられたり、トランジションが場当たり的に感じられたりするとき。
- スピードランプ、マッチカット、緊張と緩和の構成を作るとき。
- 編集プランをフレーム単位で正確なタイムラインに変換するとき(Remotion、AE、NLE)。
判断ツリー
What's the editing problem?
├─ Cuts feel off the music
│ └─ get BPM + offset → frames_per_beat = (60/BPM)*fps
│ → cut on PHRASES (2/4/8 beats), biggest visual on the drop
├─ A cut feels jarring / visible
│ └─ cut on action (mid-motion), match direction + velocity
│ → still rough? motivate a transition (match / J / L), else hard cut
├─ Pacing drags or feels flat
│ └─ shape an arc: Establish → Develop → Climax → Resolve
│ → shorten avg shot length toward climax, hold after it
├─ A hit needs impact
│ └─ speed ramp INTO it (slow-mo), snap back; land slowest frame on the beat
└─ Need to hand it to code
└─ express every cut as a frame number, clip as from/duration,
transition as overlap, retime as eased time-remap (Remotion/AE)
相互参照 — 共通のフレームワークを適用します。
- Motion Personality(
motion-art-direction)でカットのリズムを決めます。選んだエネルギーを、フレーズの長さとトランジションの種類にそのまま反映します。下の表を参考に、ひとつ選んで徹底しましょう。 - Three Pillars + ビート同期(
animation-principles):まず 感情的な意図(高揚感か落ち着きか)を定めます。それによって、1小節ごとにカットするか、4小節保持するかが決まります。animation-principlesでは BPM とビートの関係を定義し、このスキルではそれをフレーム単位で正確なカットポイントに変換し、さらにトランジションとリタイミングの技術を加えます。
Motion Personality → カットのリズム
| 性格 | フレーズ(カット間隔) | トランジションの種類 | リタイミング | 印象 |
|---|---|---|---|---|
| Playful | 4ビート、シンコペーションを効かせたアクセント | マッチカット、クイックウィップ | 軽いランプ、弾む動き | 楽しく、躍動的 |
| Premium | 8~16ビート、長いホールド | ハードカット + ときどきディゾルブ | ゆっくりと滑らかなランプ | エレガントで、ゆったりした印象 |
| Corporate | 8ビート、一定 | ハードカット、すっきりしたカット | 最小限 | すっきりとして、信頼感がある |
| Energetic | クライマックスでは1~2ビート | ハードカット、ウィップ、鋭いスナップ | ビートに合わせた大胆なランプ | 大胆で、熱量が高い |
基本ワークフロー
1. グリッドを見つける:BPM → フレーム数
任意のタイムコードではなく、音楽のリズムグリッドに合わせてカットします。BPMをフレーム数に変換し、カットポイントをフレーム単位で正確にします。
frames_per_beat = (60 / BPM) * fps
120 BPM、30 fpsの場合、(60/120)*30 = 15 フレームが1ビート(500ms/ビート)です。15フレームごとにカットすれば、ビートに合います。1ビートごとではなく、フレーズ(2/4/8ビートごと)でカットしましょう。そうしないと編集がせわしなく感じられます。最も大きなビジュアルの見せ場は、音楽のドロップに合わせます。
8分音符グリッド:ビートの細分化により、グリッドから外れることなく、より細かなアクセントポイントを設定できます。120 BPM/30 fpsの場合:
| 細分 | ms | 30fpsでのフレーム数 | 用途 |
|---|---|---|---|
| 1ビート(4分音符) | 500 | 15 | メインのカットグリッド |
| ½ビート(8分音符) | 250 | 7.5 | アクセント/クイックフラッシュカット |
| ¼ビート(16分音符) | 125 | 3.75 | ヒット、スタッター、トランジェントFX |
| 1小節(4ビート) | 2000 | 60 | フレーズ/セクションの境界 |
アクセントは8分音符グリッドに合わせ、構成上のカットはビートまたは小節に合わせます。
// Generate on-beat frame numbers (JS / Remotion / AE-friendly)
const bpm = 120, fps = 30;
const framesPerBeat = (60 / bpm) * fps; // 15
const phrase = 4; // cut every 4 beats
const cuts = Array.from({length: 16}, (_, i) =>
Math.round(i * framesPerBeat * phrase)); // [0,60,120,180,...]
2. 継ぎ目を隠す:動作や動きの途中でカットする
動きが視線をカットの向こうへ導くと、カットは目立たなくなります。動作(振り向き、手を伸ばす動き、ウィップなど)の 途中で カットすると、脳はカットをまたいで動作を追います。カットの前後で、動きの方向と速度を合わせます。モーショングラフィックスでは、変形のピークでカットします。図形が止まっているときではなく、移動の途中にある瞬間を選びます。
3. 意図を持ってトランジションを選ぶ
基本はハードカットにします。ほかの方法を使うのは、明確な理由がある場合だけにします。
- マッチカット — 切り替え前後のフレームで形、位置、またはモーションベクトルが共通しているため、カットが変化として伝わります(円が月になる、腕の動きによるワイプで次のシーンが現れるなど)。モーションデザインで最も効果的なトランジションです。
- Jカット — 次のショットの音声が映像より先に始まります(音声が先行)。視聴者を先へ引き込み、会話や新たな情報を見せる場面に適しています。
- Lカット — 現在のショットの音声が次の映像にも重なって続きます(音声が後に続く)。シーンの切り替えを滑らかにします。
- ウィップ/モーションブラー・トランジション — 素早いパンで2つのショットをブレンドします。ブラーの方向を合わせる必要があります。
- ルマ/ワイプ/ディゾルブ — 時間の経過や柔らかな雰囲気を伝えます。多用すると、素人っぽく見えます。
カットの種類のクイック表:
| カットの種類 | 揃えるもの | 伝わる印象 | 典型的なオフセット | 使用する場面 |
|---|---|---|---|---|
| ハードカット | なし — 即時 | 中立、基本 | 0 | カットの90% |
| マッチカット | 共通する形/位置/モーションベクトル | 変化 | 0(1~2fの許容範囲) | 2つのショットが視覚的に呼応するとき |
| Jカット | Bの音声が映像より先行 | 視聴者を先へ引き込む | 音声が4~12f早い | 会話、新たな情報を見せる場面 |
| Lカット | Aの音声がBにも重なって続く | 切り替えを滑らかにする | 音声が12~24f遅い | シーンの切り替え、環境音 |
| ウィップ/モーションブラー | パン中のブラーの方向を揃える | エネルギー、「シュッ」という勢い | 約6~10fのブレンド | 盛り上げ、シーンのジャンプ |
| スピードランプ | リタイミングであり、カットではない | インパクト/強調 | ビートに着地 | 効果を強く印象づけたいとき |
4. リタイミング:スピードランプ
スピードランプ(時間の緩やかな変化)はインパクトを加えます。スローモーションでヒットに向けて加速し、その後、速度を瞬時に戻します。ランプ中はモーションブラーを一貫させてください。一貫しないと、スロー区間がストロボのように見えます。
Speed ramp on an impact (frames, 30fps):
0–20 100% speed (run-up)
20–28 ease down to 25% (anticipation, slow-mo on the hit)
28 IMPACT lands on the beat
28–40 ease back to 100% (release)
NLEでは、滑らかな補間を使ったタイムリマップのキーフレームを設定し、自然なスローモーションになるようフレームブレンディング/オプティカルフローを有効にします。Remotion/AEでは、滑らかな補間を使ってtimeRemap/valueAtTimeのカーブを動かし、シャッター/モーションブラーの設定を一貫させます。
5. アークを形作る:シーケンスのペース配分
作品には一定の強度ではなく、変化が必要です。
Establish → Develop → Climax → Resolve
longer holds shortening cuts fastest + the drop release/breathe
ショットの長さは意図的に変化させます。速いカットはエネルギーを高め、長めに見せることで重要な瞬間を印象づけられます。平均ショット長を短くしながらクライマックスに向けて盛り上げ、その後にひと呼吸置きます。よくある間違いは、ペースを均一にすることです。内容にかかわらず、平坦な印象になります。
ペース配分のアーク — 緊張から解放へ(エネルギーはカット頻度の微分です):
| フェーズ | カット間隔 | 平均ショット長 | 緊張感 | 備考 |
|---|---|---|---|---|
| 導入 | 8~16ビート | 最長 | 低 | 場所/雰囲気を設定し、余裕を持たせる |
| 展開 | 8 → 4ビート | 短くなる | 高まる | カットを速めて盛り上げる |
| クライマックス | 1~2ビート | 最短 | 最高 | ドロップ。最大の視覚効果とスピードランプ |
| 解決 | 長いホールドを1回 | 最長 | 解放 | ピークの後にロゴ/CTAをゆっくり見せる |
クイックリファレンス
| 目的 | 方法 |
|---|---|
| ビートに合わせたカット | 1ビートあたり(60/BPM)*fpsフレーム。フレーズの区切りでカット |
| ドロップを印象づける | 音楽のドロップに合わせて最大の視覚効果を入れる |
| 目立たないカット | 動きに合わせてカット/動きを揃える |
| 変化の印象を与える | マッチカット(形/動きを揃える) |
| 視聴者を先へ引き込む | Jカット(音声が先行) |
| シーンの切り替えを滑らかにする | Lカット(音声が後に続く) |
| インパクトを与える | ヒットに向けてスピードランプし、瞬時に戻す |
| エネルギーを高める | 平均ショット長を短くする |
| ひと呼吸置く | クライマックスの後にホールドする |
作例
良い — 30秒のエネルギッシュなプロダクトスポット、128 BPM、30 fps
概要:スニーカーの発売を盛り上げる映像。エネルギッシュな個性で、ビート32でドロップします。
- グリッド:1ビートあたり14.06フレーム。ドロップはビート32 ≈ フレーム450(ずれを防ぐため、累積値を四捨五入)。
- 展開:導入は0~120(2秒のホールドを2回)。展開は120~450(カットを8→4→2ビートと短くし、エネルギーを高める — エネルギッシュな個性に合致)。450でクライマックス(ドロップ)。700~900で収束(CTAを長くホールド)。
- カット:構成上のカットは小節の頭に配置します。展開部分では、アクセント用のフラッシュカットを2回、8分音符のグリッドに合わせます。
- 演出:f112はマッチカットです(共通する円形ロゴ → ホイール)。450のドロップでは、最大のビジュアルに加えて、スピードランプを100%→25%→100%とし、最も遅いフレームがダウンビートに重なるようにします。CTAはLカットで入り、音声が約18フレーム続きます。
- コード化するには:各カットをフレーム番号で指定し、各クリップを
<Sequence from/durationInFrames>で指定します。ランプはイージング付きのタイムリマップとし、frame/fpsを検出したビートの秒数と照合してビートを検証します。効果がある理由:フレーズに基づいたグリッド、展開、ドロップに合わせた大きな見せ場、意図のあるトランジション、フレーム精度と移植性。
反パターン — 「毎ビートでカットし、そのたびにディゾルブ」
- 32ビートすべてでハードカット → 休む間がなく、焦点となる見せ場もありません。視聴者は8ビート目までに疲れてしまいます。
- 「滑らかにする」ためにカットのたびに12フレームのクロスフェード → ぼんやりとして素人っぽくなり、さらにディゾルブの中点がグリッドからずれるため、ビートにも合わなくなります。
- 最初から最後まで一律15フレームのショット → 単調です。導入もクライマックスもなく、ドロップが何にも重なりません。
- トラックのオフセットを無視してフレーム0からBPMの計算をする → すべてのカットが数フレーム早くなります。「ほぼ合っている」ように感じますが、実際にはずれています。
修正方法:4/8ビートのフレーズごとにカットし、デフォルトではハードカットを使い、展開を作り、グリッドを1拍目のオフセットに合わせ、最大のビジュアルを1つドロップに配置します。
よくあるミス
| 症状 | 原因 | 修正方法 |
|---|---|---|
| 編集がせわしなく感じる | 毎ビートでカットしている | 2/4/8ビートのフレーズでカットし、8分音符のグリッドに合わせたアクセントは控えめに使います |
| カットが「ほぼビートに合っている」ように感じる | グリッドを0:00から始め、トラックのオフセットを無視している | 1拍目のオフセットを取得し、累積フレーム計算をそこに合わせます |
| 長い編集でずれが生じる | frames_per_beatを各ステップで丸めている | ステップごとではなく、各累積ビートを丸めます |
| カットが唐突に感じる | 動きのないところや、動作の合間に配置している | 動作中または動きの途中でカットし、方向と速度を合わせます |
| スローモーションでちらつく | フレーム補間なしで速度を100%未満にしている | オプティカルフロー/フレームブレンディングを有効にし、シャッターを一定に保ちます |
| 映像全体が単調に感じる | ペースが一律 | 導入→展開→クライマックス→収束の流れを作り、ドロップに向けて短くします |
| トランジションが素人っぽく見える | ディゾルブ/ワイプに頼っている | デフォルトではハードカットを使います。マッチカット/Jカット/Lカットには意図を持たせ、まずタイミングを整えます |
| 何も印象に残らない | クライマックスが1つもない | 最大のビジュアルをドロップに配置し、その後にホールドを入れます |
納品物 — 編集タイミングプラン
優れたプランはレンダラーに依存せず、NLEまたはコードベースのタイムライン(remotion-video、after-effects)に引き継げます。
- トラック仕様:BPM、fps、1拍目のオフセット、ドロップのフレーム番号、1ビートあたりのフレーム数。
- 展開:4つのフェーズそれぞれのフレーム範囲と、フェーズごとの目標平均ショット長。
- カットリスト:BPM計算に基づく絶対フレーム番号で指定したすべてのカット、その位置のクリップ、カットの種類。
- トランジション:種類(ハード/マッチ/Jカット/Lカット/ワイプ)と、Jカット/Lカットの音声オフセット(フレーム数)。
- リタイミング:各スピードランプを、イージング付きのタイムリマップキーフレームとして指定(開始→終了の速度%、フレーム、オプティカルフローの有効/無効)。
- ビートマーカー:検証用のオンビート/8分音符グリッドのフレーム配列。
- 相互参照:リズムを決めたモーションの個性。
Remotion/AEでは、このプランがフレームタイミングそのものです。カット →
from/durationInFrames(またはレイヤーのイン/アウト)、ランプ → イージング付きのinterpolate/タイムリマップ、Jカット/Lカット → オフセット付きの<Audio from>/音声レイヤー。NLEとコードの対応表については、references/editing-techniques.mdを参照してください。
完了前のチェックリスト
- BPM、fps、1拍目のオフセットを記録し、frames_per_beat を計算して累積丸めを行った。
- カットはフレーズ(2/4/8拍)ごとに行い、毎拍では行わない。アクセントは8分音符のグリッド上だけに配置する。
- 最も印象的な映像をドロップに合わせた。
- 展開(導入→展開→クライマックス→収束)を設けた。平均ショット長はクライマックスに向けて短くし、その後は長めのショットを配置する。
- ハードカットを基本とし、その他のトランジションにはそれぞれ意図を持たせた。Jカット/Lカットの音声オフセットをフレーム単位で指定した。
- スピードランプでは最も遅いフレームを拍に合わせた。オプティカルフロー/フレームブレンディングを有効にした。
- カットのリズムを選択したモーションパーソナリティに合わせた。
- カット、トランジション、リタイムをすべてフレーム番号/開始位置からの長さで表現し、Remotion/AE/NLE に移行できるようにした。
- 音声同期を検証した。検出された拍の秒数に対して
frame/fpsを確認した。
注意点
- 毎拍カットするとせわしなくなります。2/4/8拍のフレーズごとにカットし、アクセントは控えめにします。
- 一貫したモーションブラーのないスピードランプはストロボのように見えます。スローモーションにはオプティカルフロー/フレームブレンディングを有効にします。
- クロスフェード/ディゾルブは、悪いカットの解決策にはなりません。まずタイミングを修正します。
- 音声同期のずれ:コードのタイムラインでは、検出された拍の秒数に対して
frame/fpsを確認します。NLE では、フレーム単位で正確なガイドトラックに音声をロックします。 - 全編を同じペースにすると平坦になります。必ず展開を作ります。
参考ファイル
references/editing-techniques.md— フレーズテーブルを使った BPM からフレームへの計算、動作に合わせたカットの内訳、マッチカットを段階的に作成する手順、フレームオフセット付きの J カット/L カットの音声先行・遅延の図、モーションブラー/オプティカルフローの設定を含むスピードランプの完全な手順、ショット長の変化を示すシーケンス展開テンプレート、NLE のタイムラインとコードのタイムライン(Remotion<Sequence>/AE のタイムリマップ)間で編集プランを対応させる方法。