Created
January 26, 2013 02:57
-
-
Save bzztbomb/4639808 to your computer and use it in GitHub Desktop.
Cinder + OSC Hacks
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//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