OSC

OSCでは、Resolumeの1つ1つのアスペクトに対し最高度の制御が可能です。

OSCとは、オープンサウンドコントロール(Open Sound Control)の略です。その由来についての詳細もお読みいただけます。

重要な点は、OSCをネットワークに送信すると、MIDIやDMXよりかなり精細なコントロールができることです。Resolumeでは、'Preferences' のOSCタブでOSCを有効にします。

OSC アドレス

OSCアドレスで、Resolumeの1つ1つのアイテムをコントロールできます。マウスでクリックする代わりに、コントロールのアドレスにメッセージを送信して制御します。これはResolumeにEメールを送り、特定のコントロールを特定の値で設定してほしいと伝えるようなものです。

アドレスはすべて固定でセットアップ済みです。つまりOSCでは、すぐにすべてのコントロールを開始できるということです。そこがMIDIや、コントロールを特定のショートカットと紐付けしなければならないキーボードショートカットとは異なる点です。 

例えば、レイヤー1の不透明度を25%にセットしたい場合、アドレス "/composition/layers/1/video/opacity" に値として0.25を指定し、OSCを送信します。

/composition/layers/1/video/opacity 0.25

これだけです。ショートカットを割り当てたりプリセットを読み込んだりする必要などありません。このOSCメッセージを使用すればいつでも、レイヤー1の不透明度を設定できます。 Resolumeを起動しているコンピューターすべてに、いつでも、です。

各UIアイテムも同様にコントロールできます。

では、レイヤー2のクリップ8のプレイ開始点を、クリップの頭に設定してみましょう。それには次のメッセージを送信します:

/composition/layers/2/clips/8/transport/position 0.0

このアドレスが特定のコントロールに対し何を意味するかお分かりでしょうか?これにはある法則性がありますが、OSC ショートカットモード(Shortcut > Edit OSC)に入っていただき、任意のコントロールをクリックしていただくのが早いでしょう。

ショートカットパネルに正しいアドレスが表示されます。アドレスをクリックし、コピーペーストしましょう。

"でも、なぜResolumeには1つ1つのOSCアドレスのリストが無いのかな?あったら便利なのに! "

ええ、確かに。しかし、アドレスのリストはコンポジションのセットアップによって変化します。また、コンポジション内の要素はすぐに増えます。参考までに、レイヤーとクリップがそれぞれ1つで、エフェクトを使用していないコンポジションのOSCアドレスのリストです。お楽しみください。


複数のアドレス

コントロールによっては、2つ以上のアドレスからアクセスできます。たとえば下のアドレス2つは、レイヤー1のGooエフェクトのスピードパラメーターにアクセスするものです。

どちらが必要かは、使用方法によって変わります。

最初のものは、アブソリュート(絶対的)アドレスと呼ばれます。これはレイヤー1のGooエフェクト“のみ”をコントロールします。

2つ目はレラティブ(相対的)アドレスです。これは常にGooエフェクトをコントロールしますが、現在選択しているレイヤーに応じて、異なるレイヤーのGooエフェクトをコントロールします。もしもすべてのレイヤーにGooエフェクトを適用しているとしたら、1つのOSCアドレスで全レイヤーのGooエフェクトを制御できるということです。 あなたは選択レイヤーを切り替えるだけです。

現在選択しているレイヤーにGooエフェクトを使用していない場合も、このアドレスに何かを送信しても問題はありません。単に何も作用しないだけです。

タイプタグおよびレンジ

UIアイテムの選択時、'Type Tag'(タイプタグ)の表示が目に入るでしょう。 タイプタグでは、アドレスに送信できる値と、その結果を確認します。

Float(フロート)

例えば、  /composition/video/effects/transform/scale のタイプタグは Float 0.0 - 1.0 (range 0.0 - 1000.0) です。

これは0〜1の間の小数値を送信して、コンポジションのスケールを0% 〜 1000%の間に設定するということです。 0を送信すると0%に、0.1では100%に、0.5では500%、そして1.0では1000%に設定されます。

同様に、 /composition/video/effects/transform/rotationz では、 タイプタグフロートは 0.0 - 1.0 (range -180.0 - 180.0)です。値の範囲は、反時計回りに180°、時計回りに180°回転するということです。 0.5を送信するとちょうどセンター位置になります。

