← Back

ofxPubSubOsc

github.com/2bbb/ofxPubSubOsc · @2bbb
OF 0.12 Releases Web/Networking

bind OSC messages and values with only writing tiny codes on setup once.

78 7 Last commit 11mo ago Created 11y ago

Branches ahead of master

These branches have commits not yet on master — could be unmerged fixes or work in progress worth a look.

dev/v0.4.0beta 39 commits ahead · last commit 11mo ago
dev/v0.4.0b/pubsuboscify 36 commits ahead · last commit 1y ago
v0_1_x_oF084 8 commits ahead · last commit 10y ago

README

ofxPubSubOsc



easy utility for publish/subscribe OSC message.

Dependencies



ofxOsc

Notice



this addon is tested with oF0.9.8~ if you use oF0.9.0~, then you can use std::function<void(ofxOscMessage &)>! detail: API Reference if you use oF~0.8.4, then you can use branch:v0_1_x_oF084 if you have challange spirit, please use dev/vX.Y.Z branch. if you want to join development ofxPubSubOsc, open the issue and post the PR for dev/vX.Y.Z.

TOC



How to use Simple API Reference ofxSubscribeOsc ofxPublishOsc ofxRegisterPublishingOsc Supported types Arithmetic String openframeworks basic types ofParameter with supported types array/vector of supported types Callback Update history License Author Supporting Contributor Special Thanks At the last

<a name="HowToUse">How to use</a>



class ofApp : public ofBaseApp {
	int foo;
	ofColor c;
	ofPoint p;
public:
	void setup() {
		ofxSubscribeOsc(9005, "/foo", foo);
		ofxSubscribeOsc(9005, "/color", c);
		ofxSubscribeOsc(9005, "/p", p);
		
		ofxPublishOsc("localhost", 9006, "/fps", &ofGetFrameRate);
		
		ofxSubscribeOsc(9005, "/lambda", [](const std::string &str){
			ofLogNotice() << "receive " << str;
		});
		ofxSubscribeOsc(9005, "/trigger_event", [](){
			ofLogNotice() << "receive trigger_event";
		});
	}
	
	void update() {
		// do NOTHING about OSC on update!!!
	}
	
	void draw() {
		ofSetColor(c);
		ofDrawCircle(p, 5);
	}
};


<a name="SimpleAPI">Simple API Reference</a>



_API Reference is imperfect now._

If you want to use advanced features, see Advanced



<a name="SimpleAPI_ofxSubscribeOsc">ofxSubscribeOsc</a>



void ofxSubscribeOsc(int _port_, const string &_address_, SupportedType &_value_);

bind a value to the argument(s) of OSC messages with an address pattern _address_ incoming to _port_.

See more ofxSubscribeOsc



ofxUnsubscribeOsc(int _port_, const string &_address_);

unbind from OSC messages with an address pattern _address_ incoming to _port_.

ofxUnsubscribeOsc(int _port_);

unbind from OSC messages with any address patterns incoming to _port_.

if you want to pick up OSCs which do not match the subscribed addresses, see ofxSetLeadkedOscPicker

See class ofxOscSubscriberManager, class ofxOscSubscriber



<a name="SimpleAPI_ofxPublishOsc">ofxPublishOsc</a>



void ofxPublishOsc(const string &_ip_, int _port_, const string &_address_, SupportedType &_value_, bool _whenValueIsChanged_ = true);

publish _value_ as an OSC message with an address pattern _address_ to _ip:port_ every time the _value_ has changed. If _whenValueIsChanged_ is set to false, then the binded value is sent every frame after App::update.

See more ofxPublishOsc, ofxPublishOscIf



void ofxUnpublishOsc(const string &_ip_, int _port_, const string &_address_);

unbind a publisher sending OSC message with an address pattern _address_ to _ip:port_.

void ofxUnpublishOsc(const string &_ip_, int _port_);

unbind all the publishers sending to _ip:port_.

See class ofxOscPublisherManager, class ofxOscPublisher



<a name="SimpleAPI_ofxRegisterPublishingOsc">ofxRegisterPublishingOsc</a>



void ofxRegisterPublishingOsc(const string &_ip_, int _port_, const string &_address_, SupportedType &_value_) void ofxPublishRegisteredOsc(const string &_ip_, int _port_, const string &_address_)

register value as an OSC message with an address pattern _address_ to _ip:port_. and publish when call ofxPublishRegisteredOsc(ip, port, address).

void ofxUnregisterPublishingOsc(const string &_ip_, int _port_, const string &_address_)

unregister OSC message with an address pattern _address_ to _ip:port_.

