ofxPubSubOsc
ofxPubSubOsc copied to clipboard
bind OSC messages and values with only writing tiny codes on setup once.
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
How to use
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);
}
};
Simple API Reference
API Reference is imperfect now.
If you want to use advanced features, see Advanced
ofxSubscribeOsc
- 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
ofxPublishOsc
- 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
ofxRegisterPublishingOsc
- 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.
ofxSendOsc
- void ofxSendOsc(const string &ip, int port, const string &address, Arguments && ... arguments)
Supported types
- Arithmetic is any type of Int32, Int64 or Float
Arithmetic (Int32, Int64, Float)
-
bool
(published as Int32) -
unsigned char
,char
(published as Int32) -
unsigned short
,short
(published as Int32) -
unsigned int
,int
(published as Int32 or Int64 (ifsizeof(int) == 8
then Int64)) -
unsigned long
,long
(published as Int64 or Int64 (ifsizeof(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
String (String)
-
string
openframeworks basic types
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
ofParameter with supported types
-
ofParameter<SupportedType>
NOTE: we only support subscribing ofParameterGroup. See How to subscribe ofParameterGroup
array/vector of supported types
-
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]
Callback
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)()
;
Update history
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.
License
MIT License.
Author
- ISHII 2bit [ISHII Tsuubito Program Office]
- i[at]2bit.jp
Supporting Contributor
Special Thanks
- HIGA Satoru
- SHIMIZU Motoi
- IWATANI Nariaki
- USAMI Takuto
- HORII Satoshi
- TOMOTO Yusuke
- HANAI Yuuya
- musiko
- TAESU Yuma
- HAYASAKA Akira
- ASAI
- Aris Bezas
- moebiussurfing
At the last
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