Skip to content

Instantly share code, notes, and snippets.

@bzztbomb
Created January 26, 2013 02:57
Show Gist options
  • Save bzztbomb/4639808 to your computer and use it in GitHub Desktop.
Save bzztbomb/4639808 to your computer and use it in GitHub Desktop.
Cinder + OSC Hacks
//Hack #1, publishing OSC port info via Bonjour. Control (http://charlie-roberts.com/Control/) scans Bonjour for available services.
// Call publish_via_bonjour from your ::setup() function
#import <Cocoa/Cocoa.h>
@class NSNetService;
@interface BonjourPublisher : NSObject
{
NSNetService *netService;
}
@end
@implementation BonjourPublisher
-(void) publishService
{
netService = [[NSNetService alloc] initWithDomain:@"" type:@"_osc._udp." name:@"bobbevy" port:23232];
[netService retain];
[netService publish];
}
@end
BonjourPublisher* publisher;
void publish_via_bonjour()
{
publisher = [[BonjourPublisher alloc] init];
[publisher retain];
[publisher publishService];
}
// Hack 2
// I have a project that I was triggering actions with key presses. A little bit before the performance, I decided I wanted to
// use Control to trigger the actions. The quickest way to accomplish this was to just map OSC messages to keypresses.
void bobbevyApp::handleOSC()
{
while (mListener.hasWaitingMessages())
{
osc::Message message;
mListener.getNextMessage(&message);
if ((message.getAddress().compare("/bobbevy/key") == 0) && (message.getArgType(0) == osc::TYPE_STRING) && (message.getArgAsString(0).size() > 0))
{
int code = message.getArgAsString(0).c_str()[0];
map<int,int>::iterator iter = mMessageMap.find( code );
if( iter != mMessageMap.end() )
{
KeyEvent ev(getWindow(), iter->second, iter->second, 0, 0);
keyDown(ev);
}
}
}
}
void bobbevyApp::initMsgMap()
{
mMessageMap['0'] = KeyEvent::KEY_0;
mMessageMap['1'] = KeyEvent::KEY_1;
mMessageMap['2'] = KeyEvent::KEY_2;
mMessageMap['3'] = KeyEvent::KEY_3;
mMessageMap['4'] = KeyEvent::KEY_4;
mMessageMap['5'] = KeyEvent::KEY_5;
mMessageMap['6'] = KeyEvent::KEY_6;
mMessageMap['7'] = KeyEvent::KEY_7;
mMessageMap['8'] = KeyEvent::KEY_8;
mMessageMap['9'] = KeyEvent::KEY_9;
mMessageMap['A'] = KeyEvent::KEY_a;
mMessageMap['B'] = KeyEvent::KEY_b;
mMessageMap['C'] = KeyEvent::KEY_c;
mMessageMap['D'] = KeyEvent::KEY_d;
mMessageMap['E'] = KeyEvent::KEY_e;
mMessageMap['F'] = KeyEvent::KEY_f;
mMessageMap['G'] = KeyEvent::KEY_g;
mMessageMap['H'] = KeyEvent::KEY_h;
mMessageMap['I'] = KeyEvent::KEY_i;
mMessageMap['J'] = KeyEvent::KEY_j;
mMessageMap['K'] = KeyEvent::KEY_k;
mMessageMap['L'] = KeyEvent::KEY_l;
mMessageMap['M'] = KeyEvent::KEY_m;
mMessageMap['N'] = KeyEvent::KEY_n;
mMessageMap['O'] = KeyEvent::KEY_o;
mMessageMap['P'] = KeyEvent::KEY_p;
mMessageMap['Q'] = KeyEvent::KEY_q;
mMessageMap['R'] = KeyEvent::KEY_r;
mMessageMap['S'] = KeyEvent::KEY_s;
mMessageMap['T'] = KeyEvent::KEY_t;
mMessageMap['U'] = KeyEvent::KEY_u;
mMessageMap['V'] = KeyEvent::KEY_v;
mMessageMap['W'] = KeyEvent::KEY_w;
mMessageMap['X'] = KeyEvent::KEY_x;
mMessageMap['Y'] = KeyEvent::KEY_y;
mMessageMap['Z'] = KeyEvent::KEY_z;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment