OSC プラグインの概要

Open Sound Control (OSC) が Unreal Engine でどのように機能するかを説明します。

Windows
MacOS
Linux

Open Sound Control (OSC) はオーディオ産業の数多くの分野で広く使用されているオープン プロトコルです。主にクライアント間での一般的なオーディオ データの通信に使用されますがオーディオ データ以外にも使用可能です。

直感的でタイプセーフなブループリント ライブラリを備えた OSC プラグインを使用して、デベロッパーはネットワーク化されたオーディオ (おそらく他のドメイン) データを Unreal Engine で迅速にイタレートすることができます。このプラグインを有効にすると、C++ または ブループリント の中でシンプルな API による OSC イベントのやり取りが可能になりあす。メッセージとバンドルの送受信、またはバンドルとメッセージの組み合わせの送受信をサポートします。

本機能を使用するには OSC プラグインを有効にする必要があります。[Edit (編集)] > [Plugins (プラグイン)] > [Input Devices (入力デバイス)] から [OSC (Open Sound Control)] オプションをクリックして有効にします。

ルート タイプ

OSC サーバー

OSC サーバー (UOSCServer) は Unreal Engine のローカル インスタンスへ送信されたメッセージのリスニング エンドポイントとして動作します。マルチキャスト ループバック、および OSC メッセージとバンドルの両方のパースをサポートします。また、リッスン対象の IP アドレスがどれかをサーバーが具体的に示します (ホワイトホワイトリスト)。

ユーザーはイベントをバインドして、指定されたアドレス パターン を使ってすべての OSC アドレスからのメッセージの受信(後述の Binding An Event to Address Patterns を参照) 、すべてのメッセージのリッスン (Binding An Event to All Messages を参照)、すべてのバンドルのリッスン (後述の Binding An Event to All Messages と同様ですが受信したバンドルの解凍が必要) が可能になります。

OSC クライアント

OSC クライアント (UOSCClient) は OSC メッセージとバンドルの送信手段を提供します。

FOSCAddress

OSC アドレス (FOSCAddress) は入力されたパスで、有効なパターンの場合と有効でない場合があります。有効なパスの場合、メッセージ パケットの一部として作成、送信、受信が可能です。

コンテナの配列および /Container1/Container2/Method の形式でメソッドを含みます。パスあるいはパターンのいずれかの有効性の照会、文字列への変換または文字列からの変換、ブループリントの呼び出しによる操作が可能です。OSC アドレスをイベント BindEventToOnOSCAddressPatternMatchesPath にバインドすると、パターンである別の OSC アドレスに対してフィルター処理することもできます。

OSC バンドル / メッセージ

OSC メッセージ (FOSCMessage) と OSC バンドル (FOSCBundle) はOSC クライアントから受信し、OSC サーバーで送信されるパケット タイプです。

OSC メッセージは、有効なパスであり、サポートされている OSC プロトコル タイプのペイロードを持つアドレスを含みます。

OSC バンドルは、他の OSC バンドルまたは OSC メッセージのいずれか、あるいはその両方のパケットの配列を含みます。

Asset クラス

OSC プラグインはアセット クラスを必要としません。必要とされるタイプのすべてはトランジェントで、ブループリントで作成、管理、廃止することが求められます。

Blueprint API

OSC サーバー

OnOsc(Bundle/Message)Received

OSC バンドル/メッセージを受信すると呼び出されるイベントです。

SetWhitelistClientsEnabled

true に設定すると、サーバーはホワイトリストから受信したメッセージのみを処理します。

(UnbindEvent/UnbindAllEvents/BindEventTo/Get)OnOSCAddressPattern(s)

OSCAddressPattern が一致するとイベントをアンバインド、バインド、除去、またはディスパッチするために取得します。

(Add/Remove/Clear/Get)WhitelistedClient(s)

ホワイトリストに載っているクライアント IP アドレスを文字列 (IPv4) として追加、除去、クリア、取得します。

OSC クライアント

(Get/Set)SendIPAddress

OSC クライアント IP アドレスとポートを取得します。

SendOSC(Bundle/Message)

OSC バンドル/メッセージを特定のアドレスへ送信します。

OSC バンドル/メッセージ

Add(Bundle/Message)ToBundle

与えられたバンドル/メッセージバンドルへ追加します。

Get(Bundles/Messages)FromBundle

バンドルで見つかったバンドル/メッセージを返します。

(Add/Get) OSC Message (Strings/String at Index, Integer/Integer at Index, and so on)

POD タイプを OSM メッセージへ追加または OSC メッセージから取得します。(サポートされているタイプ一覧は こちら .) です。

Clear OSC (Message/Bundle)

