何番煎じか分からない音同期の話

あけましておめでとうございます。

BMS制作についてのAdvent Calendarがあると聞き勇み足で登録したのはいいのですが、書くことあまり無いんだよね。困った。なので今さらそんなこと言われなくてもわかってるよ! ハゲ! と罵られそうな記事でも書こうと思います。

あと2015年現在ハゲていません。これだけは真実を伝えておきたかった。

★誰お前

iimoといいます。BMS/BGA界隈だとビームの人なのかな。同人だと東方ジャンル中心、一番のヒット作は艦これ替え歌です。もうわかんねぇなこれ。

BOFU2015では「Dreadnought」って曲と「ノーイベント・グッドライフ」って曲のBGAを担当しました。

インプレを書いてくださった皆さん、本当にありがとうございました。

★今日書くこと

BGAにおける(BGAじゃなくても良い)音同期、というか曲同期の話です。それこそAEオフ等でも何人もが何回も発表している内容なので、それだけみんな苦労しているんだろうなと思います。vimeoのリンクを貼るだけでも良いといえば良いのですが、いきなり30分とかの動画を見ろと言われても引くと思うので文章にしたいと思います。あとせっかくですしBMS作者さん向けの内容も書けたらなって。

ただこういう記事の書き方に慣れていないので、途中で飽きるかもしれません。飽きたらvimeoのリンクを貼って終わりにしたいと思います。

★音との同期はめんどくさい?

音楽にピッタリ合って場面が切り替わったり、オブジェクトが動いたり。音と完璧に同期した動画は見ていて気持ちいいですよね。曲の良さを何倍にも増幅させたり、合わせて一つの作品としての質を高めたり、可能性は無限大です。BMS作者の方はそんなBGAを作ってくれたらきっと嬉しいでしょうし、BGA作者だって自分の動画がそうだったらとても嬉しいです。でもね、

音に同期させて動画を作るのって、クソめんどい。

これに尽きます。とにかく面倒なのです。たまに無音の動画素材とかを作ると実感します。同期を考えないって、こんなに楽だったんだ……!

☆なぜ面倒なのか

音は目に見えないからです。例えばあるタイミングで真っ黒の画面から真っ白の画面になる動画があったとします。これはコマ送りで見れば何秒の何フレーム目で切り替わったのか一目瞭然ですよね。対して音は耳で判断すると「このキックは本当にこのフレームで鳴っているのか? 1フレーム後なのでは? いや、前?」とはっきりしないわけです(実際動画のフレームの方がおおざっぱなので、どちらでもないことがほとんどですが)。そのはっきりしないものを確信に変えるため、何度も何度も同じところを聴くはめになったりして手間がかかります。場合によっては作曲者より多く聴いているかもしれません。

こう書くと「波形を出せば視覚で判断できる」と言われます。俺だってそう思います。

海苔ではないにしろ

うん、やっぱり分からないです。アタリは付けられるけどね。

☆以前はこの悩みが無かった

唐突に懐古な話をしますと、今でこそ.mpg等の動画を用いたBGAが主流になってきましたが、以前は連番で出力した.bmpを手で並べて配置するのが一般……というよりその方法しかありませんでした。BMSファイルをテキストエディタで覗いてみると、バラバラになった音声ファイルがびっしりと定義され、その下の記述で配置されていることは皆さんご存知の通りです。そしてBGAも同様に、バラバラの.bmpがびっしり定義され、配置されていました。実はこの形式、ある一点については.mpgでの制作と比べ物にならないほど優れていました。音同期です。

何しろ音声ファイルがバラバラになって配置されているので“どの音がどのタイミングで”鳴るのか見ただけで完璧に分かります。そして“合わせたい音の横に出したい画像を置けばいい”のです。こんな楽な音同期が他にありましょうか。いや、無い。ならばもう連番.bmpに戻ればいいのではないかと懐古主義的な言い方もできますが、そこはそれ。何故.mpgでのBGAに本体が対応したのか、何故.mpgでの制作が主流になったのかを考えれば……そう、音同期のしやすさを犠牲にしてもお釣りが来るほど、デメリットが多かったのですね。

