6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UDP & OSC @ Max8

Posted at

概要

Max8やその他のアプリケーションでもよく使う「OSC」と「UDP」について。大まかなIPの構造やMacベースでのセットアップ方法。
ちょっと長めになります

UDP,OSCとはなんぞや

UDPはUser Datagram Protocol、OSCはOpen Sound Controlの略です。
UDPは複数デバイスやアプリケーション間でデータを送受信するためのプロトコルであり、OSCは色々な用途がありますが、「MIDIを代替するために生み出された、新たなデータ形式」と覚えておいてください。

UDPを使うための基礎知識

MaxやopenFrameworksにおいて、OSCやUDPは送り先の「IPアドレス」「ポート」を指定して運用します。
「IPアドレス」とは、「ネットワーク上の住所」のようなものです。そしてこのIPアドレスはコンピュータ固有のものが割り当てられます。同じ住所に一軒家が二つなんて基本はないですよね。
なので、IPアドレスは別々なのです。

実践編

(丁寧語がめんどくさくなったのでこの後は適当)
想定環境は作品のための環境作りであり、他のネットワークが一切絡まないものとする。ここでは最低限の通信環境である二台のコンピュータおよびハブの構成として仮定する。(一応Wi-Fi利用の場合も併記する。)
なお、このセットアップをした場合既存のネットワークに繋がらなくなる可能性大なので、新しくプロファイル(ネットワーク環境)を作ることを推奨。

コンピュータのIPアドレスを設定する

「システム環境設定>ネットワーク」と選択して、Wi-FiならWi-Fi、有線接続ならその有線の機器を選択します。

  1. Wi-Fiの場合
    「詳細」を押し、タブから「TCP/IP」を選択。「IPv4の設定」から「手入力」を選択する。IPアドレスに[192.168.0.###]サブネットマスクに[255.255.255.0]ルーターに[192.168.0.1]を設定。
  2. 有線の場合
    Wi-Fiとは違い既に[IPv4の設定]が表示されているため、そこを「手入力」で選択。IPアドレスに[192.168.0.###]サブネットマスクに[255.255.255.0]ルーターに[192.168.0.1]を設定。

"###"の部分は機器に応じて2~224の数字を割り振る。0,1,255は割り振らない、既存の別機器と被らない値を選ぶこと。

Max8 送信側 (IPアドレス192.168.0.2)

新しくオブジェクトを作り、中に"udpsend 192.168.0.3 25565"と入力する。udpsendの二つのアーギュメントはそれぞれ送り先のIPアドレスとポート番号の指定のために使う。ポートに関してはシステム予約のないところを選ぶこと。二万ぐらいまでいけば大体大丈夫なはず。OS占有のポートはAppleから公開されているので、こちらを参照。送りたいメッセージをパッチコードで繋いで送信する。今回はOSCを使うため、"/position/x 356""/position/y 524""/rotation 19 95 331"の三つのメッセージを例として用意。
udpsender

Max8 受信側(IPアドレス192.168.0.3)

新しくオブジェクトを作り、中に"udpreceive 25565"と入力する。センドと違い、指定するのはポート番号のみ。OSCを色々いじくるためパッケージマネージャーからCNMATをインストールしておく。
udpreceiveから繋がる新たなオブジェクトを作り、"OSC-route /position /rotation"と入力する。確認用にprintオブジェクトを二つ配置し、繋げばOK。
udpreceiver

UDP

IPアドレスとポートを指定してデータ(主にテキスト)をやりとりするもの。IPアドレスは住所、ポートは大量にあるポストのようなモノだと覚えれば良い。送信元は住所とポストを指定、受信者はポストを指定してそこに入っているモノを取りに行く。

OSC

Open Sound Controlはある一行のテキストの中に[アドレス]と[データの値]を入れて利用するモノ。データの値はリスト化が可能である。以下に一例を示す。

/position/x 356
/rotation 19 95 331

先ほども例として利用したこの二つだが、前半の英数字部分がアドレス、後ろが数値(アーギュメント)である。
そしてこのアドレスだが通常のMacオブジェクトである"route"でも分離が可能だが、いかんせんアドレスがフルパスでないとルーティングができず、よってOSCの利点たる階層構造アドレスも利用できないので"OSC-route"を使うのである。アドレスを全てルーティングすると、後に残るのはリスト構造のデータである。よってそこはunjoin、unpack等を利用してリストを分離して利用する。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?