easy utility for publish/subscribe OSC message.
- ofxOsc
- 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.
- How to use
- Simple API Reference
- Supported types
- Update history
- License
- Author
- Supporting Contributor
- Special Thanks
- At the last
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);
}
};
API Reference is imperfect now.
If you want to use advanced features, see Advanced
- 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.
- 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
- 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
.
- 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.
- 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.
- void ofxSendOsc(const string &ip, int port, const string &address, Arguments && ... arguments)
- Arithmetic is any type of Int32, Int64 or 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
ofVec2f
(published as Float * 2)
ofVec3f
(=ofPoint
) (published as Float * 3)
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)
ofMatrix3x3
(published as Float * 9)
ofMatrix4x4
(publish as Float * 16)
ofBuffer
ofParameter<SupportedType>
NOTE: we only support subscribing ofParameterGroup. See How to subscribe ofParameterGroup
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]
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
std::function<T()>
;- pair of
U &that
,T (U::\*callback)()
; - pair of
U \*that
,T (U::\*callback)()
;
2021/09/30 ver 0.3.3
- fixed bug on ver 0.3.2 (issued by hanasaan. thanks!!!)
- 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
ofxPubSubOsc uses Mood Versioning. maybe, 1.0.0. will not come.
MIT License.
- ISHII 2bit [ISHII Tsuubito Program Office]
- i[at]2bit.jp
- HIGA Satoru
- SHIMIZU Motoi
- IWATANI Nariaki
- USAMI Takuto
- HORII Satoshi
- TOMOTO Yusuke
- HANAI Yuuya
- musiko
- TAESU Yuma
- HAYASAKA Akira
- ASAI
- Aris Bezas
- moebiussurfing
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