Sync Controller - 早速ファームアップ!

プロジェクトに参加していただいた

さんから、さっそくこんな感じで試作機のレポートをいただいて、

ありゃ、Lockしないとな?と動画を見させてもらったところ、

ああ、5秒に一回外れてる!

やはり!

この Sync Controller、部品の都合&拡張性を優先して汎用のマイコンボードを使っているのですが、そいつが用意してくれる「タイマー」という機能は、ベースの(つまりいちばん細かい)周波数が 24MHz 。つまりこれを何等分かして必要な周期を作り出すわけです。

SMPTE LTC/タイムコードを作り出すには、1フレームで160クロックが必要、なので、29.97フレーム/秒時には

24,000,000 ÷ 29.97 ÷ 160 = 5,005.005005

となって、奇跡的に?ほぼ端数がでずに、ベースクロックを 5005 等分すればいいのですが、23.976 フレーム/秒の場合、

24,000,000 ÷ 23.976 ÷ 160 = 6,256.256256

となり、割り切れません(「等分」するので整数である必要がある)。0.01程度ならまだしも、0.256とかだとこのままだとどんどん誤差が蓄積されます。

なので、外部同期によらずフリーランする場合は、5秒に一度タイマーの値を変更して、正しい間隔になるように「間隔調整」しています。

外部信号によるフレーム同期の場合は、Sync Controller 内部で想定するクロックと外部信号がどのくらいずれているかわからないので

ずれが一定以上になったらタイマーを調整して追いかける

処理を入れていたのですが、当然調整すると、そのフレームは間隔に「揺れ」が出ます。作っているときから、タイムコード受け側の機械によってはこの揺れを許容できないかも、と懸念があったのですが、まさに思った通りに。

こちらで評価に使っていたのは、カメラとして

Lumix BGH1
Blackmagic Design Pocket Cinema Camera 4K

で、実はこれらはタイムコードロックが外れた場合は勝手に走るんですね。5秒に一回外れていたとしてもすぐ "EXT"(ロックしてる) 表示に戻っていて気付かなかったのですが、画面を別のカメラで撮ってコマ送りしたところ、外れる瞬間があるのを確認しました ("EXT" 表示が "INT" になる)。

Lumix はそもそも外部か内部かの表示もなかったような。

MOTUの古いMIDI/タイムコードインターフェース  MOTU MIDI Timepiece AV でも問題なく動いているなと思っていたのですが、レポートを受け取ってから確認すると、こちらはジャムモード(外れたら内部クロックで動作)になっていたので、それを解除したら(ロックが外れたら停止する)、

見事に現象が再現!

できたので、ああこれかと。

ということで、フレーム同期信号の検出そのもの、そしてその調整幅を少し変えて、ロックが外れないようにしてみました。

それだけだとアレなので(笑)、

(信号ロストやケーブル切断などで)フレーム同期が外れた場合、0.5秒程度でフリーランに切り替わり、液晶表示も FREE になる

機能を追加しました。

これを version 0.12 とします。

Kimura さんには早速ご確認いただいて、「動く!」ということで一安心。

この辺はもうちょっとインテリジェントに(たとえばルーズモードとストリクトモードを選べる、とか)できるといいなあ。ただコードとデータがもうRAM (32KB)から溢れそうなので、ちょっとシェイプアップしないと。

サポート Welcome! いただいたサポートは今後の研究開発や寄付に使わせていただきます。