WSL2でOSC送信する

WSL2でOSC送信する

2023/3/6
初版

概要

本記事は「WSL2でOSC受信する」の続編にあたり、OSC送信について記述する。
設定などは前記事と全く同じなので省略する。

openframeworkのOSC送信プログラム

以下のリンクよりopeframeworkをインストールする:
download openFrameworks(linux)
Linux install

以下のプログラムを作成する:
OSC_simpleSender/src/main.cpp


#include "ofMain.h"
#include "ofApp.h"

int main() {
	// move graphic window to out of display
	ofSetupOpenGL(1920, 1, OF_WINDOW);
	ofSetWindowPosition(0, 0);

	ofRunApp(new ofApp());
}

OSC_simpleSender/src/ofApp.cpp


// OSC simple sender
// by xshige
// 2023/3/2
//---------------

#include "ofApp.h"

//--------------------------------------------------------------

void ofApp::setup() {

	// send to the given port
	printf("sender to %s:%d\n", HOST,PORT);
	sender.setup(HOST, PORT);

	ofSetVerticalSync(true);

	ofSetFrameRate(16);
}

//--------------------------------------------------------------
void ofApp::update() {
}


//--------------------------------------------------------------
void ofApp::draw() {
}

//--------------------------------------------------------------
void ofApp::exit() {
}

//--------------------------------------------------------------
void ofApp::keyPressed(int key) {
	if (key == 'f' || key == 'F')
	{
		ofxOscMessage m;
		m.setAddress("/1/fader1");
		m.addFloatArg(0.7f);
		sender.sendMessage(m);
	}
	if (key == 'x' || key == 'X')
	{
		ofxOscMessage m;
		m.setAddress("/1/xy");
		m.addFloatArg(0.5f);
		m.addFloatArg(0.123f);
		sender.sendMessage(m);
	}

}

//--------------------------------------------------------------
void ofApp::keyReleased(int key) {
}

//--------------------------------------------------------------
void ofApp::mouseMoved(int x, int y) {
}

//--------------------------------------------------------------
void ofApp::mouseDragged(int x, int y, int button) {
}

//--------------------------------------------------------------
void ofApp::mousePressed(int x, int y, int button) {
}

//--------------------------------------------------------------
void ofApp::mouseReleased() {
}

OSC_simpleSender/src/ofApp.h


#pragma once

#define TOTOUCHOSC

#include "ofMain.h"
//#include "ofxMidi.h"
#include "ofxOsc.h"

#ifdef TOTOUCHOSC
// to TouchOSC
#define HOST "192.168.0.7"
#define PORT 9000
#endif

class ofApp : public ofBaseApp {

public:

	void setup();
	void update();
	void draw();
	void exit();

	void keyPressed(int key);
	void keyReleased(int key);

	void mouseMoved(int x, int y);
	void mouseDragged(int x, int y, int button);
	void mousePressed(int x, int y, int button);
	void mouseReleased();

private:
	ofxOscSender sender;

};

[f]または[x]のキーを叩くとOSCメッセージが送信される。
前記事で「送信用には上のスクリプトを参考に逆方向の転送スクリプトを作成する必要がある。」と記述したがUDP転送スクリプトは不要であった。
ただ単にターゲットになる(送信先の)IPアドレスをプログラムのなかで設定するだけで良い。

参考情報

WSL2関連:
Linux 用 Windows サブシステムで Linux GUI アプリを実行する
Windows10のWSL(WSLg)でGUIアプリが動くようになった
Windows WSL2に外部から直接アクセスするための設定
【メモ】WSL2上のsshサーバに外部から接続する

openFrameworks関連:
UbuntuでopenFrameworksの開発環境を構築する。

TouchOSC関連:
TouchOSCMk1
昔からあるTouchOSCで「MK1」付きに改名している
Open Sound Control
iPhone でスクリーンショットを撮る

以上

Go to Toplevel