「限られた枚数に収めて作るのが難しい」「単調になりがち」「定義と配置の作業が面倒」「使うツールが多くなる」「大会の登録締め切り直前までBMSの制作が終わらないと、BGAの配置が間に合わない」「なによりもっと多くの表現をしたい」

そんなわけで.mpgの一本BGAを定義という答えが出されたのでした。

えっ、拡張BGA定義? それは誰か詳しい人が書いてください……

★具体的に面倒を減らしていく

このままでは「音同期めんどくさい! やだ! 小生やだ!」と言っているだけの記事になってしまうので、少しでも楽になる方法を紹介していきたいと思います。それぞれの方法に得手不得手がありますので、ケースバイケースでお使いください。

なお書いている人はWindows環境で主にAfter Effects(AE)を使用しています。環境が違う方は、なんかこう上手い具合に拾ってください。

☆1.気合いで頑張る

とにかくトライアンドエラーを繰り返して合わせます。脳が筋肉で出来ている人にオススメです。AEではテンキーの「.」を押すことで、カーソルのある位置からオーディオのみのプレビュー再生ができます。これを駆使してひたすら再生と停止を繰り返し、ジャストなタイミングを割り出してください。

しかし今この記事を書いている時点では、AEのオーディオプレビューに「頭2フレームほどが欠けて再生される」という致命的なバグが発生しているため、2014年以前のバージョンでしかできなくなっています。最新版のアップデートを施しても改善されていなかったので、2015版の間はこのままなのかな……Adobeさんには早急な修正をしていただきたいところです。

なおこれから書く他の方法を取っても、大抵最終的にはこの作業が発生します。

※メリット

  • 確実
  • 下準備が要らない
  • 難しいことを考えなくて良い

※デメリット

  • 途方もない時間がかかる
  • 複雑な曲になるほど難度が上がる
  • 耳が疲れる
  • 曲に飽きる(殺意さえ湧くことも)

☆2.波形を見て合わせる

さっき無理って言ったじゃん!!

待ってください、完全に無理とは言っていません。例えばイントロやアウトロで音の数が少ないとき、曲の中で無音部分や特徴的なポイントがある場合、この方法は有用です。AEではオーディオのあるレイヤーを選択した状態で「LL」を入力すると、波形だけをタイムラインに表示できます。その状態で境界をドラッグして倍率を上げ、波形を見やすくしましょう。

なお波形で合わせた後は大抵気合いで修正が待っています。また渡された曲がSchranz等の激しい曲だった場合、ミックス前の海苔波形だった場合は諦めて他の方法を試しましょう。音声の加工に自信のある方は、イコライザエフェクト等を駆使して見やすいよう強調した波形を作るのも手です。

※メリット

  • そこそこ確実
  • 波形がそう言っているという安心感
  • 下準備が要らない

※デメリット

  • なんだかんだで時間がかかる
  • 激しい曲、複雑な曲では不可能な場合も
  • 目が疲れる
  • 作業スペースを占拠して邪魔

☆3.自分のリズム感を信じる

この書き方だと気合いに近く感じますが、少し違います。AEのタイムライン上でテンキーの「*」を打つと、レイヤーを選択している場合はレイヤーに、選択していない場合は開いているコンポジションにマーカーが打たれます。

○の中にあるのがマーカー

こんな感じに。このマーカーを打つという操作はプレビュー再生中でも可能です。つまり音声プレビューしながら「ポン、ポン、ポン」とキーを叩けば、欲しいタイミングを全て出すことができる! やった! すごい! もちろんそんなに上手くいかない!!

例えばGAMBOL(A)を選曲して一発で全てピカグレ取れる人ならこの方法のみで良いと思いますが、つまり人類には無理ということです。そんな奴はBGA作ってないでメトロノームにでも転職した方がいい。では全く無価値なのかと言えばそんなことはありません。

