検索
Start typing to search...

AximmetryでのOSCメッセージ

Author:

導入

このドキュメントでは、AximmetryでOSC入力から受信したOSCメッセージの使用方法、およびAximmetryからOSCメッセージを作成して送信する方法について説明します。

OSCプロトコルに関する詳細は、一般のコントローラードキュメントのOSCセクションを参照してください。

OSCの入力と出力の設定のみを説明する別ドキュメントがあります:OSC入力と出力の設定

OSCメッセージ構造

OSCメッセージの動作を理解するには、その基本構造を確認することが役立ちます。

OSCメッセージは、次の3つの構成要素から成ります:

  • アドレス
  • タイプタグ
  • 引数(複数可)

これらは、デバイス間でデータが送信され解釈される方法を定義します。Aximmetryではグラフィカルなインターフェースを使用してこれらのメッセージを作成できますが、基本的な構造は同じです。

アドレス

OSC アドレスは、通信エンドポイントのユニークな識別子です。OSC アドレスが出力に割り当てられると、受信する OSC メッセージは同じアドレスで受け取られます。

注:同じ OSC アドレスに複数の入力が割り当てられます。これにより、異なるコントロール(例:ボタン A とボタン B)が同じ宛先にメッセージを送信し、同じパラメーターに影響を与えることができます。また、単一の入力が複数の受信先に送信されることも可能です。

タイプタグ

タイプタグは、OSCプロトコルで送信されるデータのタイプを指定します。受信者がメッセージの引数をどのように解釈するかを決定します。

カンマ(,)で始まり、メッセージにリストされているOSC引数と一致する文字列が続きます。

OSCアプリケーションが認識しなければならない4つの基本タイプがあります:

タイプタグ 対応する引数   定義
int32  32ビットビッグエンディアンの2の補数整数(符号付き32ビット整数)
float32  32ビットビッグエンディアンのIEEE 754浮動小数点数(符号付き32ビット浮動小数点数)
s  string  ヌル文字で終了する非ヌルASCII文字列
blob  任意のデータ:int32の整数で指定されたバイト数の二進データ

さらに、OSCアプリケーションでは追加のタイプを実装できますが、この表のタイプタグでエンコードする必要があります:

型タグ 対応する引数   定義
int64  64ビットビッグエンディアン2の補数整数(符号付き64ビット整数)
timetag  OSCメッセージが処理されるタイミングを定義します。64ビット;最初の32ビット = 秒、後の32ビット = 秒の分数。1900年1月1日 00:00 から測定されます。
double  64ビット(“double”)IEEE 754浮動小数点数(符号付きダブル[64ビット浮動小数点数])
S string   代替文字列。処理方法が異なる場合に区別するため。
char  ASCII文字(32ビット)
color  32ビットRGBAカラー
MIDI message 4バイトのMIDIメッセージ。MSBからLSBまでのバイトは:ポートID、ステータスバイト、データ1、データ2
T bool  ブール値:TRUE
bool  ブール値:FALSE
N  bool  ブール値:Nil(NULL - 値なし)
impulse インパルス無限大。対応する引数はありません。シグナルとしてのみ使用されます。
[

他のタイプの配列の開始。

]
配列の終了(他のタイプ)。

NOTE: ブール型タグには値そのものが含まれ、Argumentsには表示されません。

NOTE: 特定の実装では、タイプタグの指定はオプションです。

Aximmetryでは、これらのタイプタグの使用は隠蔽されています。代わりに、OSCモジュール経由で送信されるデータタイプから推論されるか、OSCコントローラーがタイプタグを実装したメッセージを送信した場合に内部で処理されます。

AximmetryのOSCモジュールで作成/読み込まれる型は以下の通りです:

  • OSC スカラー出力 / OSC スカラー: float32
  • OSC ベクトル出力 / OSC ベクトル: float32の配列
  • OSC トリガー: 受信したメッセージの最初の値が0以外の数値またはブール値TRUEの場合、インパルスに変換します
  • OSC Out / OSC Method: これらのモジュールは、メッセージ引数としてコレクションを使用します。これらのコレクションは、Set Collection x モジュールによって作成されます。各コレクションは、キーと、モジュールの型に対応する単一の要素または要素の配列で構成されます:
    • Set Collection Text: 文字列
    • Set Collection Color: float の配列(3 要素:色、1 要素:アルファ)
    • Set Collection Double: double
    • Set Collection Scalar: float32
    • Set Collection Vector: float32の配列
    • Set Collection Integer: int32
    • Set Collection Logical: bool
    • Set Collection Transformation: 3または4のfloat32配列の配列(Valueピンで使用されるモードに依存)
    • NOTE: 複数のコレクションからコレクションの配列を作成できます。

引数

引数は、OSCメッセージで送信される実際の値です。受信エンドポイントで処理されるデータを格納します。

NOTE: OSCメッセージには複数の引数を含めることができます。


例えば、オーディオミキサーの特定のチャンネルの音量を制御したい場合を考えます。

メッセージは次のようにになります: /audio/volume ,if 2 0.75