Int

'Int' というタイプタグを持つアドレスもあります。 

例えば、レイヤー1のブレンドモードは /composition/layers/1/video/mixer/blendmode です。そして0から50までの整数を送信します。

各整数で、51のブレンドモードを選択します。

"え、51? でも 50までの整数でしょう?"

ええ、コンピューターでは数を0からカウントします。ですから合計で51種類になります。こんなことを書いて、私はちょっとバカみたいでしょうか、、、どうか笑ってやってください。

ナードアラート! もしやってみたければ、int を記述するアドレスにフロート値を送ることもできます。この結果は、特定したパラメーターのレンジへの0.0〜1.0までのフロート値の、線形変換となります。

カラー

特殊なケースとして、OSC カラー値をカラーピッカーに送信できます。

OSCカラー値は「R」に、32ビットRGBA値を表す符号無し整数がついたタイプタグを持ちます。 RGBA 値をビットシフトしたintでカラーを書くことができます。もし以上の説明があまりにもオタクっぽければ、面倒なことをあなたに代わってやってくれるVezerをチェックしてください。

ストリング

テキストインプットにテキストを送信します。 テキストブロックおよびテキストアニメーターソースをダイナミックにアップデートできます。

ストリングのタイプタグは、's' にテキストそのものを付加したものです。

絶対値(アブソリュートバリュー)

"Resolume、このタイプタグってのは必要以上に難しくないか? こんな数学だとか、どのブレンドがどの番号だとか、やらなきゃいけないのかな? それにどこの誰が0から数字を数えたり、色を決めるのにシフトビットなんてしたいかな。 ちょっとギークすぎるよ!「普通の人」みたいに、「こうしたい、ああしたい」と言うだけじゃダメなの?“

いいところを突いています。はい、それも可能です。あなたはVJですから「普通の人」ではありませんが。ですがもちろん、こうしたい!とだけ言うことは可能です。「普通の人」のように。

例えば、ブレンドモードで、まずストリングとして使用するブレンドモード名だけを送ってみましょう。

/composition/selectedlayer/video/mixer/blendmode "Alpha"

これで、選択したレイヤーのブレンドモードをアルファに設定できます。

もしOSCの送信に使用しているアプリケーションで、複数のアーギュメントを送信できる場合は、 絶対値に関しても同様のことができます。

これは1つのクリップを特定の x および y ピクセル値に配置したい時、大いに意味があります。 これを実行するにはまず、ある絶対値を使用することを記述します。それにはアドレスの次にくる最初の文字に 'a' を使用し、絶対値そのものをその次に記述します。

/composition/layers/1/clipss/1/video/effects/transform/positionx "a" 320

これで、レイヤー1のクリップ1をX軸上で320ピクセルに設定しました。

相対値(レラティブバリュー)

さらに良いことには、値の相対的変化も記述できます!

たとえば、"+"、 "-"、または "*" を、これから述べる値でそれぞれ現在の値と加算、減算または乗算できます:

/composition/layers/1/video/opacity "+" 0.2

レイヤー1の不透明度を20%上げます。

実際は、、、20%の固定数値を不透明度の値に付加します。現在の値の20%増加するわけではありません。その場合は /composition/layers/1/video/opacity "*" 1.2 となります。ただそれを短い文章で、さらに誰が読んでもわかるように説明するのは難しいことです。

OSCをResolumeに送信する

これまでのところで、ResolumeでのOSCの働きをだいたいご理解いただけたのではないかと思います。でも、実際どうやってOSCを送信するのでしょうか?

良い質問です! OSCを送信できるアプリケーションは山ほどあります。

有名なのはiOS および Androidで利用できる、TouchOSCLemurでしょう。 TouchOSC および Lemurでは、ユーザー独自のカスタムインターフェイスを作成でき、 Resolumeの固定アドレスと最高のペアリングができます。誰でもあなたの作ったインターフェイスを読み込むことができ、型にとらわれず自由に使用できます。

OSXでは、Vezerが秀逸です。Vezerでは複雑なキーフレームアニメーションが作成でき、ResolumeのUIの各アイテムを制御するのに使用できます。

