mcpField
B
beat-sync-editing

beat-sync-editing

github.com/iart-aiクリエイティブ・メディア1723.1k 回インストール18 週間前に更新
リポジトリ

beat-sync-editing について

映像編集者やモーションデザイナー向けのビート同期編集スキルです。音楽や物語の構成を、NLEやコードベースのタイムラインで使えるフレーム単位のカット、トランジション、リタイミング案に変換します。

主な機能

  1. 01BPMをフレーム単位の拍グリッドに変換
  2. 02フレーズとリズムに沿ったカット設計
  3. 03マッチカットやJカット、Lカットの設計
  4. 04スピードランプとペース展開の設計
  5. 05移植可能な編集タイミング案の作成

活用シーン

  1. 01映像素材を音楽に合わせて編集
  2. 02遅い、またはぎこちないテンポの修正
  3. 03クライマックスやトランジション、速度変化の計画
  4. 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 → カットのリズム
性格フレーズ(カット間隔)トランジションの種類リタイミング印象
Playful4ビート、シンコペーションを効かせたアクセントマッチカット、クイックウィップ軽いランプ、弾む動き楽しく、躍動的
Premium8~16ビート、長いホールドハードカット + ときどきディゾルブゆっくりと滑らかなランプエレガントで、ゆったりした印象
Corporate8ビート、一定ハードカット、すっきりしたカット最小限すっきりとして、信頼感がある
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の場合:

細分ms30fpsでのフレーム数用途
1ビート(4分音符)50015メインのカットグリッド
½ビート(8分音符)2507.5アクセント/クイックフラッシュカット
¼ビート(16分音符)1253.75ヒット、スタッター、トランジェントFX
1小節(4ビート)200060フレーズ/セクションの境界

アクセントは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 のタイムリマップ)間で編集プランを対応させる方法。

コメント