MultiTransport Controller(マルチトランスポートコントローラー)
MultiTransport とは?
Section titled “MultiTransport とは?”Multitransport を使うと、プロジェクト内の複数のトラックを順番にではなく同時に制御できます。
Multitransport は複数の Transport Manager で構成されます。Transport コントロールの詳細については こちら をご覧ください。
MultiTransport の一般的な用途には、ショーをメインコンテンツトラックとライブコンテンツ要素に分けることや、マルチプログラマーのシナリオで、一方のプログラマーが 1 つのトラックで制御コマンドをシーケンスし、もう一方が新しいトラックでコンテンツをシーケンスすることなどがあります。そしてショー本番では、両方のトラックを互いに独立して制御しながらも、相互に連携させられます。
このページの Workflow タブと Example タブでは、放送、劇場、ツアーの状況における MultiTransport の使用例を概説していますが、ここで概説したもの以外にも MultiTransport には多くの創造的な使い方があります。
ワークフローの例
Section titled “ワークフローの例”ここでは、同じ放送シナリオについて、1 つのプロジェクトを単一トラック構成でセットアップしたものと、MultiTransport を使ったものとを比較します。
このプロジェクトは、テストパターン、スタジオのグラフィックオーバーレイ、背景、ライブビデオフィード、各ニュースセグメント用のピクチャーインピクチャービデオ要素(PiP)といった要素を必要とする TV スタジオのものです。
単一トラック構成のこの最初の例では、プロジェクトに複数のビデオレイヤーがあり、階層を決定するためにすべて互いに重ねられています。これらの大部分は背景とスタジオグラフィックで、すべてタイムライン内の他のすべてのレイヤーの下で実行され(ビデオレイヤー 8〜13)、ライブフィードはタイムライン内の独自のセクションになっています。その後、各ニュースセグメントに適した PiP に移動するのはオペレーターの役目です。

これは、(たとえば速報が入った場合など)流動的でダイナミックな構造が必要な環境において、非常に硬直的で手動のタイムライン構造を生み出します。これが、単一の Transport とタイムライン構造ではこのプロダクションに効果的でない理由です。
この 2 つ目のプロジェクトでは、プロダクションは MultiTransport を活用して、すべての個別要素を整理し、より柔軟な制御を可能にしています。

MultiTransport エディターには 3 つの別々のトラックがあります。1 つ目は「breaking」というタイトルで、先ほどの速報の問題を扱います。このトラックには「Breaking News」と表示するグラフィックと、現場のレポーターのライブビデオフィードが含まれています。
このトラックは、MultiTransport エディターでそのトラックの Play コマンドを押すことで、ショー中のいつでもライブにできます。エディター内の他のすべてのトラックの上にあるため、割り当てられた画面で再生されている他のどのコンテンツの上にも表示されます。
トラックでユニバーサルクロスフェードオプションが有効になっているため、フィードは常に割り当てられたデュレーションでフェードイン・フェードアウトします。そのため、オペレーターはライブフィードを有効にするときにハードカットを心配する必要がありません。

2 つ目のトラックは PiP というタイトルで、順番にキューされたニュースセグメントが含まれています。各 PiP は独自のセクションに含まれているため、アンカーが各セグメントの説明を完了するまで、オペレーターが 1 つずつ再生できます。PiP トラックは breaking トラックの下にあるため、breaking news のライブビデオフィードが有効になると、常に PiP より優先されます。
3 つ目で最後のトラックは background というタイトルで、それが含むものすべてだからです。最も下のトラックなので、すべての要素がその上に表示されます。セクションが 1 つしかないため、オペレーターはこの背景ビデオを放送の長さに関係なく継続的にループでき、別のトラックで新しいコンテンツをキューしてうっかり上書きしてしまう心配がありません。
最後に、GUI の左側に固定されたキューリストが、3 つのトラックすべてのすべてのキューを反映している点に注目してください。これにより、オペレーターは 1 つの UI 要素からすべての個別のグラフィックおよびビデオ要素を制御できる大きな柔軟性を得られます。キューリストの詳細については、こちらをご覧ください。
この例のプロジェクトは、MultiTransport がプロジェクターシャッター用の Control Layers をコンテンツのシーケンスから分離する演劇のショーです。
これは、プロジェクターをすばやくシャッターする必要があり、コマンドがすべてのキューに組み込まれていないようなテクニカルリハーサルでの一時停止や、プロジェクター制御のタイミングが毎晩変わるショーで便利です。

