93のブロマガ

今更BPM合わせ@AviUtlメモ

2014/08/02 13:09 投稿

  • タグ:
  • 登録タグはありません
  • タグ:
  • 登録タグはありません

次の日には忘れてる自分用のメモです初歩的

BPM合わせ下準備

「ちょっと音再生」 Plugin を導入
・「フレーム移動時に音を鳴らす」 Plugin を導入
現在のフレームにどんな音があるか正確に聞ける

・グリッドを設定する
拡張編集上でShit+Gで設定、Gで表示/非表示切り替え
グリッドにスナップする

・初めにオーディオファイル等に中間点などを使ってマーキングしレイヤーをロック。
中間点の位置にスナップするので少し楽に。(マーカー欲しいです)
マーカー用のレイヤーを作るのもあり、レイヤーが増えてくるとすぐスクロールアウトしてしまうので無力

動画自体のフレームレートを曲のBPMに合わせる

メリット

:BPMグリッドにぴったり合う。コピペでずれないので楽ちん
:移動方法のフレーム数決定が容易 (特にランダム移動や反復移動など)
:obj.flameがBPM合わせで容易に活用できる

デメリット
:プロジェクト自体の設定なので後での変更が厳しい
:異なるbpmの曲が混じったりbpmが可変する場合は無力
:bpmによってフレームレートがバラバラで他の動画と合わせるとコマ欠けする
:というか基本の24fps(23.976fps),30fps(29.97fps) 以外の設定はそもそもお勧めできない


ともあれプロジェクトを作成する時点で動画のフレームレートを決定してしまうパターン
よくある4つ打ち(4/4)の場合

一拍に使うフレーム * bpm/60=動画のフレームレート(=fps)

128bpmの曲なら取り敢えず一拍12フレームとして
12*128/60 = 25.6 fps のプロジェクトを作ればOK
24fpsや30fpsに近づけたい場合は一拍に使うフレームを調整(勿論整数で)


obj.timeを使って一秒を一拍に

メリット
:フレームレートに左右されず拍子が取れる
:頭合わせさえすればbpmの異なる曲に変更しても式のbpmを書き換えるだけ

デメリット
:少しばかりスクリプト(Lua)の知識が必要
:上手く演出しないとメトロノーム/オーディオビジュアライザと化してしまう


bpm/60*obj.time =1拍毎に一づつ増える値

一秒を1beatに。
bpm/60*obj.time%4
とすれば四拍毎に0~3をループする値になったり、
math.floor(bpm/60*obj.time)%2
と書けば一拍ごとに0と1を繰り返すスイッチになったり
色々。

スピードを変える場合はobj.timeに掛算・除算 bpm/60*obj.time*2 タイミングをずらしたい場合は加算。bpm/60*obj.time +1/2 --半拍ずれ
分数で書くと判り易い (1/2,1/4,1/16)

math.floor(bpm/60*obj.time)%2*100; 100倍すれば 0と100をスイッチ、
math.ceil(bpm/60*obj.time)%2*100;100と0をスイッチ。

簡単な実例
画像ファイルを用意、裏面を表示しないにチェック。
さつきさんの「カード表裏@ANM2」 をセット,他の画像を読み込ませる。
スクリプト制御に
local bpm=130
obj.ry=math.floor(bpm/60*obj.time)%2*180
結果::一拍ごとにパカパカ画像が切り替わる。

math.sin( math.pi*(bpm/60*obj.time) )*100; 二拍で-100~100を行き来するサイン波、LFO代わりに。
さらにこれをmath.abs()で囲って絶対値にすれば一拍ごとに0~100を繰り返す値に。

これらの値はアニメーション効果等のパラメーター設定の数値入力欄に
直接書いて使えるので何かと役立つ、場合もある、かも
※但しパラメーター設定全体で文字数制限のようなものがあるので
長くなりそうならスクリプト制御などを使って一旦他の変数に入れないと不思議なことが起きる

bar=bpm/60*obj.time -- 一度他の変数に

obj.alpha=math.floor(bar%2) ;これは点滅
obj.alpha=obj.alpha/math.exp(bar%4) ; 一小節毎に透明度が減衰
obj.rz=-360/math.exp(bar%4)+obj.rz ; 一小節毎に減速しつつ時計回り回転


拍ずらしをしたい場合は1/2,1/4,1/16などを足せばいい?
(半拍ずらし=bpm/60*obj.time+1/2)

3/4拍子などの場合は
bpm/60*(3/4)*obj.time で良いのではなかろうか
…ワルツとかはどうすればよいのです?

あとは適当にお好きなアニメーション効果のパラメーター設定に入れたり
スクリプト制御で適当な変数に入れてみたりして試すしか


○ rikkyさんのパーティクル(R)はパラメータの多くがミリ秒単位なので
本体の出力頻度等に bpmを60で割った数値を入れるとBPMシンクしてくれます
トラックバーだと
精度的に小数点以下一桁が不足しているので長いとずれてきますが。
また時間と格子のオプションはダイレクトに 1000/(bpm/60)などいれると楽しい。

サンプル
BPMsync.exo

シーン機能を使う

0、一小節、beat単位でカットを考える(最重要)
1、シーンで作って、シーンオブジェクトの再生速度を0にする
2、再生位置を直線移動にして右側のトラックバーを一番右端に
3、シーンをグリッドに合わせて伸縮しておわり
カットを細かく分ける人向け


コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事