DR-701DとFX30のタイムコード同期 〜DR-701Dのタイムコード
以前ご紹介したTASCAMのDR-701DというオーディオフィールドレコーダーとSONYのFX30を組み合わせて収録した素材を、Appleの動画編集アプリであるFinal Cut Pro(ファイナルカットプロ 以下FCP)に読み込み、タイムコードを同期の基準とした同期クリップの作成を試します。この組み合わせで収録した場合、カメラで収録した音声とレコーダーで収録した音声がズレないという点での同期自体は問題ないのですが、「FCPのオーディオ同期」で記載したように、タイムコードの値はなかなか一致しません。そもそも、DR-701Dのタイムコード仕様がはっきりせず、カメラと同じタイムコードフォーマットで記録することができません。
今回は、FCPでの同期クリップの作成をとおして、DR-701DとFX30のタイムコード同期とDR-701Dのタイムコード仕様について考えます。なお、タイムコードについてや、タイムコードのNDF・DF(ノンドロップフレーム・ドロップフレーム)、フレームレートとタイムスケールについては、「タイムコードとフレームレートの小数点」も併せてご覧ください。(本文中でも、上記のページと関連のある箇所にはリンクを施してあります。必要に応じてご覧ください。)
INDEX
HDMI接続
DR-701DとのHDMI接続に対応したカメラのリストはTASCAMのホームページに掲載されており、こちらから確認することができます。今回組み合わせてみるSONYのFX30は残念ながらこのリストにないのですが、リストの更新自体が2022年1月6日とFX30の発売日以前であり、テスト自体が行われていない状態だと思います。
カメラとDR-701Dを組み合わせたHDMI同期収録では、HDMI信号での同期に加えてタイムコードの読み取り、RECトリガー信号での録音開始といった機能があります。タイムコードの読み取りでは、HDMI信号からカメラのタイムコードを読み取ることで、音声ファイルにカメラと同じ時刻のタイムコードを記録することができます。RECトリガー信号では、カメラの記録開始を検知してDR-701Dの録音を開始することができます。
HDMI設定
接続当初はDR-701Dでタイムコード情報とRECトリガーを上手く受信できなかったのですが、FX30のメニュー設定でセットアップのp11「外部出力」→「HDMI出力設定」→「Time Code出力」を「入」にすることでタイムコード情報を受信できるようになりました。同じく「外部出力」の「HDMI機器制御」を「入」にすることで、RECトリガーも機能するようになりました。
DR-701DでHDMI信号を同期信号として受信しているか、HDMI信号からタイムコード情報を読み取っているかは、DR-701Dの液晶モニタ左上に「HDMI」や「TC」の表示があるかで確認できます(a02_photo_03)。DR-701Dのタイムコード入力設定をHDMIにすれば、「TC」の点灯も確認できます。FX30との接続で、同期運転は問題ありません。
DR-701Dのタイムコードフォーマット
上記の状態で同期収録をしてみると、FCPに読み込んだ素材で音声を基準とした同期処理は問題ないのですが、ビデオクリップとオーディオクリップのタイムコードは一致しません。DR-701Dで収録したタイムコードフォーマットを確認するためにFCPの情報インスペクタ「一般」ページでオーディオクリップの情報をみると、フレームレートが設定されていないようです。
タイムコードのフォーマットを設定できる別のオーディオレコーダーで収録したオーディオクリップのインスペクタには「ビデオのフレームレート」という項目があるのに対して(a02_fig_01 左)、DR-701Dで収録したオーディオクリップのインスペクタにはその項目がありません(a02_fig_01 右)。DR-701Dで記録されたタイムコードはどのようなフォーマットなのでしょうか。
DR-701Dのタイムコード設定
DR-701Dのタイムコード設定は簡便なもので、メニューのp12にあるTIMECODEページに以下の3項目があるだけです。
- SELECT:DR-701Dのタイムコードを歩進させるソースをLTC/HDMI/RTCの3つから選択する。HDMI入力からタイムコード信号を読み取る場合は、HDMIに設定する。
- POWER OFF GEN:DR-701Dの電源を切った状態でタイムコードを歩進させるかの設定。
- FILE TC OFFSET:HDMIの遅延が原因と思われるタイムコードの遅れを補正する(ファームウェアバージョン1.1から搭載)
2つの素材が常に同一のタイムコード値で同期するような完全なシンクロをするにはタイムコードのフォーマットを合わせる必要がありますが、DR-701DにはフレームレートやDF・NDFの設定が見当たりません。
タイムコード同期の確認とDR-701Dのタイムコード
タイムコードの同期状態を確かめるために、FX30のタイムコードを23.98fpsNDF、29.97fpsDF、29.97fpsNDF、59.94fpsDF、59.94fpsNDFと、5種類の設定でDR-701Dと同期収録してみると、いずれの場合もDR-701Dで収録したオーディオクリップには00から59までカウントして1秒繰り上がるタイムコードが記録されていました。また、各分でフレームカウントが飛ばされていないことから、カウントの間引きが行われないタイムコードであることが分かり、59.94fpsNDFか60fpsのタイムコードであると思われます。
59.94fpsの場合は1.001倍長いタイムスケール、60fpsの場合は実際の時間と同じタイムスケールのフレームレートとなります。以下の同期状態を検討した上で、59.94fpsNDFか60fpsのどちらに当てはまるのかを考えます。
タイムコード同期の確認 DFの場合
FX30でタイムコード設定を変えてDR-701Dと5分程度の同期収録した素材を、FCPで同期クリップに変換した結果が以下です。FCPのタイムコードのみを同期の基準とした自動処理では、タイムコードの値がピッタリと揃った同期クリップを作成できなかったので、手動ですり合わせを行っています。ここではタイムコードの同期状態を確認するのが目的なので、音声波形の一致具合は気にせず、タイムコードの値を揃えるようにクリップの位置を調整しています。
29.97fpsDFの場合
FX30の設定を29.97fpsDFにして撮影したビデオクリップとDR-701Dで録音したオーディオクリップとを同期処理すると、タイムコードと音声波形がかなり近い同期クリップが仕上がります。1、2フレームの誤差をタイムコードを基準に手動で修正した同期クリップのタイムラインがa02_fig_02です。
この時、オーディオクリップの波形は29.97fpsベースで3フレーム先行しています。つまり、オーディオクリップのタイムコードが29.97fpsベースで3フレーム遅れていることになります。これは、おそらくHDMI信号の遅延による誤差だと思います。
タイムコードの歩進についての誤差は、FX30のタイムコードに対してDR-701Dのタイムコードが60fpsベースで毎分0から3フレームの割合で増減しますが、誤差が広がっていくことはありません。
59.94fpsDFの場合
FX30の設定を59.94fpsDFにして撮影したビデオクリップをDR-701Dで録音したオーディオクリップと同期処理した場合も、タイムコードと音声波形がかなり近い同期クリップが仕上がります。1、2フレームの誤差をタイムコードを基準に手動で修正した同期クリップのタイムラインがa02_fig_03です。29.97fpsDFの場合と同様に、同期の状態は比較的良好です。
この時、オーディオクリップの波形は59.94fpsベースで6フレーム先行しています。つまり、タイムコードが59.94fpsベースで6フレーム遅れていることになります。29.97fpsの場合よりも誤差が拡大しているように感じますが、フレームレートが倍になっているため実質的な誤差は同程度です。これも、おそらくHDMI信号の遅延による誤差だと思います。
タイムコードの歩進についての誤差は、FX30のタイムコードに対してDR-701Dのタイムコードが60fpsベースで毎分0から2フレームの割合で増減しますが、誤差が広がっていくことはありません。
タイムコード同期の確認 NDFの場合
FX30では23.98fpsと29.97fps、59.94fps、119.88fpsのときに、タイムコードカウントをNDF方式に設定することができます。しかし、「FX30のTCデータをFCPに読み込み」で記載したように、FCPではFX30で撮影した29.97fpsNDFと59.94fpsNDFのファイルを、NDF設定のまま読み込むことができず、DFタイムコードとして読み込んでしまいます。そして、DFとして読み込まれてしまったタイムコードをFCPでNDFに変換すると、タイムコードの値が大きく変化してしまいます。そのため、FCPで同期処理をするにはFX30で収録したNDF素材は不向きだといえます。また、119.88fpsについてはFCPでタイムコード情報を読み込むことができません。
上記のような問題があるものの、DR-701Dで記録したタイムコードとNDFタイムコードとの同期具合を確かめるために、FX30で収録したNDF設定のクリップと同期処理した結果が以下です。収録素材の長さは、DFの場合と同様に5分程度です。
23.98fpsNDFの場合
FX30はフレームレート設定が23.98fpsのとき、タイムコードのカウント設定はNDFのみで、DFはありません。FCP側でも、クリップのフレームレートが23.98fpsのとき、DF・NDFの切り替えはできません。つまり、23.98fps設定の場合はNDFのみでの運用となります。
23.98fpsNDF設定で撮影したビデオクリップとDR-701Dで録音したオーディオクリップとを、FCP上でタイムコードのみを基準に同期処理した同期クリップのタイムラインがa02_fig_04です。タイムコードを基準にクリップの位置を揃えると、音声の同期は全くとれていません。
RECトリガーは正常に機能しているので、本来はクリップの頭がそれなりに揃うはずです。また、撮影時にはビデオクリップとオーディオクリップのタイムコードはほぼ同じ値が記録されているはずですが、FCP上ではかなり差の開いた値となっています。
DR-701DのタイムコードがDF変換された可能性
この開きはおよそ40秒ほどで、クリップの開始タイムコード11:10:09:56を元に計算すると、「FCPでタイムコードのNDF・DF変換」で計算した、00:00:00:00を起点としてDFルールで間引きされるフレーム数に相当する値です。23.98fpsNDFの場合、FX30で記録したタイムコードは開始値も含めてNDF設定のままFCPに正しく読み込まれます。そのため、DR-701Dのタイムコードが変化していることが疑われ、NDFからDFへの加算処理が施されていると考えられます。このオーディオクリップのインスペクタにはDF・NDF変換の項目は無く、元に戻すことはできません。そもそも、FCPに設定項目のない値が変更されるのだろうかという疑問もあります。しかし、ビデオクリップのタイムコードなどから考えて、オーディオクリップのタイムコードがNDFからDFへ変換されているとしか考えられません。
だとしたら、DR-701DのタイムコードにはDFとNDFとを識別する目印が付けられていることになります。ただし、このオーディオクリップのフレームを数えてみてもタイムコードカウントの間引きは認められず、DFフォーマットに変換されたとは考えられません。DR-701Dのタイムコード仕様の謎が一つ増えました。
ここでもう一つ注目したいのはタイムコードの歩進についての誤差で、FX30のタイムコードに対してDR-701Dのタイムコードが、60fpsベースで毎分約3から4フレームづつ増加していくことです。
29.97fpsNDFの場合
FX30の設定を29.97fpsNDFで撮影した映像をFCPに読み込むと、DF設定として読み込まれます。これをFCPでNDFに変換し、DR-701Dで録音したオーディオクリップと同期処理した同期クリップのタイムラインがa02_fig_05です。タイムコードを基準にクリップの位置を揃えると、音声波形が大きくずれてしまいます。この開きはおよそ80秒ほどで、23.98fpsNDFの場合の倍ほどになっています。DR-701Dのタイムコードに対してNDFからDFへの変換による加算処理がなされたのに加えて、FX30のタイムコードをDFからNDFへ変換したことによる減算処理が重なった結果だと思われます。
タイムコードの歩進についての誤差は23.98fpsNDFの場合と同様に、FX30のタイムコードに対してDR-701Dのタイムコードが60fpsベースで毎分3から4フレームの割合で増加しています。
59.94fpsNDFの場合
FX30の設定を59.94fpsNDFで撮影した映像をFCPに読み込むと、DF設定として読み込まれます。これをFCPでNDFに変換し、DR-701Dで録音したオーディオクリップと同期処理した同期クリップのタイムラインがa02_fig_06です。タイムコードを基準にクリップの位置を揃えると、音声波形が大きくずれてしまいます。このタイムコードのズレは、29.97fpsNDFの場合と同様に、DR-701Dのタイムコードに対してNDFからDFへの変換による加算処理がなされたのに加えて、FX30のタイムコードをDFからNDFへ変換したことによる減算処理が重なった結果だと思われます。
タイムコードの歩進についての誤差は23.98fpsNDFや29.97fpsNDFの場合と同様に、FX30のタイムコードに対してDR-701Dのタイムコードが60fpsベースで毎分3から4フレームの割合で増加しています。
同期結果とDR-701DのDF・NDFについて
比較的良好な結果だったDFタイムコードとの同期でも、タイムコード値の一致には数フレームの補正が必要でした。これは、タイムコードフォーマットが一致していないことが原因と思われます。また、NDFではFCPのDF・NDF変換が原因と思われる大きなズレがありました。そもそもDR-701Dのタイムコードフォーマットはどういったものなのかを改めて考えます。
「タイムコード同期の確認とDR-701Dのタイムコード」の項で記載したように59.94fpsNDFか60fpsであると考えられますが、NDFの項で見たようにDR-701Dのタイムコードに対してFCPのNDF・DF変換が施された可能性があるので、59.94fpsNDFが有力なように思われます。しかし、NDFからDFへの変換が行われたような数値変動が認められるものの、変換後のタイムコードにDFルールに沿ったフレームの間引きがありません。DF・NDFの区別は本来必要のない誤った区別の可能性があります。以下では、DR-701DのタイムコードにDF・NDFの区別があることをひとまず忘れて考えます。
タイムコードの増減結果とDR-701Dのタイムコード
FX30のタイムコードがDFのとき、FX30のタイムコードとDR-701Dのタイムコードの間には、値の差に細かな増減があるもののその差が広がることはありません。一方で、FX30のタイムコードがNDFのとき、DR-701Dのタイムコードとは少しづつ差が広がっていきます。もしもDR-701DのタイムコードがNDFであれば、NDFタイムコードと同期させたときに誤差が広がることはないはずです。この点からは、DR-701Dのタイムコードは60fpsであると考えられます。
DFタイムコードと同期させたときの振る舞いについても考えてみます。DF方式のタイムコードは、実際の時間よりも1.001倍ゆっくりと進むタイムスケールでカウントされます。これに実際の時間と同じタイムスケールで進む60fpsのタイムコードを同期させた場合、タイムスケールの違いから歩進とともに少しづつ誤差が発生します。そして、DF方式は1分ごとにタイムコードのカウントを間引いて実際の時間にすり合わせているため、各分ごとにズレが補正されます。実際に、DR-701DのタイムコードをDFタイムコードと同期させると、タイムコードの歩進とともに数フレームの誤差が発生しては、各分ごとに修正されるのを繰り返していました。
もしもDR-701Dのタイムコードが59.94fpsNDFだった場合、DFタイムコードと同期させるとタイムスケールはどちらのタイムコードも同じ1.001倍ゆっくりと進む歩進ではあるものの、DFのルールでフレームカウントの間引きを行うたびにDFのカウントが先行してしまい、2つのタイムコードの誤差は各分ごとに広がっていくはずです。こういったことからも、DR-701Dのタイムコードは実際の時間と同じタイムスケールの60fpsであると考えると辻褄が合います。しかし、ここで疑問なのがDF・NDFといった区別のない60fpsタイムコードに対してなぜFCPでNDF・DF変換が適用されたかです。
他のアプリでの場合
DR-701Dで収録したオーディオファイルをアドビ(Adobe)のプレミア(Premiere)に読み込むと、フレームを00から29までカウントして1秒繰り上がり、一桁分が0以外では2フレーム間引くカウントをするので、29.97fpsDFとして読み込まれているようです。これは、同期収録するカメラのフレームレートを変更したり、タイムコード設定をDF・NDFのいずれにした場合も同様でした。つまり、Premiereでは同期収録するカメラのタイムコード設定に関わらず、DR-701Dのタイムコードを常に29.97fpsDFとして読み込んでいるということです。
また、従来の機器の考え方では、29.97fpsや59.94fpsの映像信号に外部同期した機材では、音声信号やタイムコードを記録するためのクロックを59.94Hzやそれに準じた周波数でカウントしていると思われるため、60fpsでタイムコードをカウントしているとは考えづらい面もあります。さらに、後日別の話題として記載しますが、ファイルの取り扱い上の関係からFCPでは29.97fpsのクリップを30fpsとして扱うといった場合もあり、FCP上での振る舞いのみをみてタイムコードフォーマットを推測し難い面もあります。
DR-701Dのタイムコード
こういったことから、DR-701Dで記録されたタイムコードは、60fpsや29.97fpsDFタイムコードというよりも実際の時間に沿ったタイムコードが再現されるよう規定されたもので、読み込むアプリによって形式が変化するようなフォーマットなのかもしれません。そんな曖昧なフォーマットある?という結論ですが、音響機器メーカーの搭載するタイムコードは以前から謎仕様の多いものでした。そういった信号を許容するようアプリが対応した結果の曖昧なフォーマットなのではと思います。
また、FCPへ読み込んだ場合には、NDFからDFへの変換が行われたような数値変動が認められるので、DF・NDFの区別がなされているようです。Premiereでは、このDF・NDFの区別は無視して実際の時間に沿ったカウントを優先した29.97fpsDFとして認識しているようです。一方、FCPでは60fpsとして認識しつつ、NDFタイムコードと同期収録したクリップではNDFからDFへの変換が行われていると考えられます。これは、実際の時間に近いカウントをすることを目的に、NDF形式をDF形式に変換しているのだと思われますが、60fpsタイムコードに対しては不要な変換処理です。このNDFからDFへの変換がなければ、NDF収録時にFX30で記録したタイムコードをDF設定のまま使用することで、DF収録時程度の精度でタイムコード値を同期させることが期待できるのですが、残念です。
いずれにしてもDR-701Dのタイムコードは、FCPでは60fpsタイムコードとして振る舞うと考えて良さそうです。
まとめ
FCPでの同期クリップ作成では、FX30で記録したタイムコードとDR-701Dで記録したタイムコードとが、DF形式・NDF形式に関わらずいずれの場合も完全に一致することはありませんでした。これはFX30のタイムコードフォーマットとDR-701Dのタイムコードフォーマットが不一致なことによるものと思われます。少なくともFCPに読み込んだクリップでは、DR-701DとFX30で収録したものとでタイムコードを歩進させる際のタイムスケールが異なり、この組み合わせでタイムコードが完全にシンクロした同期クリップを作成するのは難しいようです。それでも、FX30で記録できるフレームレートとタイムコード形式の中では、59.94fpsDF設定が最もタイムコード値のズレが少ない形で同期をとることができ、次いで29.97fpsDFが比較的良好なタイムコードの同期状態であるといえます。
カメラを59.94fpsDFや29.97fpsDFタイムコードに設定した場合、DR-701Dでタイムコードのオフセット機能を使えば、タイムコードの値もある程度揃った同期クリップの作成が可能です。この場合に、シフトするタイムコードの値を60fpsベースで設定するのか、カメラのフレームレートベースで設定するのかは試してみないとわかりません。また、カメラの解像度設定などによってHDMI信号の遅延の程度に変化があるかもしれないので、撮影設定に合わせてテストを行った方が無難だと思います。
一方で、NDFでのカウント方式の場合は、FCPのFX30で記録したNDFタイムコードの取り扱いや、DR-701Dのタイムコードに対する不要なNDF・DF変換の問題もあって、同期処理の結果は良くありません。また、こういった変換の問題を除いたとしても、FCP上でDR-701Dのタイムコードは実際の時間と同じ歩進をする60fpsタイムコードとして振る舞うので、NDFタイムコードと同期させようとしても両者のタイムコードは次第にズレが広がっていきます。
そうは言っても音声波形やスレートトーンなどの同期材料を併用すれば十分な同期処理を行うことができます。タイムコードの設定によっては同期クリップのタイムコード値がズレるということを把握していれば、タイムコードでの同期にこだわらず、収録用途に合ったフレームレートで撮影を行なって問題ないと思います。