四つ打ち等の一定のリズムが続く曲に対してはあまり有効ではありませんが、一部に三連符や五連符、付点の付きまくったリズムが発生する場合、曲として覚えていて口ずさむことはできても、波形で指し示すのは困難なことがあります。そんな時にこの方法でアタリを付け、上記2および1を組み合わせると大抵なんとかなります。他にも大まかに「このあたりでシーン切り替えかなー」という場所に打っておくのも良いでしょう。

また他の方法に比べてゆらぎが大きくなるため、敢えてゆらぎを出したいときにも使えるかもしれません。BMSでロックやジャズの曲を書くとき、ドラムスをきっちりリズム通りに置かず、ちょっとだけずらすのと同じ感覚です。もっともBGAにそんなゆらぎを求められることはほとんどありませんので、この記事がいかにノリと勢いだけで書かれているかよくわかると思います。

※メリット

  • 特殊なリズムに対して有効
  • 大まかなアタリを付ける際に有効

※デメリット

  • 確実性が皆無

☆4.BPMから1拍あたりのフレーム数を割り出す

統計を取ったわけではありませんが、Webで公開される動画は大抵30fps(1秒間に30フレーム)で作られていると思います。BGAを.mpgで作っている人も、ほとんどが30fpsでしょう。つまり1分間に1800フレームが存在するわけです。一方で楽曲にはBPM、すなわち1分間の4分音符数という値が存在します。あるのだから使うに越したことはありません。割ればいいのです。

1800を150で割ると12、なのでBPM150の曲に対して1拍あたり12フレームで制作すれば、動画の頭を合わせるだけで全てピッタリ合うということになります。8分音符なら6フレーム、16分音符なら3フレームです。言うまでもありませんがこの方法なら絶対にズレません。気合いで調整も不要です。

やったぜ全て解決!! ……と言いたいところですが、もちろんそんなことはありません。全ての曲がBPM150なら良いのですが、BPMが160の曲もあれば138の曲もあります。1800を160で割ると11.25……これはまだマシです。4拍に1回はピッタリ合うので、小節の頭を合わせればいくらかは作りやすくなります。138だと、13.04347826086957……13でいいや、と言いたいところですが、2分の曲だと約12フレームずれることになります。ダメダメですね。

つまるところ1800をピッタリ割ることのできるBPMなら非常に有効ですが、それ以外ではゴミということになります。なお60fpsで制作する場合は割り切れる候補が増えます。ただし手間も増えます。またBPM変化のある曲、いわゆるソフラン曲にも対応できません。

※メリット

  • 適用できれば一発で終わる
  • 絶対にズレない

※デメリット

  • 適用できる場面が少ない
  • ソフラン曲に使えない

☆5.拍数からキーフレームの間隔を引き延ばす

最近よく使う手です。4の逆で、曲の最初から最後までの拍数を数え、同数のキーを等間隔に並べた後、Alt+ドラッグで引き延ばします。

パッと見分かりにくいですが、やってみると伝わる

おおよそどんなBPMの曲にも対応でき、きちんと数えられるのであれば変拍子も関係ありません。ただし割り切れないBPMの場合はもちろん、

これは中央に近いので悩みどころ

ズレます。上記4の方法で出た端数がこうなるので、仕方ありません。近いほうのフレーム、もしくは手前のフレームに合わせて作るのが良いかなと思います。

この方法はソフラン曲に対応できないように見えますが、できます。BPMの変わる前後で切り分け、それぞれの拍数だけ並べて引き延ばせば良いわけです。

一見良い方法に見えますが(だから自分で使っているんだけど)、下準備にしては結構手間がかかること、並べるキーが1個足りなかっただけで大惨事になることが難点でしょうか。何ヵ所かでテスト再生してみて、ずれていないことを確認するのがおススメです。

えっ、段階的ソフラン? そこは気合いか波形見るしか無いんじゃないですかね……

※メリット

  • だいたい何にでも使える

※デメリット

  • 下準備に少し手間がかかる
  • 1個数え間違えると大惨事

☆6.AEの機能を使う

AEには「オーディオをキーフレームに変換」という便利な機能があります。最初からそれを紹介しろよと言われそうですが、どうやらこの機能は単純に音量で判断しているのか、楽曲をそのまま変換してもロクなことになりません。なのでBPMに合わせてメトロノーム音等を作成し、それを変換するという方法です。

