openFrameworks で OSC を使ってみます。

今回は、送信側と受信側の2つのプロジェクトを作成します。

送信側のプロジェクト名は oscSender 、受信側は oscReceiver とします。


ofxOsc アドオンを使用する

はじめに、addons.make ファイルに、以下の1行を記述します。

ofxOsc

送信側と受信側

今回は、送信側と受信側の2つのプロジェクトを作成します。

プロジェクト名は自由ですが、ここでは、送信側のプロジェクト名を oscSender 、受信側のプロジェクトを oscReceiver としておきます。


送信側

はじめに、送信側のプロジェクト oscSender を作成します。

ofApp.h ヘッダファイルで、 ofxOsc.h ヘッダファイルのインクルードと、 ofxOscSender オブジェクトの追加を行います。

...略...
#include "ofxOsc.h"

#define HOST "localhost"
#define PORT 12345

class ofApp : public ofBaseApp {
    public:
    ...略...
    
    ofxOscSender sender;
};

HOST は、OSCメッセージの送信先のホスト名またはIPアドレスを指定します。ここでは "localhost" を指定しており、これは自分自身のコンピュータを意味します。別のコンピュータに送信する場合は、そのIPアドレス(例: "192.168.1.10")を指定します。

PORT は、OSC通信で使用するポート番号を指定します。ここでは 12345 を使用していますが、この番号は任意に設定できます。ただし、送信側と受信側で同じポート番号を使用する必要があります。一般的には、1024以上の番号を使用することが推奨されています。

void ofApp::setup() {
    sender.setup(HOST, PORT);
}

void ofApp::draw() {
    ofDrawCircle(mouseX, mouseY, 20);
}

void ofApp::mouseMoved(int x, int y) {
    ofxOscMessage m;
    m.setAddress("/mouse/position");
    m.addIntArg(x);
    m.addIntArg(y);
    sender.sendMessage(m);
}

void ofApp::mousePressed(int x, int y, int button) {
    ofxOscMessage m;
    m.setAddress("/mouse/button");
    m.addIntArg(1);
    m.addStringArg("down");
    sender.sendMessage(m);
}

void ofApp::mouseReleased(int x, int y, int button) {
    ofxOscMessage m;
    m.setAddress("/mouse/button");
    m.addIntArg(0);
    m.addStringArg("up");
    sender.sendMessage(m);
}

受信側