Live 2Dなどのモーフィングアプリを使ってMVを制作する際、楽曲のリズムとキャラの動作をシンクロさせたい場合があるかも知れません。その方法を3つ試してみましたのでご紹介します。
Live2Dアニメで楽曲とキャラをシンクロさせる方法3選
今回ご紹介する3つの方法は以下になります。
- リズムを聞きながらリアルタイムでキーを打ち込む方法
- テンポからキーフレームを換算する方法
- 楽曲のリズムトラックに合わせてキーを打つ方法
リズムを聞きながらリアルタイムでキーを打ち込む方法
最初の方法は、リズムを聞きながらキーを打ち込む方法です。もっとも直接的でわかりやすい方法ですが、ある程度のリズム感が求められます。また、ある意味ちから技ですので、体力(指先の持久力?)が必要になります。
「左まゆの上下」は、キャラに使っていないパラメータです。このパラメータを拍位置用として使いました。
アニメーションを再生して楽曲を流し、リズムを聞きながら一拍ごとに左側のパラメータの赤丸をクリックします。すると、クリックしたタイミングで時間軸上に赤丸が並びます。
テンポからキーフレームを換算する方法
テンポからキーフレームを計算で算出する方法です。
実際にExcelを使って算出した例です。上にあるT(tempo)(テンポ)に楽曲のテンポ、例は4分音符=120(計算結果がわかりやすい例です)を入力すると、1拍目までの時間は0.5秒、フレームは0:15(ゼロ秒15フレーム)と算出されます。(フレームレート=30/秒の場合)
テンポ120は、1分間に120拍という意味ですので、一拍当たりの時間は60秒÷120で、0.5秒ということになります。
各項目の計算式は、次のようになります。
拍(B:beatの頭文字):ここは、0から順に曲の長さ分の拍数が入ります。テンポ120で3分の曲なら、360拍です。本来は0の位置が1拍目ですが、計算では0から数えるようにしています。
時間(t):拍=Bとし、テンポ=Tとすると、t=60 X B ÷ T(秒)
フレーム(s):フレーム(s)(秒数)は、Int関数を使ってInt(t)で求められます。時間t(秒)の整数部分です。(Int関数は、数字から整数部分を取り出す関数)
フレーム(f):1秒未満は、1秒を30分割したフレーム数で表されます。時間tからフレーム(s)を引いた値が、小数点以下の0.0・・秒から0.999・・秒までの数字になります。この数字に30をかけた値がフレーム数となりますので、計算式としてはフレーム(f)=(t-Int(t))X30となります。
制作したアニメーションの音源のテンポは127です。
上図の青枠がテンポ127で算出した値で打ち込んだキーポジションになります。上部のフレーム目盛りを確認しながら打ち込むことになりますが、数値が細かいせいもありかなり面倒です。
楽曲のリズムトラックに合わせてキーを打つ方法
自作の曲でしたら、DAWの特定のトラックからボーカルの音だけや、メトロノームやあるいはドラムの一部の音を容易に取り出せます。拍だけのリズム音をタイムラインの一つのトラックに入れ、その波形を見ながら必要なパラメータのキーをクリックで打ち込んでいく方法です。
ボーカルについては、声に合わせて口パクしてくれるリップシンクという機能があります。実際に使ってみると瞬間的に口パクを作ってくれます。音の大きさに合わせて口の開き方を変える仕様なので、例えば口を閉じて発声する「ん~」の場合でも、口を大きく開いてしまいますが、細かなところは手で調整します。
残念ながら楽曲のリズムにシンクロさせてくれる機能はないため、今のところ楽曲に合わせて手で打ち込むしかなさそうです。
この方法は、実際のリズム音の位置を視覚的に確認しながらキーが打ち込めるため、何といってもわかりやすく、誤差も生じにくく、そして直感的です。3つの方法の中では正確さと感覚、効率が両立した方法だと思います。
上図の赤枠がメトロノームのクリック音が入った音源で、音のある部分に波形があることがわかります。波形幅が2~3フレームにまたがっているせいで、形はあまりきれいではありませんが、基準位置の目安としては十分です。
青枠は、実際にリズムに合わせて動かしている頭部のZ方向を変化させるキーです。この例では1拍、3拍の奇数拍と2,4泊の偶数拍で頭部が左右に振られるよう設定しています。
お勧めは、リズムトラック
3選の中でのお勧めは、3つ目のリズムトラックを用いた方法です。何といっても視覚的にわかりやすいですし、ずれているかどうかが一目でわかります。
他の方法は楽曲だけが頼りです。視覚的な指標がないため、聞いて判断するしかありません。
それぞれの方法による誤差
各方法とも、きちんと打ち込みさえすればタイミングは一致すると思われるかも知れません。ですが、現実にはそれぞれ微妙にずれています。
以下のタイムライン上の緑枠=メトロノーム、赤枠=リズムを聞きながらリアルタイムキー入力、青枠=計算式による拍のフレーム位置です。それぞれ1~3フレームほどのずれが生じています。
こうなるとどれが正しいのか何とも言えません。
タイムラインの1目盛りは、1フレーム=30分の1秒です。誤差は大きくてもせいぜい3フレームほどです。このぐらいの誤差でしたら、表示(アニメーションの動作スピード)や音声再生、その他パソコンの処理能力、グラフィック処理能力などの能力差により差が生じてしまう可能性があります。使用するパソコンの種類や仕様でも変化してしまうかも知れません。
ただ、それぞれの相対位置にずれはあるものの、どの方法でも拍と拍の間の時間は安定しています。どれが正しいかを追求するよりも使いやすくわかりやすい方法を使って仮のキーを打ち込み、最終的には楽曲を聞き動きを確認しながら各キーを前後に移動させて微調整するのが現実的に思えます。
まとめ
理論的に正しい拍の位置とは一体どこなのだろう。どうしても知りたくなりExcelを使って各拍の時間とフレーム数を算出してみました。
面倒だったのは、映像のフレームの数え方が、分 → 分、秒 → 秒、1秒未満 → フレームという表現を使っている点でした。1秒は通常は30フレームなので、小数点以下の数値に単純に30を掛けた数値が換算値です。60フレーム/秒の場合は、60を掛けることになります。ただ、実際に表計算まで動員して算出してみたものの、面倒なだけであまり現実的でないこともわかりました。
また、キャラの動かし方によってもシンクロ感が異なります。拍の位置にキー位置をピッタリ重ねたとしても、きれいにシンクロするかどうかは実際にやってみないとわかりません。場合によってはキー位置を少し前に移動させた前ノリ気味の方がしっくりくることもあるでしょうし、逆に後ノリ気味がベターな場合もあると思います。
最終的には自分の目と耳で確認してキーの位置調整を行う必要があるようです。