これについては鑓田さんがAEオフで解説した動画があるので、それを紹介させてもらいます。前述の5の方法と近いのですが、こちらのほうが事故率は低いと思います。分割すればソフラン曲に対応できるのも同様ですね。

※メリット

  • だいたい何にでも使える

※デメリット

  • 下準備に手間がかかる
  • 使うツールが増える

ついでの紹介になってしまいますが、拍子以外の音(メロディ等)に合わせて動画を作りたいときの方法をメツヤさんが解説しているので、こちらも貼っておきます。

☆7.サードパーティー製プラグインを使う

だんだん内容がAEオフじみてきました。Trapcode Sound Keysというプラグインがあるのですが、これは名前の通りオーディオからキーを生成するプラグインです。なんだ、6の内容と変わらないじゃないかと思われるかもしれませんが、こちらはオーディオスペクトルから生成できるため、例えば低音から抽出すればキックの音に合わせてキーを生成、なんてこともできるわけです。すげぇな。

ただしあくまで機械処理なので、どんな状況にも対応できるわけではありません。BGAを付ける楽曲が複雑であればあるほど調整は難しいでしょうし、結果も思い通りにはならないでしょう。個人的な見解としては「音に合っている風のエフェクトをかけるのには適している(オブジェクトを変形させたりとか)が、音同期の指標として使うにはいまいち」といった感じです。正確ですが確実ではありません。

※メリット

  • こだわらなければ楽

※デメリット

  • 約25000円の出費
  • 調整がやや面倒
  • 対応できない状況も多い

☆8.作曲者に泣きつく(Type1)

「すみません、リズム全然分からないのでリズム隊だけのwav書き出してもらってもいいですか」

※メリット

  • 波形が確実に見やすくなる

※デメリット

  • 作曲者に手間をかけさせてしまう
  • そもそも言い出しにくい
  • それでも分からない場合だってある

☆9.作曲者に泣きつく(Type2)

「この曲BPM178ですけど、180にしてもらうことってできますか?」

※メリット

  • とても作業がしやすくなる

※デメリット

  • 作曲者に手間をかけさせてしまう
  • 曲の個性を殺す
  • 多分友達を失くす

★BMS作者の方へ

上の9については冗談のようなものなので気にしないでください。少なくともこの要望を出したことはありません。BGAというものの特性上やはり曲あってのものですし、その曲の可能性を狭めるようなことはしない方が良いと考えています。本当です。

ただ、例えば「もう登録期限まで3日しか無いけど、今からBGAの制作を依頼するのは流石にちょっと……」というとき、曲のBPMが120や150や180だったら……うっかり請けてしまうBGA作家もいるかもしれません。

……いや、どうだろう。無いかな……もちろんそんな事態にならないのが一番だと思います。BMS制作は計画的に!

★まとめ

そんなわけで9通りほど方法を書いてみましたが、いかがでしょうか。全部知ってるし試したよ! という人もいるでしょうし、知らない方法があった人もいるでしょう。もっと他の奇抜な方法で同期させている人もいると思いますが、良ければこっそり教えてくれたら嬉しいです。こっそりね。

自分では5番目の方法をメインにしつつ、置くキーは1→2→3→4→1とループして切り替わるテキストにしています。こうすると何拍目なのかも同時に確認できて効率的です。オススメ。

どの方法も一長一短、全ての状況に対応できるわけではないので、必要に応じて選択したり組み合わせたりして自分好みの方法を見つけてもらえればと思います。

それでは良いBGAライフを!

★おまけ

冬コミで頒布される音楽CDのクロスフェードを作ったので、せっかくだし宣伝しておきます。気に入ったら買って(直球

★追記

yama_koさんと「BPM入力したらキー打ってくれるスクリプトとか無いのかな」と話したら、彼が即見つけてきてくれました。

指定した時間(フレーム/秒/BPM)ごとにマーカーを配置するスクリプト – AEP Project

というかAEP Projectかよ!! いかにiimoの捕捉能力がガバガバか、よく分かります。yama_koさんありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です