2023/3/6
初版
本記事は「WSL2でOSC受信する」の続編にあたり、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 でスクリーンショットを撮る
以上