osc app using openframeworks
I have written a little demo app in openframeworks that shows how to react to osc events. Openframeworks uses ofxOsc as OSC library, which comes preinstalled in the FAT distribution.
the programm shows a square on a black background. the gray level of the square can be adjusted by sending osc messages to port 1234.
the following little ruby program sets the color to #808080
require 'osc'
msg = OSC::Message.new("/color", "i", 128 )
c = OSC::UDPSocket.new
c.send( msg, 0, "localhost", 1234 )
in the 'setup' method a osc receiver is initalized, and in the 'update' method, the messages are fetched from a queue and parsed.
I didn't generate any real complex osc messages for now, but as far as i can tell it is a very nice osc framework.
testApp.cpp:
#include "testApp.h"
void testApp::setup(){
gray = 255;
receiver.setup( 1234 );
}
void testApp::update(){
while( receiver.hasWaitingMessages() ) {
ofxOscMessage m;
receiver.getNextMessage( &m );
if ( strcmp( m.getAddress(), "/color" ) == 0 ) {
gray = m.getArgAsInt32( 0 );
}
}
}
void testApp::draw(){
ofBackground( 0,0,0 );
ofFill();
ofSetColor( gray, gray, gray );
ofRect( ofGetWidth()/2-100, ofGetHeight()/2-100, 200, 200 );
}
void testApp::keyPressed (int key){}
void testApp::keyReleased (int key){}
void testApp::mouseMoved(int x, int y ){}
void testApp::mouseDragged(int x, int y, int button){}
void testApp::mousePressed(int x, int y, int button){}
void testApp::mouseReleased(){}
testApp.h:
#ifndef _TEST_APP
#define _TEST_APP
#include "ofMain.h"
#define OF_ADDON_USING_OFXOSC
#include "ofAddons.h"
class testApp : public ofSimpleApp{
public:
void setup();
void update();
void draw();
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:
int gray;
ofxOscReceiver receiver;
};
#endif
main.cpp:
#include "ofMain.h"
#include "testApp.h"
int main( ){
// can be OF_WINDOW or OF_FULLSCREEN
// pass in width and height too:
ofSetupOpenGL(400,400, OF_WINDOW);
// this kicks off the running of my app
ofRunApp(new testApp);
}
See also:
rotating box in openframeworks
OpenFrameworks Demo
sketch experiment 7 - osc events
running openframeworks on a RaspberryPI