Resolumeのパワーユーザーである Zoltan Palffy は、Resolumeでシアターショーの制御をおこなうことに特化した彼独自のアプリケーションを作りました。 

OSCはクリエイティブなプログラム言語と組み合わせて使用すると真価を発揮します。 あなた独自のロジックを作成したり、各種の処理からデータを抽出し、Resolumeへと連携します。

Processing, openFrameworks, Arduino, TouchDesigner, JUCE, Max/MSP他には、OSCメッセージの送受信に対応するライブラリがあります。 Ableton LiveからのOSC送信にはMax4Liveを使用します。 ブラウザから直接OSCを送る場合、javascriptライブラリもあります。

非常に沢山の選択肢があります。 ここではまず、TouchOSCProcessing の2つを例にとって、OSCの使用方法を解説していきます。

接続

OSCメッセージはネットワークを通じて送信します。 2つのコンピューター間でOSCを使用する場合、その2つのコンピューターが同じネットワークに接続されていることをまずご確認ください。OSCメッセージはとても小さいので、1秒間あたり1000以上ものメッセージを送るのでなければ、WIFI接続で問題ありません。

ヒント! WIFIネットワークの強度は、パーティー中に5000人がSnapchatしはじめたりすると、途端に脆弱になります。

OSCをあるコンピューターから別のコンピューターに送信する場合、送信元ではメッセージの送り先をまず把握する必要があります。ResolumeでOSC入力を有効にすると、ほかのコンピューターに、メッセージの送信先を通知します。それはZeroConf、またはMacではBonjourとして知られているプロトコルを経由しておこなわれます。もし送信元アプリケーションがこれに対応していれば、Resolumeが送信先としてポップアップします。

送信元アプリケーションが ZeroConf/Bonjour に対応していない場合、手動でIPアドレスおよびポート番号を入力する必要があります。

IPアドレスとは、コンピューター同士がお互いの場所を把握するための、一連の番号です。 Resolumeでは、Resolumeを起動しているコンピューターのIPアドレスを、OSCプリファレンスのトップに通知します。

各アプリケーションでOSCメッセージを受信するポート番号を指定します。デフォルトでは、Resolumeではポート番号7000となっています。 これは任意の番号に変更できます。

OSC プリファレンスタブには折り畳み式ウィンドウがあり、OSC が受信した最新200のメッセージを閲覧できます。これは実際に受信した内容や、メッセージの中身を確認する際に大変便利です。

OSCアウトプット

OSCのメッセージを受け取るのとは別に、 ResolumeもOSC経由でトークバックできます。 OSCアウトプットは 'Preferences' から有効にします。

Resolumeから送信するメッセージを管理するには、2〜3の方法があります。一番簡単なのはOSC ショートカット プリセットを使用することです。

Shortcut > Edit OSC から、OSC ショートカットモードへ入ります。ショートカットパネルが表示されます。 ここでOSCアウトプットのセットアップの確認と、いくつかのプリセットを切り替えられます。

"Output All OSC Messages" プリセットを選択すると、Resolume からはすべてのOSCが出力されます。おっと。

つまり、インターフェイスで変更のあったすべてのものが送信されます。クリップ トリガー、マウス、MIDI入力、 パラメーターオートメーション、 クリップの再生開始位置。すべてを、すべてのアドレスで。絶対値も相対値もです。

これは素晴らしい機能です。なぜならこれによりResolumeの現在の状態がモニタリングできるからです。たとえば、クリップトリガーを基に特定のアクションを実行するアプリケーションを設計することもできます。'Output All' プリセットを使い、任意のアドレスで受信したデータを容易にフィルタリングし、論理の基礎にできます。

それはまた、すぐに積み重なってしまうことも意味します。メッセージを、安定の悪いワイヤレス接続で送信した場合、メッセージのいくつかが欠けてしまう可能性もあります。

必要なデータだけを確実に受け取るには、ユーザー自身のプリセットを作成します。プリセットドロップダウンメニューから、' New...'(新規)を選択します。名前をつけてから(私は”レイア”という名前をつけるのが好きです。プリセットのお姫様だからです)、OSC出力を送信するUIエレメントを抜粋します。

あなたは今、マスターバイパスが有効かどうかが気になっているのではないでしょうか。もしResolumeがバイパスされていれば、アプリケーションに何か変更を加えても安全だからです。

