Text+ にある TimeCode 表示を Expression で作りました。
Fusion ページは使わず、Edit ページのみで完結させられます。
: -- 複数行宣言
start = "00:00:00:00"; -- 開始タイムコード
-- time値と開始タイムコードから「秒」を算出
seconds = time / comp:GetPrefs().Comp.FrameFormat.Rate; -- time値とフレームレートから秒に
seconds = seconds + string.sub(start, 10, 11) / 100; -- ミリ秒
seconds = seconds + string.sub(start, 7, 8); -- 秒
seconds = seconds + string.sub(start, 4, 5) * 60; -- 分
seconds = seconds + string.sub(start, 1, 2) * 60 * 60; -- 時
-- 「秒」から時分秒ミリ秒を算出
function string:padding(num) return string.sub(floor(num) + 100, -2) end -- 桁揃え関数
ms = string:padding(floor((seconds - floor(seconds) + 0.005) * 100)); -- ミリ秒
ss = string:padding(seconds % 60); -- 秒
mm = string:padding(seconds / 60 % 60); -- 分
hh = string:padding(seconds / 60 / 60 % 24); -- 時
data = {hh, mm, ss, ms}; -- 表示用に配列化
-- 区切り文字を秒毎に切り替えて表示
return table.concat(data, iif(floor(seconds) % 2 == 0, ":", " "));
Text エリアを右クリックし、プルダウンリストからExpressionを選択
標準 TimeCode と言ってるのは、このリストにある TimeCode です。
コードを入力
初期値「Text("Custom Title")」は消してください。
このエリアで編集は無理だと思います。別途エディタを使ってコピペしましょう。
テキスト内容を Expression で動的に変更しているだけなので、フォントや位置、サイズは自由に変更可能です。
開始タイムコードの分割をsplit的な関数作って区切り文字を探して分割させようとしたら、おかしな表示になるのでsubで固定位置で抜いています。
「00:00:00:00」型以外の指定は考慮していないので、時やミリ秒が必要なければ、Write On スライダーを使って前後を削ってください。
Text+ クリップをタイムラインに 配置した時の左端 が time 値「ゼロ」です。
標準の TimeCode 同様、クリップを左に伸ばすとマイナス方向(23時)に伸びます。
区切り文字
区切り文字は「:」と「 」(スペース)を交互に使ってるだけなので、フォントによっては位置ずれします。
区切り文字の字間は空きますが、Advanced Controls の Force Monospaced を 1.0 にすれば位置ずれはしなくなります。
「:」の固定でよければ、最終行を以下に変更してください。
return table.concat(data, ":");