void ofxUnregisterPublishingOsc(const string &_ip_, int _port_)

unregister all the messages sending to _ip:port_.

NOTE: registable type is same to ofxPublishOsc. see more ofxPublishOsc.

<a name="SimpleAPI_ofxSendOsc">ofxSendOsc</a>



void ofxSendOsc(const string &_ip_, int _port_, const string &_address_, Arguments && ... arguments)

<a name="SupportedTypes">Supported types</a>



Arithmetic is any type of Int32, Int64 or Float

<a name="SupportedTypes_Arithmetic">Arithmetic (Int32, Int64, Float)</a>

bool (published as _Int32_) unsigned char, char (published as _Int32_) unsigned short, short (published as _Int32_) unsigned int, int (published as _Int32_ or _Int64_ (if sizeof(int) == 8 then _Int64_)) unsigned long, long (published as _Int64_ or _Int64_ (if sizeof(int) == 8 then _Int64_)) unsigned long long, long long (published as _Int64_) float (published as _Float_) double (published as _Float_)

NOTE: long double is not guaranteed

<a name="SupportedTypes_String">String (String)</a>

string

<a name="SupportedTypes_ofBasic">openframeworks basic types</a>



Arithmetic\[2\]

ofVec2f (published as _Float_ \ 2)

Arithmetic\[3\]

ofVec3f (= ofPoint) (published as _Float_ \ 3)

Arithmetic\[4\]

ofVec4f (published as _Float_ \ 4) ofColor (published as _Int32_ \ 4) ofShortColor (published as _Int32_ \ 4) ofFloatColor (published as _Float_ \ 4) ofQuaternion (published as _Float_ \ 4) ofRectangle (published as _Float_ \ 4)

Arithmetic\[9\]

ofMatrix3x3 (published as _Float_ \ 9)

Arithmetic\[16\]

ofMatrix4x4 (publish as _Float_ \ 16)

Blob

ofBuffer

<a name="SupportedTypes_ofParameter">ofParameter with supported types</a>



ofParameter<SupportedType>

NOTE: we only support subscribing ofParameterGroup. See How to subscribe ofParameterGroup

<a name="SupportedTypes_ArrayVector">array/vector of supported types</a>



SupportedType[size] vector<SupportedType>

if you use vector<SomeType> vec;, when vec will be resized every receiving OSC messages.

NOTE: do NOT use vector<vector<SupportedType>>, vector<SupportedType>[size]

<a name="SupportedTypes_Callback">Callback</a>



Subscribe



std::function<R(Arguments ...)>; std::function<R(ofxOscMessage &)> pair of U &that, T (U::\callback)(Arguments ...); pair of U \that, T (U::\callback)(Arguments ...);

Arguments ... are all of types we can use in

Publish



std::function<T()>; pair of U &that, T (U::\callback)(); pair of U \that, T (U::\callback)();

<a name="UpdateHistory">Update history</a>



2021/09/30 ver 0.3.3



fixed bug on ver 0.3.2 (issued by hanasaan. thanks!!!)

2021/09/26 ver 0.3.2 [Deprecated!!]



fixed constructor of ofxOscMessageEx fixed some constness about notify, read

2020/04/15 ver 0.3.1

added ofxSubscribeAllOsc, ofxSubscribeAllOscForPort

2018/05/08 ver 0.3.0



refactor all for C++11 add ofxSendOsc ofxSubscribeOsc got more flexible. multi arguments multi arguments callback add ofxOscMessageEx

Older update histories



about Versioning



ofxPubSubOsc uses Mood Versioning. maybe, 1.0.0. will not come.

<a name="License">License</a>



MIT License.

<a name="Author">Author</a>



ISHII 2bit [ISHII Tsuubito Program Office] i[at]2bit.jp

<a name="SuppotingContributor">Supporting Contributor</a>



HIEDA Naoto

<a name="SpecialThanks">Special Thanks</a>



HIGA Satoru SHIMIZU Motoi IWATANI Nariaki USAMI Takuto HORII Satoshi TOMOTO Yusuke HANAI Yuuya musiko TAESU Yuma HAYASAKA Akira ASAI Aris Bezas

<a name="AtTheLast">At the last</a>



Please create a new issue if there is a problem.

And please throw a pull request if you have a cool idea!!

If you get happy with using this addon, and you're rich, please donation for support continuous development.

Bitcoin: 17AbtW73aydfYH3epP8T3UDmmDCcXSGcaf

Get this addon

HTTPS
SSH

Latest release

v0_3_3 version 0.3.3 published 5y ago
  • fixed bug on ver 0.3.2 (issued by @hanasaan. thanks!!!)