Unreal Engineで外部入力のLTCでSequencerを制御する

今回は、UEでLTCを入力してSequencerをコントロールするところまでやってみたいと思います。

下準備(Reaperでタイムコードを出力する)

今回は、説明の簡略化のためにオーディオデバイスを外部にせずにReaperからVoiceMeter Bananaを用いてループバックすることで入力としたいと思います。 実際にオーディオインターフェースなどで行う場合は、この作業はいりません。

メニューバーのInsertからTimecode Generatorを選択

すると、Timecodeトラックが生成されます。

トラックを右クリックしてSource Propertiesを選択

使いたいフレームレートおよびスタートタイムコードを指定します。

右上のオーディオデバイス情報が記載されているところをクリックするとオーディオ設定が開けます。

今回はVoiceMeter Bananaを用いるのでVoideMeter Virtual ASIOを選択します。

VoiceMeterのインターフェースでちゃんと出力されていることを確認します。

オーディオ入力の確認

LTCが入ってくるオーディオ入力はWindowsのシステムの入力のデフォルトのデバイスが使用されます。 UE側でASIOなどで特定のデバイスの特定のチャンネルを指定する方法はないように思われます。

今回はVoiceMeterからの出力を使いたいのでVoiceMeter Outputを選択します。

UEでの設定

さて、下準備が整ったのでUEでの設定に入っていきたいとおもいます。

プラグインの有効化

プラグイン設定を開きます。

以下の5つのプラグインを有効化します。

  • Audio Capture
  • Audio Capture Timecode Provider
  • Timed Data Monitor
  • Media Framework Utilities
  • Media IO Framework

Timecode ProviderとTimed Data Monitorのウィンドウを表示する

メニューバーのWindow>Virtual ProductionからTimecode ProviderとTimed Data Monitorを選択して開きます。

開くとデフォルトのシステムタイムコードプロバイダが動作していることが確認できます。

Media ProfileおよびAudio Capture Timecode Providerの作成

BluePrintの作成から、Audio Capture Timecode Providerを継承したクラスを作成します。

クラスの設定は以下のようにします。使いたいタイムコードのフレームレートを選択します。Auto Detectのチェックボックスを有効化すると、フレームレートが自動で識別されます。

Media Profileを作成します。

作成すると警告がでますが、Configure Nowでできたダイアログ通りに作成してしまっても問題ないです。(Proxyが作成されます)

Media Profileは以下のような設定にします。ポイントとしてはProject Setting Overrideのチェックボックスを有効化して、Timecode Providerを先ほど作成したものに置き換えます。

タイムコードを受けれるようになったことがわかります。 youtu.be

このままだと、プロジェクトを開きなおすたびにMedia Profileの設定が戻ってしまうので、Project SettingsでStartup Media Profileを作成したものにしておきます。 なお、都度変えたい場合はMedia Profileを開いてセーブなどするとProfileが有効化されます。

タイムコード経由でSequencerを制御する

テキトーにSequencerでCubeが平行移動するアニメーションを作ってみました。Sequenceを作成する部分は今回は省略します。

SequencerのFPSが書いてあるところをクリックして、Show Time AsをNDF Timecode、Clock SourceをTimecodeにします。

Reaperを再生し、Sequencerも再生すると、Sequencerが入力タイムコードに同期して動くようになります。

youtu.be

おわり

以上がUEでLTCを入力にSequencerを動かすところまでになります。

基本的にむずかしいところはないかと思いますが、個人的にはオーディオ入力がWindowsのデフォルトデバイスになってしまうところがややこしい気がしました。

UEではBMDやAJAのデバイスでTimecode・Genlockの出し受けができるので、そちらも有用かと思います。基本的な手順はかわらずTimecode ProviderやCustom Time Stepなどを作成することでコントロールすることができます。

BMDやAJAでタイムコードやGenlockの設定をする方法は公式のドキュメントがあるのでそちらを参照してください。

docs.unrealengine.com

LTCのドキュメントがなくちょっと詰まったため、本記事を作成したしだいです。

本記事がどなたかのご参考になれば幸いです。