2019年11月10日

ラヴェル「高雅で感傷的なワルツ」動画の編集

 ラヴェル「高雅で感傷的なワルツ」を Sound Canvas VA で全曲やってみました。昔 Nifty-serve の FMIDICLA で発表した MIDI データですが、今回全面的にテンポを見直しました。動画では、テンポを表示しながら演奏しています。

 動画の編集も少しだけ頑張ってみました。映像ソースは Alchemusica の演奏を QuickTime Player の「新規画面収録」で録画。音声ソースは Alchemusica のオーディオ録音で保存したものを Audacity でレベル調整。QuickTime Player の録画の時も、SoundFlower を通して音声を録音してあります。

 映像の方を iMovie で開き、タイトル画面と、「Valse 1: Modéré」などというテロップを入れる。

20191110-1.png

 映像側はこれでよいとして、別録りした音声データと組み合わせてみた。iMovie 上で、オーディオの開始位置をなるべく合わせる。目分量ではあるけど、0.1 秒もずれてないはず。

20191110-2.png

 元の動画のオーディオをミュートして、mp4 で書き出してみた。すると、最後の方で音ズレを起こしているのです。Valse 8 の冒頭を切り出してみました。ピアノロールと音声がずれているのがおわかりでしょうか。映像と音声が別々に進行しているので、時間のわずかな誤差が積み重なって、曲の最後の方では1秒近くずれてしまっている。

 ここはちょっとトリッキーな処理が必要。まず、動画の先頭から「○分○秒」の位置を正確に知るため、今作った mp4 ファイルを VLC で開く。「再生→指定時間へジャンプ」を使って、動画の最初の方、たとえば 00:05 にジャンプする。

20191110-3.png

 画面の左上に「その時点での MIDI データ上の位置」が表示されている。このデータを Alchemusica で開いて、「MIDIデータ上の位置」を「先頭からの時間(秒)」に直す。この場合だと、「MIDIデータ上の位置」が 1:3:0 なので、イベントリストウィンドウを開いて 1:3:0 の位置にダミーイベント (@text とか) を挿入して、表示を "time in seconds" に変えればよい。あ、ちょうど 1.000 秒だ。そりゃそうだな、最初の2小節は tempo=120 で初期化データを送っているから、2拍はちょうど1秒になる。

20191110-4.png

 同じように、VLC で動画の最後の方、15:56 にジャンプする。MIDI データの位置は 598:3:403 となった。

20191110-5.png

 Alchemusica 上でもう一度ダミーイベントを入れて、秒数に変換。951.100 秒で、妙にキリのいい数字だな、と思ったが、Alchemusica では画面書き換えを 100 ミリ秒ごとに行っているためだった。

20191110-6.png

 映像のタイムスケールを変更して音声に合わせ、音声は開始位置を合わせる。ややこしいので、下の図をみてください。ffmpeg を使って、タイムスケールは itsscale、開始位置は itsoffset オプションで指定する。-map 0:v -map 1:a は、最初(0番目)の入力から映像 (v) を取り出し、次(1番目)の入力から音声 (a) を取り出すオプション。

20191110-7.png

 うまくできました!

 本当は、タイトルやテロップを入れたり、最後をフェードアウトするのとかも、ffmpeg でやりたいところ。今後の課題だな。

タグ:DTM 音楽
Posted at 2019年11月10日 22:50:52
email.png