2008年07月30日

VOCALOIDファイルでリップシンクしてみた その3 modo 302

今までテンポをいい加減にして来たけど、ヴォーカロイドエディタの中では右上のところに出ている数字が基本的に演奏の速度を表わしているらしい。ただしトラックの上にTEMPOとBEAT欄があって、演奏の途中で変えられるから、ここだけ見ていてもダメみたいだ。

テンポ

今回は途中でテンポが変わるようなものはとりあえず諦めて、まずはこの数字からキーの時刻を割り出す方法を考えてみる事にした。で、上の画像では120.00っていう数字が出ているけど、これが何なのかって言うと、どうやら120個の四分音符で1分間の長さになると言う事らしい。と言う事は、1つの四分音符の長さは60秒÷120個=0.5秒って事になる。

ボーカロイドデータはMIDIが基になっているので、時間の表現方法もそれに倣っているようで、EventListとして出てくるデータのイベントの出現タイミングのデータはMIDIデータと同様の表現方法で表わされているようだ。

MIDIでは四分音符1つを480か960クロックで表わすのが一般的らしく、ヴォーカロイドのマニュアルを眺めていたら1秒間の分解能480という数字が見つかった。だからテンポ120の場合、四分音符1つが0.5秒でそれが480クロックなので、1秒を480÷0.5=960クロックとして計算すれば、クロックを時刻に変換できそうだ。

イベントのキーを打つ時刻をイベントデータから変換するには以下の式で良さそうだ。

イベント時刻=イベントデータ÷(分解能÷(60÷tempo))

今回は分解能が480で、tempoが120なのでイベントデータを960で割れば時刻が出るって事だな。

それから肝心のモーフィングアニメーションの方だけど、前回バージョンは母音の口の形を単純に繋ぐだけだったけど、それだと発音できない音とかが出てきたので、今度は母音の口のかわりに発音するモーションを複数モーフマップのエンベロープデータとして作成しておいて、それを繋いで使おうと思う。作業の流れは下の図のようになるかな。

fig02

例えば前回の「み」の発音なら「n」の口の形から「i」の口の形に変形させるモーションになるわけだけど、nのモーフとiのモーフが発音時間内でどのように変化するかをデータ化しておいて、

fig03

ボーカロイドデータから抽出した発音の長さに割り当ててやれば、モーフィングアニメーションのエンベロープデータになる。これを各モーフマップごとにリストとして蓄積しておいて、最後にそれぞれのエンベロープを時間軸に沿って合成してやればモーフマップごとのモーションカーブが生成できるはずだ。

fig04

ただ、全ての音に対してデータを作ったら大変なので、エンベロープデータが存在しない音については母音データから生成するようにすればいいだろうな。

でも今回は計画だけ。それではまた次回。

スクリプトまとめページ( Down Load はこちらから)  

カテゴリー別ページ



take_z_ultima at 12:01│Comments(0)TrackBack(0)modo | CG

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 

Archives