これを実行するには、左上のマスターバイパスボタンを探します。これを右クリックすると、このボタンに対してだけOSCアウトプットを有効にできます。別の方法として、OSC ショートカットパネルでもUIアイテムへのOSC出力を有効にできます。

興味のあるアイテムへのアウトプットだけを抜粋して有効にすると、ネットワークトラフィックを節約できます。

ワイルドカード

でもResolume。自分は12個のレイヤーの不透明度と、デッキ内の472のクリップに対するクリップトリガーにしか興味はないんだ。ずっと座ったままアイテム1つ1つクリックし続けるつもりはない。だって人生にはもっと面白いことが沢山あるんだから。「Rick and Morty」の全シーズンを完走するとか。

ええ、よくわかります。四川風の豆板醤だって重要です。ですからワイルドカードをご紹介しようと思います。クリップ、レイヤーおよびグループで、すべてのアイテムに対するOSC出力を1度に有効にできます。

各レイヤーのビデオの不透明度について作業しましょう。レイヤー1つに対してOSC アウトプットショートカットを作成したら、 範囲を 'All Layers' (全レイヤー)に変更します。

ほら。あっという間に、全レイヤーのビデオの不透明度に対するアウトプットを有効にできました。クリップトリガーでも同様にできます。なんとまだ追加されてないクリップに対してもです。

カスタムOSCメッセージ

あるときは、Resolumeのインターフェイスの状態についてさほど興味がないかもしれません。 あるときは、他のアプリケーションにちょっとしたメッセージを送りたいだけかもしれません。 Resolumeであるクリップをトリガーした時に、Vezerでキューをトリガーしたいのかもしれません。さらに、Resolumeでクリップの再生開始点をプロセッシングスケッチのフィジックスにリンクしたいのかもしれません。

これらの例が適切かどうかわかりませんが、、、あなたはきっと創造性溢れるマインドの持ち主でしょう。私はオフィスに缶詰になって誰も読まないであろうマニュアルを執筆しているので、OSCでカッコいいことをしたくてもできないのです。

Custom Address(カスタムアドレス)を使えば、それは可能です。

何かでOSC アウトプットを作成したら、ドロップダウンから選択します。

Resolumeで自動的に現在のアドレスが入力されますが、これは任意の内容に変更できます。すると、固定アドレスではなく新しいアドレスへ、Resolumeインターフェイス内のそのアイテムの値を送信します。

デスティネーション(送信先)

ほかのアプリケーションからResolumeへOSCを送る時と同様、ResolumeからOSCを送信する際も、送信先を指定する必要があります。

  'OSC Preferences' で、 ZeroConf/Bonjour経由で検知された、ネットワーク上のすべてのアプリケーションを選択できます。

また、特定のコンピューターに送信するのか(Localhost)、またはネットワーク上のすべてのコンピューターに送信するのか(Broadcast)も選択できます。

ZeroConf/Bonjour に対応していないアプリケーションに送信する場合は、IPアドレスを手動で設定します。

Localhost、Broadcast やマニュアルIPの場合、アウトゴーイングポートを設定する必要があります。 これは当然、ほかのアプリケーションの入力ポートです。

バンドルか非バンドルか

'Use Bundles'(バンドルを使用する)に切り替えると、すべてのメッセージを一つの束にまとめ、一緒に送信します。ほとんどのOSCアプリケーションでは、バンドル/非バンドルの違いは問題になりませんが、 いくつかのアプリケーションではいずれかに設定する必要があります。

ポーリング

Resolumeではまた、特定のパラメーターがどう設定されているかを「質問」できます。 これは、Resolumeで起きている内容にしたがってビューが異なるような、複雑な制御メカニズムを構築している場合にはとても便利です。

Resolumeで起こることに常に目を光らせていなくても、質問をして、必要な情報を必要な時に知ることができます。

実行するには、それについて知りたいアドレスに "?" を送信します。

たとえばResolumeに、

/composition/layers/1/video/mixer/blendmode "?"

と送信すると、同じアドレスに、この場合は現在のレイヤー1のブレンドモードのint値が回答されます。とても素晴らしいですね。

関連記事