コンサートツアー
Section titled “コンサートツアー”この例のプロジェクトファイルでは、ライブビデオフィードの IMAG が 1 つのトラックで、曲のすべてのビデオコンテンツはその下の「song 1」というトラックにあります。これにより、オペレーターは IMAG のライブフィードを各曲のトラックにキューしなくても制御でき、特に IMAG のキューがカメラディレクターやステージマネージャーによって指示される場合に役立ちます。これは放送スタジオと似た概念で、予期しないキューに対してライブショー環境での柔軟性を高めます。

各曲を個別のトラックに分割することで、個々のセットリストに基づいて異なる Multitransport を作成する柔軟性も得られます。コンサートツアーの例では、ツアーの新しい各公演地ごとにセットリストを作成するのが一般的で、公演地ごとに曲のリストと順序が異なります。セットリストの作成の詳細については こちら をご覧ください。
ワークフロー
Section titled “ワークフロー”Multitransport Manager の作成
Section titled “Multitransport Manager の作成”- TransportManager を作成します。TransportManager のプロパティの詳細については、Transport Manager をご覧ください。
- 上部ツールバーの tracks エディターを左クリックし、Active Set List オプションをクリックして Set List を作成します。 異なるセットリストを作成することも、プロジェクトで作成したすべてのトラックを含む、自動的に生成されたものを使うこともできます。 この例では、3 つのセットリストを作成します。すべての曲のビデオコンテンツ用(すべての個別の曲トラックを含む)、IMAG ライブビデオフィードトラック用、プロジェクター制御コマンドトラック用です。
- 左クリックして Transport Manager を開き、制御したいトラックを含むセットリストを割り当てます。
- MultiTransport でアクティブにしたい他のすべてのセットリストについて、ステップ 3 を繰り返します。この例では、各セットリストに対して 3 つの別々の Transport Manager(song content、IMAG、control というタイトル)を作成します。
- ステップ 1 と同様に Transport エディターから新しいトランスポートを作成しますが、タイプとして MultiTransportManager を選択します。
- Configure タブで + アイコンと、制御したい Transport Manager の名前をクリックします。これにより、各セットリストのアクティブなトラックの tracks エディターを持つメニューが作成されます。この例では、先ほど作成した 3 つの Transport をすべて追加します。
- これらの Transport Manager を並べ替えるには、Configure タブで名前の 1 つを左クリックし、他のものの上または下にドラッグします。このエディターは、タイムラインのレイヤーと同様に、Disguise の上下の階層を引き続き尊重するため、最上位のトラックは常にその下のトラックの上に表示されます。
- この MultiTransport を外部から(たとえば MIDI や OSC を通じて)制御する場合は、Control タブで適切なトランスポートを割り当てます。
- MultiTransport エディターの上部にある Disengaged を左クリックしてエンゲージします。上部の Global Transport Control で再生オプションを選択します。
- 各トラックを個別に制御するには、各トラックの個別の再生コントロールをクリックします。すべてのトラックを一度に制御するには、MultiTransport エディターの上部にあるグローバル再生コントロールを使います。
-
Global Transport- リスト内のすべての Transport のコントロール -
Global Engage/ Disengage -
Transport Managers List- 個々の Transport Manager を追加して、MultiTransportManager で制御できるようにする場所です -
Event Transport- Telnet(JSON 文字列)を通じて MultiTransportManager を制御する機能を提供します。 -
Control- 構成・制御する TransportManager のリストを含みます。
Telnet コマンド
Section titled “Telnet コマンド”Disguise は、Disguise セッションのステータスに関する重要な情報を収集する方法を提供すると同時に、基本的なタイムライン制御も提供します。
すべてのコマンドは JSON 形式で、telnet プロトコル経由で送信されます。
セットアップ
Section titled “セットアップ”- 新しい Multitransport Manager を作成します。
- Multitransport Manager にトランスポートを割り当てます。
- トランスポートにトラックを割り当てるか、自動セットリストを使います。
- Multitransport Manager で event transport を追加し、その待ち受けポートを設定します。
クエリは、Disguise から情報を抽出するために使う方法です。次の構造で JSON 形式になっています。
{"request":<request_number>,"query":{"q":"<Query>"}}\n
すべてのクエリは JSON としてデータを返します。これは、3 つのエントリを持つディクショナリにデシリアライズされます。
-
Request number: 最初のリクエストで Disguise に与えられたものと同じ番号で、マルチスレッド環境でリクエストとリプライを同期するために使えます。番号が指定されていない場合はデフォルトで 0 になります。エラーが発生した場合は -1 になります。
-
Status - デフォルトは「OK」ですが、エラーが発生した場合はそのコンテキストを提供します。
-
Results - 要求された情報を含むディクショナリのリストです。1 つの要素が返される場合でも、常にリストです。
利用可能なクエリ
Section titled “利用可能なクエリ”Machine list: {"query":{"q":"machineList"}}
マシンに関する情報(d3 名、ホスト名、ロール、マシンタイプ)を含むディクショナリのリストを返します。
Example return : {"request":0,"status":"OK","results":
[{"machine":"4x4-demo","hostname":"4X4-DEMO","role":"Pure master","type":"4x4pro"}]}
Machine status: {"query":{"q":"machineStatus"}}
マシンに関する追加情報(セッションステータス、フェイルオーバーステータス、現在の FPS)を返します。
Example return: {"request":0,"status":"OK","results":[{"active":true,"Failed":false, "fps":32.345558166503909}]}
Player list: {"query":{"q":"playerList"}}
マルチイベントトランスポートに割り当てられたすべてのトランスポートのリストを返します
Example return: {"request":0,"status":"OK","results"[{"player":"transport 1"},{"player":"transport2"},{"player":"transport 3"},{"player":"transport 4"}]}
Track list: {"query":{"q":"trackList"}}
プレイヤーに割り当てられたすべてのトラックのリストを返します
Example return: {"request":0,"status":"OK","results":[{"track":"track 4", "Length":560.0}, {"track":"track 3","length":560.0}, {"track":"track 2","length":560.0},{"track":"track","length":560.0}]}
Cue list: {"query":{"q":"cueList <Track name>"}}
指定したトラック内のすべてのセクション区切りのリストを返します
Example Return: {"request":0,"status":"OK","results":[{"location":"","startTime":0.0,"length":15.0},{"location":"a","startTime":15.0,"length":15.0},{"location":"b","startTime":30.0,"length":15.0},{"location":"c","startTime":45.0,"length":515.0}]
次のコマンド形式を使ってタイムラインを制御できます
{"track_command":{"command":"<Playmode>","track":"<Track>", "location":”<location>”, "player":"<player name>", "transition":"<transition time>"}}
<Playmode>
Section titled “<Playmode>”-
play - 通常の再生モード。タイムライン上のセクション区切りを無視します
-
playSection - play section モード。セクション区切りで保留します
-
Loop - loop section モード。セクション区切りでループします
-
Stop - 再生ヘッドを停止します
<Track>
Section titled “<Track>”選択したプレイヤーのセットリストにある任意のトラック
<Location>
Section titled “<Location>”任意の有効なタイムコード - “00:00:15:00”
タイムライン上に存在する任意の有効なキュー - 「CUE 35」
<player name>
Section titled “<player name>”マルチトランスポートマネージャー内に存在する任意のトランスポート
<transition time>
Section titled “<transition time>”秒 - 現在の再生ヘッド位置から新しく要求された位置にクロスフェードします - 例: 「10」
<transition track> & <transition section>
Section titled “<transition track> & <transition section>”r17.1 で導入され、トラックスニペットを使ってクロスフェードにアクションを割り当てられます。transitionTrack と transitionSection エントリを使って同様のことを実現できます。
コマンドの例
Section titled “コマンドの例”{ "track_command": { "player": "toptransport", "command": "playSection", "track": "toptrack", "location": "00:00:00:00", "transitionTrack": "transitions", "transitionSection": "woosh" }}
transitionTrack はトラックの(文字列の)名前で、セクション区切りに設定された(文字列の)ノートである transitionSection とペアにする必要があります。