分解:

  • アドレス: /audio/volume (例示用のアドレス。実際のオーディオミキサーには独自のアドレスがあります)
  • タイプタグ: ,if
    • i: 最初の引数が整数であることを示します
    • f: 2番目の引数が浮動小数点数であることを示します
  • 引数: 2 0.75
    • 2: オーディオチャンネル2を選択します
    • 0.75: 音量を75%に設定します

別の例として、このオーディオミキサーにマスターボリュームを制御するための専用アドレスがあり、それを制御したい場合を考えます。

メッセージは次のように表示されます: /audio/masterVolume 0.75

分解:

  • アドレス: /audio/masterVolume (例示用のアドレス、実際のオーディオミキサーには独自のアドレスがあります)
  • タイプタグ: 明示的に定義されていない (データ型は推論されます)
  • 引数: 0.75 -> マスターボリュームを75%に設定

入力

モジュールプロパティとコントロールボードボタンの制御

一般的なシナリオでは、受信するOSCメッセージにはアドレスと単一の浮動小数点数(または整数、論理値、または倍精度値)のみが含まれます。この種類のメッセージは、MIDIやDMXコントローラーと同様に、プロパティやボタンの制御に使用できます。

数値または論理プロパティの名前を右クリックし、

USING OSC IMAGE7.png

またはコントロールボードのボタンを選択し、OSC を割り当てる...

USING OSC IMAGE8.png

USING OSC IMAGE9.png

次に、コントローラーデバイスから適切な OSC メッセージを送信する(例:フェーダーを移動またはボタンを押す)と、割り当てが完了します。

NOTE: 独自のコントローラーソフトウェアを作成する場合、通常モードでボタンをオンにするには値1を送信し、オフにするには値0を送信する必要があります。

複合体内で作成したすべてのOSC割り当てを確認および管理するには、ファイル / プロパティ / OSC割り当てに移動します:

USING OSC IMAGE10.png

フローグラフの制御

OSCモジュールを使用して、フローグラフ内に制御構造を構築できます。

スカラー入力

OSCメッセージに単一の浮動小数点数(または整数、論理値、または倍精度値)が含まれる場合、OSCスカラーモジュールを使用できます:

USING OSC IMAGE11.png

モジュールには、OSCアドレスを指定する必要があります:

USING OSC IMAGE12.png

手動で入力できますが、Learn機能も使用できます。Onをオンにします:

USING OSC IMAGE13.png

次に、OSC制御デバイス上のフェーダー/ボタンを移動/押します。アドレスが自動的に入力されます。

ベクトル入力

OSCメッセージに2次元または3次元の位置を表す任意の数の浮動小数点値、または任意の数の数値の列が含まれる場合、OSCベクトルモジュールを使用できます:

USING OSC IMAGE14.png

トリガー入力

OSCトリガーモジュールは、任意の非ゼロ値を含むOSCメッセージが到着するたびに信号を送信します:

一般入力

OSCメッセージには、さまざまなタイプの引数が任意の数含まれる場合があります。すべてのケースに対応するには、OSCメソッドモジュールを使用します。

各引数はキー1、2、3などに割り当てられたコレクションを出力します。以下の例では、float、string、Nil、integer、および論理値true(,fsNiT)の5つの引数を含むメッセージを受信しています:

USING OSC IMAGE15.png

個々の引数にアクセスするには、標準のCollectionモジュールを使用できます。例えば、2番目の文字列引数が必要な場合は、Collection Textモジュールを使用します:

USING OSC IMAGE16.png

2番目の引数にアクセスするには、Keyプロパティに2を入力します。

注意: この場合、Indexプロパティに数値を入力しないように注意してください。

USING OSC IMAGE17.png

他の引数にも同様の手順でアクセスできます:

USING OSC IMAGE18.png

NOTE: コレクションデータ型の処理に関する詳細については、以下のドキュメントを参照してください:

OSC出力の送信

外部デバイスをAximmetryからOSC経由で制御する場合、OSC * Out モジュールを使用します。

スカラーとベクター出力

単一の数値または数値の系列を送信するには、OSC Scalar OutとOSC Vector Outモジュールを使用します:

USING OSC IMAGE19.png

これらのモジュールでは、出力デバイス(初期設定で作成したリストから選択、上記を参照)とターゲットアドレスを指定する必要があります:

USING OSC IMAGE20.png

メッセージの送信は2つの方法で行えます。Sendピンでトリガーして特定のタイミングで送信するか、Auto SendをOnに設定すると、引数値が変更されるたびに自動的に送信されます。

一般出力

任意の数の引数(任意のタイプ)を送信するには、OSC Outモジュールと、Set Collection xやSet Subcollectionなどのコレクションを出力するモジュールを組み合わせて使用します。

重要: OSC Out モジュールは、コレクションに Key が必要ですが、任意の値ではなく、引数の順序を表す整数(1 から始まる)でなければなりません。

例: 上記のメッセージ構造を実現するには、次のようにします:

USING OSC IMAGE21.png

USING OSC IMAGE22.png

USING OSC IMAGE23.png

USING OSC IMAGE24.png

USING OSC IMAGE25.png

USING OSC IMAGE26.png

注: この例では、Key = 3 に対する引数を追加していません。この場合、3 番目の引数として Nil 要素が挿入されます。

記事内容

Loading
Close
Loading spinner icon
1/10