メッセージ/バンドルのペイロードをクリアします。

リソースと例

OSC の実装は OpenSoundControl.org website に記載されている OSC 1.0 プロトコルに基づいています。

下の各画像上の [Copy Node Graph (ノードグラフをコピー)] ボタンをクリックして、ブループリント グラフにテキストをペーストして例の動きを確認します。

OSC メッセージを送信する

Copy Node Graph

SendingOSCMessage.png

イベントをすべてのメッセージにバインドする

Copy Node Graph

BindingToAnyMessage.png

イベントをアドレス パターンにバインドする

Copy Node Graph

BindToAddressPattern.png

ブループリント API (4.25 新規)

Get OSC Message From Bundle At Index

バンドルで見つかったメッセージを順番にされたインデックスで返します。

Add OSC Address (As String) to OSC Message

アドレス (文字列としてパックされた) 値を OSCMessage の最後に追加します。

Get OSC Message Address At Index

Sets the Value to the address at the provided Index in OSCMessage if 範囲内であり、かつ OSC タイプが String に一致するバイア、値を OSCMessage に提供されたインデックスのアドレスに設定します。(メッセージのアドレスを 返しません。その代わりに、文字列がメッセージにパックされて OSC アドレスへキャストされます。)文字列がインデックスで見つかった場合、および有効な OSC アドレス パスの場合に返します。

Get OSC Message Addresses

有効なアドレス パスであるすべての文字列を OSCMessage から受け取った順に返します。(メッセージのアドレスを 含みません。有効なアドレス パスであるメッセージ内にパックされた文字列です。)

Find Object at OSC Address

パス フォルダがコンテナ、およびオブジェクト名がアドレス メソッドとなる、パス形式の任意の OSC Address を見つけます。親オブジェクトのみサポートします。

Convert Object Path to OSC Address

オブジェクト パスを OSC Address に変換します。フォルダをアドレス コンテナに、オブジェクト名をアドレス メソッドに変換します。親オブジェクトのみサポートします。「UObjectBaseUtility::GetPathName and UObjectBaseUtility::GetFullName 」を参照してください。

Convert Object Path (String) to OSC Address

オブジェクト パスを OSC Address に変換します。フォルダをアドレス コンテナに、オブジェクト名をアドレス メソッドに変換します。親オブジェクトのみサポートします。「UObjectBaseUtility::GetPathName and UObjectBaseUtility::GetFullName 」を参照してください。

Convert OSC Address to Object Path

OSC Address をオブジェクト パスに変換します。

Remove Containers from OSC Address

インデックスで順序づけられたコンテナの配列から最高でコンテナの総数までコンテナを除去します。

上記にあげられた新しいブループリント API コールに加えて、すべてのインデックス ゲッターは Succeeded ブール値を返すことで、与えられたインデックスでタイプされた値が任意のタイプであり、クライアントの期待通りにパースされた値かどうかを示すようになりました。

コンソール変数 (4.25 新規)

osc.clients

現在初期化されている OSC クライアント オブジェクトに対する診断情報を出力ログに印字します。

osc.client.connect

OSC ミックス クライアントを与えられたオブジェクト名と接続 (再接続) します。使用可能なクライアントおよびそれぞれの名前のリストは osc.clients で確認してください。

Id—(再) 接続先クライアントのオブジェクト ID

Address—(再) 接続先 IP アドレス (default:LocalHost)

Port—(再) 接続先ポート (default:8094)

osc.client.connectById

OSC ミックス クライアントを与えられたオブジェクト名と接続 (再接続) します。使用可能なクライアントおよびそれぞれの名前のリストは osc.clients で確認してください。

Id—(再) 接続先クライアントのオブジェクト ID

Address—(再) 接続先 IP アドレス (default:LocalHost)

Port—(再) 接続先ポート (default:8094)

osc.clients

現在初期化されている OSC サーバー オブジェクトに対する診断情報を出力ログに印字します。

osc.server.connect

OSC ミックス クライアントを与えられたオブジェクト名と接続 (再接続) します。使用可能なクライアントおよびそれぞれの名前のリストは osc.clients で確認してください。

Name—(再) 接続先サーバーのオブジェクト名

Address—(再) 接続先 IP アドレス (default:LocalHost)

Port—(再) 接続先ポート (default:8095)

osc.server.connectById

OSC ミックス クライアントを与えられたオブジェクト名と接続 (再接続) します。使用可能なクライアントおよびそれぞれの名前のリストは osc.clients で確認してください。

Id—(再) 接続先クライアントのオブジェクト ID

Address—(再) 接続先 IP アドレス (default:LocalHost)

Port—(再) 接続先ポート (default:8095)

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信