SyncController Reboot (1)
さて、基幹デバイスだった mbed LPC1768 の入手難により、1年近く開発停止していた本プロジェクトですが、やはりないと不便!という局面がいくつかあり、開発を継続することとしました。とはいえ、基幹デバイスはもうほとんど製造中止?とも思われるし、ほかのプラットフォームに乗り換えたところで流通在庫がどのくらい担保されるかが相変わらず未知数。なので、もっとシンプル化できないかを考えたい。
必要な機能とは
そもそもSyncControllerが必要だったのは、
複数の映像・音声収録時に絶対時間を合わせたい
が最も大きな動機。とすると、最低限必要な機能とは、
できるだけ正確な時刻の取得 - 少なくともフレーム(1/30)単位
LTCの生成
映像同期信号との同期
このうち、1. については、NTPまたはGPSにアクセスできればいいので、必ずしも時間取得はリアルタイムでなくてもいい。ただ、いったん取得した時刻をベースにフレーム単位の時刻を積算していくので、正確なクロックは必要。基本的にIoTデバイスもパソコンも!正確なクロックは期待できないので、高精度クロックはハードウェアとして必要になる。
次に 2. については、生成する信号は最大で 1/30秒に一度80bit となる。つまり1秒間に2400bit。これをマンチェスター符号化するので、倍の4800Hzが最大で必要な周波数となる(29.97や23.97というフレームレートがあるので、端数の周波数での生成も必要)。これを外部出力するには、オーディオデバイス経由で音声として出力するか、GPIOからパルスとして出力するかのどちらか、となる。
最後に 3. については、周波数も高いので音声として取り込むのは難しいと思われる。オリジナルSyncControllerでも使用していた映像同期分離ICを使うのが一番手っ取り早い。
ということで、
次期SyncControllerの大まかな構成
として、
USBでホストデバイス(PCやRaspberry Piなど)に接続する
時刻情報はホストデバイスが取得する
正確なクロックを持つ
映像同期信号をハードウェアで取り込む
GPIOそのほかでLTCを出力するか、ホストデバイスのサウンド出力経由でLTCを出力する
(オプション)ホストデバイス側でMTC(MIDI Timecode)を生成する
最後の機能は、DAWとタイムコードを同期させるときにあればべんりで、なければオーディオ1チャンネルを使ってLTCを記録するという手もある。
ここまで単純化するとハードウェア側で処理する機能は大幅に少なくなるので、あまり処理能力のないマイコンなどでも十分処理可能になる、と思われる。たとえばPIC18シリーズ、Rasberry Pi Picoシリーズなど。
詳細は
以下次号…