導入
このドキュメントでは、AximmetryでOSC入力から受信したOSCメッセージの使用方法、およびAximmetryからOSCメッセージを作成して送信する方法について説明します。
OSCプロトコルに関する詳細は、一般のコントローラードキュメントのOSCセクションを参照してください。
OSCの入力と出力の設定のみを説明する別ドキュメントがあります:OSC入力と出力の設定
OSCメッセージ構造
OSCメッセージの動作を理解するには、その基本構造を確認することが役立ちます。
OSCメッセージは、次の3つの構成要素から成ります:
- アドレス
- タイプタグ
- 引数(複数可)
これらは、デバイス間でデータが送信され解釈される方法を定義します。Aximmetryではグラフィカルなインターフェースを使用してこれらのメッセージを作成できますが、基本的な構造は同じです。
アドレス
OSC アドレスは、通信エンドポイントのユニークな識別子です。OSC アドレスが出力に割り当てられると、受信する OSC メッセージは同じアドレスで受け取られます。
注:同じ OSC アドレスに複数の入力が割り当てられます。これにより、異なるコントロール(例:ボタン A とボタン B)が同じ宛先にメッセージを送信し、同じパラメーターに影響を与えることができます。また、単一の入力が複数の受信先に送信されることも可能です。
タイプタグ
タイプタグは、OSCプロトコルで送信されるデータのタイプを指定します。受信者がメッセージの引数をどのように解釈するかを決定します。
カンマ(,)で始まり、メッセージにリストされているOSC引数と一致する文字列が続きます。
OSCアプリケーションが認識しなければならない4つの基本タイプがあります:
タイプタグ | 対応する引数 | 定義 |
i | int32 | 32ビットビッグエンディアンの2の補数整数(符号付き32ビット整数) |
f | float32 | 32ビットビッグエンディアンのIEEE 754浮動小数点数(符号付き32ビット浮動小数点数) |
s | string | ヌル文字で終了する非ヌルASCII文字列 |
b | blob | 任意のデータ:int32の整数で指定されたバイト数の二進データ |
さらに、OSCアプリケーションでは追加のタイプを実装できますが、この表のタイプタグでエンコードする必要があります:
型タグ | 対応する引数 | 定義 |
h | int64 | 64ビットビッグエンディアン2の補数整数(符号付き64ビット整数) |
t | timetag | OSCメッセージが処理されるタイミングを定義します。64ビット;最初の32ビット = 秒、後の32ビット = 秒の分数。1900年1月1日 00:00 から測定されます。 |
d | double | 64ビット(“double”)IEEE 754浮動小数点数(符号付きダブル[64ビット浮動小数点数]) |
S | string | 代替文字列。処理方法が異なる場合に区別するため。 |
c | char | ASCII文字(32ビット) |
r | color | 32ビットRGBAカラー |
m | MIDI message | 4バイトのMIDIメッセージ。MSBからLSBまでのバイトは:ポートID、ステータスバイト、データ1、データ2 |
T | bool | ブール値:TRUE |
F | bool | ブール値:FALSE |
N | bool | ブール値:Nil(NULL - 値なし) |
I | 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コントローラーと同様に、プロパティやボタンの制御に使用できます。
数値または論理プロパティの名前を右クリックし、
またはコントロールボードのボタンを選択し、OSC を割り当てる...
次に、コントローラーデバイスから適切な OSC メッセージを送信する(例:フェーダーを移動またはボタンを押す)と、割り当てが完了します。
NOTE: 独自のコントローラーソフトウェアを作成する場合、通常モードでボタンをオンにするには値1を送信し、オフにするには値0を送信する必要があります。
複合体内で作成したすべてのOSC割り当てを確認および管理するには、ファイル / プロパティ / OSC割り当てに移動します:
フローグラフの制御
OSCモジュールを使用して、フローグラフ内に制御構造を構築できます。
スカラー入力
OSCメッセージに単一の浮動小数点数(または整数、論理値、または倍精度値)が含まれる場合、OSCスカラーモジュールを使用できます:
モジュールには、OSCアドレスを指定する必要があります:
手動で入力できますが、Learn機能も使用できます。Onをオンにします:
次に、OSC制御デバイス上のフェーダー/ボタンを移動/押します。アドレスが自動的に入力されます。
ベクトル入力
OSCメッセージに2次元または3次元の位置を表す任意の数の浮動小数点値、または任意の数の数値の列が含まれる場合、OSCベクトルモジュールを使用できます:
トリガー入力
OSCトリガーモジュールは、任意の非ゼロ値を含むOSCメッセージが到着するたびに信号を送信します:
一般入力
OSCメッセージには、さまざまなタイプの引数が任意の数含まれる場合があります。すべてのケースに対応するには、OSCメソッドモジュールを使用します。
各引数はキー1、2、3などに割り当てられたコレクションを出力します。以下の例では、float、string、Nil、integer、および論理値true(,fsNiT)の5つの引数を含むメッセージを受信しています:
個々の引数にアクセスするには、標準のCollectionモジュールを使用できます。例えば、2番目の文字列引数が必要な場合は、Collection Textモジュールを使用します:
2番目の引数にアクセスするには、Keyプロパティに2を入力します。
注意: この場合、Indexプロパティに数値を入力しないように注意してください。
他の引数にも同様の手順でアクセスできます:
NOTE: コレクションデータ型の処理に関する詳細については、以下のドキュメントを参照してください:
OSC出力の送信
外部デバイスをAximmetryからOSC経由で制御する場合、OSC * Out モジュールを使用します。
スカラーとベクター出力
単一の数値または数値の系列を送信するには、OSC Scalar OutとOSC Vector Outモジュールを使用します:
これらのモジュールでは、出力デバイス(初期設定で作成したリストから選択、上記を参照)とターゲットアドレスを指定する必要があります:
メッセージの送信は2つの方法で行えます。Sendピンでトリガーして特定のタイミングで送信するか、Auto SendをOnに設定すると、引数値が変更されるたびに自動的に送信されます。
一般出力
任意の数の引数(任意のタイプ)を送信するには、OSC Outモジュールと、Set Collection xやSet Subcollectionなどのコレクションを出力するモジュールを組み合わせて使用します。
重要: OSC Out モジュールは、コレクションに Key が必要ですが、任意の値ではなく、引数の順序を表す整数(1 から始まる)でなければなりません。
例: 上記のメッセージ構造を実現するには、次のようにします:
注: この例では、Key = 3 に対する引数を追加していません。この場合、3 番目の引数として Nil 要素が挿入されます。