Sync Controller のロードマップ
やりたいことはいーーーーーーーっぱいあるんですが、すでに引き合いをいただいてたりもするので(なんと!)、
0. ひとさまに使っていただく最小限の機能拡張
まず、いろんなネット環境でふつうに使えるようにするため、
- 固定アドレス対応 (ローカル IPアドレス、ゲートウェイアドレス、DNSアドレスなどの手動設定)
- 自前のNTPサーバーアドレス設定(ローカルに高精度NTPサーバーがある場合)
は最低限必要となるでしょう。PCにつなげるとファイルが見えるので、設定ファイルに書き込んでおく、という形式にしたいと思っています。
また、現在29.97ドロップフレーム/ノンドロップフレームと、23.976ノンドロップフレームの対応ですが、24.00ノンドロップフレームはきっと必要になるので。これはほとんどすぐにでもできそう。
1. 低コストでの準量産化
を考えてみます。正直、今のバージョンだとBOM(部品リスト)の金額合計だけで結構な値段になっちゃいます。さらに、少なくともケース加工賃が必要なので、もろもろ入れると、ちょっとこの機能の機器での値段で売るにはしんどいです。なので、コアとして使っている mbed LPC1768 を置き換えられるナニカをちょっと考えてみたいです。
最右翼としてはESP32、あるいは Raspberry Pi Pico。どちらも有線LANが標準ではないので(mbed LPC1768はコネクタ以外は用意されてる)、ちょっとその辺でどのくらいコストがかかるか、ですが、トラフィック自体は大したことないので、簡易的LANインターフェースで大丈夫かな?ESP32はWiFiは組み込まれているので、WiFiアクセスポイントとの遅延が実用範囲なら、"簡易的" 無線LAN専用 Sync Controller (ただし精度はギリギリ)というのもありかもしれない。
この2つについては1か月程度時間を使ってプロトして技術的可能性を検証します。仕様的には満たしているはずなので、実際にライブラリなどがそろっているか、また割り込みなどが期待通りのオーバーヘッド以下で動くか、ですね。(もともとをC++で書いてあるので、移植性はいいはず)
2. MIDI 対応
いわゆる普通の5pinでのMIDI OUTにMTC(MIDI Timecode)を出すのはできそうなんですが、パフォーマンス的に足りなくてLTCと排他となる可能性も捨てきれません。内蔵シリアルが31.5KbpsというMIDIの変態的ボーレートに対応できれば楽ちんなんですが、それができないと自前でシリアルエミュレーションとなるので、LTCと同時出力はちょっとしんどいかも。
また、別のやり方として、USB MIDIか、それが難しければUSBシリアルインターフェースとしてPCにつないで、そこでMTCを吐き出す、と。これができればUSBやPro ToolsなどのLTC to PCインターフェースを介さずにタイムコードをDAWに取り込んだりできるかなと。まあPCは全部ソフトウェアでやっちゃう、のはありですが。でもフレーム同期はしたいな。そうかフレーム同期するだけならMIDIにもタイムコードにもこだわる必要はないな...。
このMIDI対応と同時に、SYNCROOM とSYNCできないか、も考えたいのだけれど、これは(すでに一度つながっている)SYNCROOMの中の人とももう一度相談したいと思っています。これができると、音声をSYNCROOM経由の低遅延で繋ぎつつ、リモートであちこちで映像拾って、最後にタイミング合わせてがっちゃんこ、が収録でも配信でも!可能になりそうだから。
3. 外部機器制御
ここからが #earthMetronome のコアバリューなのですが、タイムコードを出すだけではなく、あらかじめ決めたスケジュールに従って、どんぴしゃりのタイミングで外部機器を制御する、という機能を、たぶん徐々に、ですが作りこんでいきたいな、と。
最初は ATEM mini とかのスイッチャーはどうかな、と思っています。Blackmagic 系の機材はほとんどすべて API があって外からネット経由などで制御できるので、たとえば
「ギターソロのところでギタリストに自動的にカメラスイッチする」
とかね。ほらほら、面白そうでしょ?まあ照明系も同期できると思いますが、ちょっとまだそっち(DMX?)は掘ってないので、いずれ詳しい人が参加してくれたら一緒に考えたい。
正直今のプラットフォームでもメモリがもうかつかつなので、同じ機械の中に組み込めるかどうかはちょっとわからないけれど...。できるといいなあ。
4. Streaming Box (仮称) との連携
まあ多分単体 Sync Controller との連携というよりは機能のみを取り込んで拡張展開、なんですが、だいぶ前からこういうものを考えていて、実はかなりプロトタイプが進んでいます。
上側はみんな知ってるHDMIスイッチャーですが、下側の横幅同サイズの「箱」がそれです。詳しい説明はまたおいおい、ですが、これでスイッチャーを「制御」しつつ、NTPベースでフレーム単位で同期したタイムコードをはっつけたストリームを送り出そう、というものです。某LiveShellXとかと結構近いと言えば近いのですが、単にストリーミングを送り出すだけではなく、スケジュールしたイベントを実行して外部機器制御(スイッチャーやらカメラやら)やほかの機器と連携動作ができる、というのがウリかなあ。
てな感じのロードマップを妄想しています。うーん、なかなか大変だw