(BACK)

解説:ミュージッククリップの作成

@ver0.9a5
10/10 加筆修正
音声のストリーミング再生を使用し、画面と音が同期しているミュージッククリップ(Promotion VideoやMotion Graphicsと呼ばれるもの)を作成可能である。

0.理屈
「画面と音が同期している」とは、「全ての音と画面が、わずかの狂いもなく、予定通りの時間で再生される」という事である。
理屈の上では、どんなイベントであってもフレームカウント(所要時間)を自分で指定する以上、画面と音は一致する筈であるが、実際には処理速度の変化などにより非常にズレが生じ易い。
また、作成した環境以外で再生した時に、同様のズレが起こるのもしょっちゅうである。

これを内部で修正することを同期を取ると言い、それを実現するのがストリーミング再生機能である。
これを使うことで、イベントの所要時間は信頼のおけるものとなる。

まず、簡単な例を挙げる。
10秒の曲に合わせて、星が右から左へ、左から右へと1往復するような内容のflashを考える。
右から左へ移動するためにちょうど5秒、左から右へも5秒とする。
この場合、
0秒の時に、10秒の長さの音を再生開始する。
0秒の時に、右から左への移動イベントを開始。このイベントは5秒である。
5秒の時に、左から右への移動イベントを開始。このイベントは5秒である。
10秒の時に、終了
という流れのイベントになる。
ここで重要なのは、「0秒」「5秒」「10秒」という、イベントが発生する時間である。
イベントエリアには、「フレーム」欄にて、そのイベントが何フレーム目に実行されるかを知ることが出来るが、それが「何秒目か」はわからない。

そこで、時間にfpsをかける事で、フレーム数に変換する

先の例がたとえば12fpsであれば、1秒=12フレームであるので、
0フレーム目に、10秒の長さの音を再生開始する。
0フレーム目に、右から左への移動イベントを開始。このイベントは60フレームカウントである。
60フレーム目に、左から右への移動イベントを開始。このイベントは60フレームカウントである。
120フレーム目の時に、終了
というように書き換えることができる。
このフレーム数をもとにイベントを作成していくことになる。

実際には、音に合わせて画面を流すようなflashである場合、画面を切り替えるべき小節の境、特別な画像を挿入すべき瞬間など、重要な時間的ポイント(フレーム数))をあらかじめ計画し、準備することになる。

本記事では、この「要となるフレーム数」をキーフレームと呼び、それを計測する方法について解説する。
1.タイミングの計測
MP3Directcutなど、音の中のある点が「1.234秒目」と細かく計測出来るソフトを使い、
前述した、「画面を切り替えるべき小節の境」「特別な画像を挿入すべき瞬間」などの重要な時間的ポイントを計測する。
ぶっちゃけ、計測するポイントは多いほど良い。

曲のテンポが変わらずに計算で算出出来そうな時はもちろんそれでも良い。
その場合は「1小節のフレーム数を10倍して10小節のフレーム数を算出」のように積分のような方法ではなく、「10小節のフレーム数を1/10して1小節のフレーム数を算出」のように微分のような方法を取る事。どうしても小数になるので積分の方法だと後に行くほどズレが生じやすくなる。

ポイントを時間順に計測して記録し、fpsを掛けて、実際のフレーム数を算出する。整数に丸めること。

例:タイミングポイント表(12fps)
ポイント(秒)キーフレーム
0.23
2.35
4.51
6.63
8.77
17.05
17.78
19.46
3
28
54
79
105
204
213
233
この例では12fpsであるので、1つ目の「0.23秒」というポイントは、(0.23x12=)「3フレーム目」と同じ意味となる。

ブラック電卓を使う場合は、「前フレームとの差」と「定数(+100)」の欄を計算しておく。
2.paraflaでの作業
音声ファイルを同期再生する為には、mp3ファイルの再生時の「MP3イベント」にて、「ストリーミング再生」をすればよい。

ここでは、再生を開始する前にいくつかの処理をする事を考慮し、イベントの開始とmp3の再生を100フレーム目と定義する
前述のキーフレームは全て+100して扱う。(推奨:ブラック電卓の「定数」機能)

3.開始イベントの作成
100フレーム目にイベントが始まるので、その前の100フレームぶんを使って、開始イベントと同期のための時間稼ぎイベントを作る。

画面(ボタン)を押すと開始するイベントの例(100フレーム目を再生開始とする)
・「画面をクリックすると開始」的なCGを表示、ボタンにする。アクション=「ラベルへジャンプ:_NextLabel」
・アクション「停止」
・アクション「何もしない:nフレーム」 ←再生がちょうど100フレーム目になるように、時間稼ぎをする
・ラベル(名前は何でもいい)
・アクション「画面消去・ALL」(必要に応じて)
・MP3アクション:ストリーミング再生(BGM再生開始) ←ここが「100フレーム目」になるように調整
・イベント開始
4.シーンの編集
編集はキーフレームと次のキーフレームまでの間を1シーンとし、その単位で行う。
例えば今のキーフレームが100、次のキーフレームが150である場合、このシーンは50フレームで作成する事になる。(推奨:ブラック電卓の「前フレームとの差」機能)

1つのイベントだけで良い場合は、フレームカウントを50にすれば良い。
複数のイベントを使う場合は、フレームカウントの合計が50になるようにする。
シーン先頭の「フレーム」欄の数が、計算したキーフレームと一致しているか常に意識すること。
5.終了イベントの作成
イベントが全て作り終わったら、リプレイ待ちのイベントを作る。

再生が終わり、画面(ボタン)を押すとリプレイするイベントの例
・アクション「サウンド停止」(必要に応じて)
・アクション「画面消去・ALL」(必要に応じて)
・「画面をクリックするとリプレイ」的なCGを表示、ボタンにする。アクション=「フレームジャンプ:1フレーム」(←最初に戻るという事)
・アクション「停止」
これにより、イベントが終了したらボタンを表示して画面を停止し、ボタンが押されたら再び再生することになる。

Written by D4U