void ofApplication::handleTouchPadMessage(ofxOscMessage &m) { string a = m.getAddress(); int a_len = a.length(); int r_len = string("/oF/multiPad/").length(); if (a_len > r_len) { string mRouteStr = a.substr(r_len, a_len-r_len); int touchIndex = atoi(&mRouteStr.at(0)); int delim_pos = mRouteStr.find("/"); if (delim_pos != string::npos) { // z-message if (mRouteStr.at(mRouteStr.length()-1) == 'z') { bool on = m.getArgAsFloat(0) != 0.0; if (!on){ touchMap.erase(touchIndex); } } } else { // x-y are swapped in touchOSC landscape touchMap[touchIndex] = ofVec2f(m.getArgAsFloat(1), m.getArgAsFloat(0)); } } }
void testApp::setOscDebugMessage(ofxOscMessage message) { std::stringstream stream; stream << "OSC messages"; if (!showOscDebugPosition) { stream << " (Not showing position messages)"; } stream << " :\n"; stream << "[address]: " << message.getAddress() << ", "; for (int i = 0; i < message.getNumArgs(); ++i) { stream << "[" << (i+1) << "]: "; if (message.getArgType(i) == OFXOSC_TYPE_INT32) { stream << message.getArgAsInt32(i); } else if (message.getArgType(i) == OFXOSC_TYPE_STRING) { stream << message.getArgAsString(i); } else if (message.getArgType(i) == OFXOSC_TYPE_FLOAT) { stream << message.getArgAsFloat(i); } if (i != message.getNumArgs()-1) {stream << ", ";}; } stream << ", time: "; stream << ofGetElapsedTimef(); m_debugMessage = stream.str(); }
void FluidVisualization::handleOscMessage(ofxOscMessage m){ string address = m.getAddress(); const string fluidColorHS = "/showrunner/fluid/colorhs"; const string fluidColorB = "/showrunner/fluid/colorb"; const string fluidInk = "/showrunner/fluid/ink"; const string fluidFlame = "/showrunner/fluid/flame"; const string fluidForce = "/showrunner/fluid/force"; const string fluidReset = "/showrunner/fluid/reset"; if(address == fluidFlame){ flame=(m.getArgAsFloat(0) == 1); }else if(address == fluidInk){ ink=(m.getArgAsFloat(0) == 1); }else if(address == fluidForce){ force=(m.getArgAsFloat(0) == 1); }else if(address == fluidReset){ if (m.getArgAsFloat(0) == 1){ fluidSolver.reset(); } }else if(address == fluidColorHS){ colorH=m.getArgAsFloat(0)*255; colorS=m.getArgAsFloat(1)*255; }else if(address == fluidColorB){ colorB= m.getArgAsFloat(0)*255; } }
bool tuioVisBase::handleMessage(ofxOscMessage m) { string address = m.getAddress(); // special cases first: if (address=="/tuio/2dcur" && m.getNumArgs()==7 && m.getArgType(0)==OFXOSC_TYPE_STRING && m.getArgAsString(0)=="set") { tuioCursor tc; tc.s = m.getArgAsInt32(1); tc.x = m.getArgAsFloat(2); tc.y = m.getArgAsFloat(3); tc.dx = m.getArgAsFloat(4); tc.dy = m.getArgAsFloat(5); tc.m = m.getArgAsFloat(6); tc.age = 0; return cursorCallback(tc); } else if (address=="/tuio/2Dcur" && m.getNumArgs()==2 && m.getArgType(0)==OFXOSC_TYPE_STRING && m.getArgAsString(0)=="fseq") { return frameCallback(m.getArgAsInt32(1)); } else if (linearCallbacks.find(address) != linearCallbacks.end() && m.getNumArgs()==1) { return linearCallback(address, m.getArgAsFloat(0)); } else if (colorCallbacks.find(address) != colorCallbacks.end() && m.getNumArgs()==3) { return colorCallback(address, m.getArgAsFloat(0), m.getArgAsFloat(1), m.getArgAsFloat(2)); } // message not handled: else return false; }
bool OscController::handleMessageAsCommand(const ofxOscMessage &message) { auto address = message.getAddress(); const auto& prefix = _params.commandPrefix.get(); if (address.find(prefix) == std::string::npos) { return false; } auto name = address.substr(prefix.size()); auto args = messageToCommandArgs(message); return _commands.perform(name, args); }
void OscController::handleMessage(const ofxOscMessage &message) { if (handleMessageAsCommand(message)) { return; } auto iter = _bindings.find(message.getAddress()); if (iter == _bindings.end()) { return; } iter->second->handleMessage(message); }
void DelaunayVisualization::handleOscMessage(ofxOscMessage m){ string address = m.getAddress(); const string delaunayColorHS = "/showrunner/delaunay/colorhs"; const string delaunayColorB = "/showrunner/delaunay/colorb"; if(address == delaunayColorHS){ colorH=m.getArgAsFloat(0)*255; colorS=m.getArgAsFloat(1)*255; }else if(address == delaunayColorB){ colorB= m.getArgAsFloat(0)*255; } }
//---------- void OscManager::oscReceiveTouchOscChanges(ofxOscMessage &msg) { vector<string> m = ofSplitString(msg.getAddress(), "/"); if (m.size()>1 && m[m.size()-1].length()==1 && ofToInt(m[m.size()-1])>0) { int idx = ofToInt(m[m.size()-1]); m.pop_back(); string address = ofJoinString(m, "/"); if (inputTrackers.count(address) > 0) { oscReceiveProcessTouchOscMessage(address, msg, idx); } } }
void OscController::sendMessage(ofxOscMessage message) { if (_receiving) { return; } if (!_sender) { ofLogWarning() << "Unable to send osc message " << message.getAddress() << ", sender not initialized"; return; } message.setRemoteEndpoint(_params.outputHost.get(), _params.outputPort.get()); _sender->sendMessage(message, false); }
void ofApp::sendMessage(ofxOscMessage &m) { // here we iterate through the registered clients, sending the heartbeat message to them all. for(map<string, ofxOscSender>::iterator i = clients.begin(); i != clients.end(); i++) { // iterator->first = key (string ip) // iterator->second = value (ofxOscSender sender) ofxOscSender & _sender = i->second; cout << "sending " << m.getAddress() << " to " << i->first << endl; _sender.sendMessage(m); } }
void AbletonGui::parseMessage(ofxOscMessage & msg) { string address = msg.getAddress(); if (address == addressRoot) { for (int idx = 0; idx < min((int)sliders.size(), msg.getNumArgs()); idx++) { sliders[idx]->setValue(msg.getArgAsFloat(idx)); } } else if (activeAddresses.count(address) >0) { activeAddresses[address]->setValue(msg.getArgAsFloat(0)); } }
//------------------------------------------------------------- void ofApp::handleMessage(ofxOscMessage m) { string send_string; string address_string; string ip_string; ip_string = "/" + ofSplitString( ofToString(m.getRemoteIp()), ".")[3]; // check for battery message if(m.getAddress() == "/battery"){ if(m.getArgType(0) == OFXOSC_TYPE_FLOAT){ // construct OSC message to send sendBattery( ip_string, m.getArgAsFloat(0)); } } // check for blob message else if(m.getAddress() == "/inputs/serial/1") { for(int i = 0; i < m.getNumArgs(); i++){ // get the argument type if(m.getArgType(i) == OFXOSC_TYPE_BLOB){ string blob = m.getArgAsBlob(0); vector<string> parameters = ofSplitString(blob, ","); if( parameters.size() >= 5 ) { int distance = ofToInt(parameters[0]); int velocity = ofToInt(parameters[1]); int azimuth = ofToInt(parameters[2]); int elevation = ofToInt(parameters[3]); float angularRate = ofToFloat(parameters[4]); // send osc messages sendDistance(ip_string, distance); sendVelocity(ip_string, velocity); sendAzimuth(ip_string, azimuth); sendElevation(ip_string, elevation); sendAngularRate(ip_string, angularRate); } } } } }
string messenger::dumpOSC(ofxOscMessage m) { string msg_string; msg_string = m.getAddress(); for (int i=0; i<m.getNumArgs(); i++ ) { msg_string += " "; if(m.getArgType(i) == OFXOSC_TYPE_INT32) msg_string += ofToString( m.getArgAsInt32(i)); else if(m.getArgType(i) == OFXOSC_TYPE_FLOAT) msg_string += ofToString( m.getArgAsFloat(i)); else if(m.getArgType(i) == OFXOSC_TYPE_STRING) msg_string += m.getArgAsString(i); } return msg_string; }
void ofApp::dumpOSC(ofxOscMessage m) { string msgString; msgString = m.getAddress(); for (int i=0; i<m.getNumArgs(); i++){ msgString += " "; if(m.getArgType(i) == OFXOSC_TYPE_INT32) msgString += ofToString(m.getArgAsInt32(i)); else if(m.getArgType(i) == OFXOSC_TYPE_FLOAT) msgString += ofToString(m.getArgAsFloat(i)); else if(m.getArgType(i) == OFXOSC_TYPE_STRING) msgString += m.getArgAsString(i); } cout << msgString << endl; }
void AnimatedSinus::parseOSC(ofxOscMessage &m){ // string msg = m.getAddress(); // string cmd ; // // int ces = msg.find_first_of("/"); // // if (ces != -1) { // if (ces == 0){ // msg = msg.substr(ces+1); // cmd = msg; // ces = msg.find_first_of("/"); // if (ces != -1) { // cmd = msg.substr(0, ces); // msg = msg.substr(ces); // } // } // else{ // cmd = msg.substr(0, ces); // msg = msg.substr(ces); // } // } vector<string> osc = getOSCcmd(m.getAddress()); string cmd = osc[0]; string msg = osc[1]; if (cmd == "sin"){ osc = getOSCcmd(msg); string cmd = osc[0]; string msg = osc[1]; if (cmd == "freq"){ freq = ofMap(m.getArgAsFloat(0), 0., 1., 0., 500.); } else if (cmd == "nbPoint"){ nbPoint = m.getArgAsInt32(0); } else if (cmd == "speed"){ speed = ofMap(m.getArgAsFloat(0), 0., 1., 0., 50.); } else if (cmd == "height"){ height = m.getArgAsFloat(0); } else if (cmd == "posY"){ posY = ofMap(m.getArgAsFloat(0), 0., 1., -1., 1.); } } }
void ramActorManager::updateWithOscMessage(const ofxOscMessage &m) { if (isFreezed()) return; const std::string addr = m.getAddress(); const std::string name = m.getArgAsString(0); if (addr == RAM_OSC_ADDR_ACTOR) { if (!nodearrays.hasKey(name)) { ramActor o; o.setType(RAM_NODEARRAY_TYPE_ACTOR); o.setName(name); o.updateWithOscMessage(m); nodearrays.set(name, o); ofNotifyEvent(actorSetup, o); } else { ramActor &o = (ramActor &)nodearrays[name]; o.updateWithOscMessage(m); } } else if (addr == RAM_OSC_ADDR_RIGID_BODY) { if (!nodearrays.hasKey(name)) { ramRigidBody o; o.setType(RAM_NODEARRAY_TYPE_RIGIDBODY); o.setName(name); o.updateWithOscMessage(m); nodearrays.set(name, o); ofNotifyEvent(rigidSetup, o); } else { ramRigidBody &o = (ramRigidBody &)nodearrays[name]; o.updateWithOscMessage(m); } } else assert(false); }
void ofxOscSender::appendMessage( ofxOscMessage& message, osc::OutboundPacketStream& p ) { p << osc::BeginMessage( message.getAddress().c_str() ); for ( int i=0; i< message.getNumArgs(); ++i ) { if ( message.getArgType(i) == OFXOSC_TYPE_INT32 ) p << message.getArgAsInt32( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_FLOAT ) p << message.getArgAsFloat( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_STRING ) p << message.getArgAsString( i ).c_str(); else { assert( false && "bad argument type" ); } } p << osc::EndMessage; }
void OscThread::executeMessage(ofxOscMessage& m) { Action b; map<string, Action::Type> actions { {"/record", Action::Type::RECORD}, {"/enter", Action::Type::ENTER}, {"/bump", Action::Type::BUMP}, {"/leave", Action::Type::LEAVE} }; b.action = actions[m.getAddress()]; unsigned int i = 0; b.instrument = m.getArgAsInt32(i++); b.bird = m.getArgAsInt32(i++); if(b.action == Action::Type::RECORD || b.action == Action::Type::BUMP) { b.delta_x = m.getArgAsFloat(i++); b.delta_y = m.getArgAsFloat(i++); b.delta_z = m.getArgAsFloat(i++); b.angle_x = m.getArgAsFloat(i++); b.angle_y = m.getArgAsFloat(i++); b.angle_z = m.getArgAsFloat(i++); if(b.action != Action::Type::BUMP) { b.speed_x = m.getArgAsFloat(i++); b.speed_y = m.getArgAsFloat(i++); b.speed_z = m.getArgAsFloat(i++); b.accel_x = m.getArgAsFloat(i++); b.accel_y = m.getArgAsFloat(i++); b.accel_z = m.getArgAsFloat(i++); } else // BUMP { b.velo_city = m.getArgAsFloat(i++); } } parent->executeAction(b); }
void ofxGstRTPServer::appendMessage( ofxOscMessage& message, osc::OutboundPacketStream& p ) { p << osc::BeginMessage( message.getAddress().c_str() ); for ( int i=0; i< message.getNumArgs(); ++i ) { if ( message.getArgType(i) == OFXOSC_TYPE_INT32 ) p << message.getArgAsInt32( i ); else if ( message.getArgType(i) == OFXOSC_TYPE_INT64 ) p << (osc::int64)message.getArgAsInt64( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_FLOAT ) p << message.getArgAsFloat( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_STRING ) p << message.getArgAsString( i ).c_str(); else { ofLogError("ofxOscSender") << "appendMessage(): bad argument type " << message.getArgType( i ); } //cout << i << ": " << p.Size() << endl; } p << osc::EndMessage; }
//-------------------------------------------------------------- // OSCメッセージをコンソールに出力する関数 // string ofApp::dumpOSC(ofxOscMessage m) { string str = m.getAddress(); for (int i=0; i<m.getNumArgs(); i++ ) { str += " "; switch (m.getArgType(i)) { case OFXOSC_TYPE_INT32: str += ofToString( m.getArgAsInt32(i)); break; case OFXOSC_TYPE_FLOAT: str += ofToString( m.getArgAsFloat(i)); break; case OFXOSC_TYPE_STRING: str += m.getArgAsString(i); break; default: break; } } cout << str << endl; return str; }
string ofApp::getMsgContent(ofxOscMessage m){ bool DISPLAY_ALL = false; string msg_string = ""; int iTotalArg = m.getNumArgs(), i = -1; if (DISPLAY_ALL){ msg_string += ", port: " + m.getAddress(); } if (++i < iTotalArg && DISPLAY_ALL) msg_string += "NAME: " + m.getArgAsString(i); if (++i < iTotalArg) msg_string += " " + m.getArgAsString(i); //STATUS if (++i < iTotalArg) msg_string += " " + m.getArgAsString(i); //FILE if (++i < iTotalArg && DISPLAY_ALL) msg_string += ", POSITION: " + ofToString(m.getArgAsInt(i)); if (++i < iTotalArg && DISPLAY_ALL) msg_string += ", DURATION: " + ofToString(m.getArgAsInt(i)); if (++i < iTotalArg) msg_string += ", LOOPING: " + ofToString(m.getArgAsInt(i)); if (++i < iTotalArg && DISPLAY_ALL) msg_string += ", VOLUME: " + ofToString(m.getArgAsInt(i)); if (++i < iTotalArg && DISPLAY_ALL) msg_string += ", MUTE: " + m.getArgAsString(i); if (++i < iTotalArg && DISPLAY_ALL) msg_string += ", ZOOM: " + ofToString(m.getArgAsInt(i)); if (++i < iTotalArg && DISPLAY_ALL) msg_string += ", BLUR: " + ofToString(m.getArgAsInt(i)); return msg_string; }
void AnimatedOSCLines::parseOSC(ofxOscMessage &m){ // string msg = m.getAddress(); // string cmd ; // // int ces = msg.find_first_of("/"); // // if (ces != -1) { // if (ces == 0){ // msg = msg.substr(ces+1); // cmd = msg; // ces = msg.find_first_of("/"); // if (ces != -1) { // cmd = msg.substr(0, ces); // msg = msg.substr(ces); // } // } // else{ // cmd = msg.substr(0, ces); // msg = msg.substr(ces); // } // } vector<string> osc = getOSCcmd(m.getAddress()); string cmd = osc[0]; string msg = osc[1]; // cout<<"osc points "<<cmd<<endl; if (cmd == "oscPoints"){ ofPolyline p; polylines.clear(); int nbPoints = m.getArgAsInt32(0); for (int i=0; i<nbPoints-1; i++) { p.addVertex(m.getArgAsFloat(1+i*2), m.getArgAsFloat(1+i*2+1)); } // p.addVertex(m.getArgAsFloat(1), m.getArgAsFloat(2)); polylines.push_back(p); } }
void Ableton::displayOscMessage(ofxOscMessage &m) { cout << "address : "<< m.getAddress() << endl; for (int i = 0; i < m.getNumArgs(); i++) { if (m.getArgType(i) == OFXOSC_TYPE_INT32) { cout << " i--> "<<m.getArgAsInt32(i)<<endl; } else if (m.getArgType(i) == OFXOSC_TYPE_INT64) { cout << " j--> "<<m.getArgAsInt64(i)<<endl; } else if (m.getArgType(i) == OFXOSC_TYPE_FLOAT) { cout << " f--> "<<m.getArgAsFloat(i)<<endl; } else if (m.getArgType(i) == OFXOSC_TYPE_STRING) { cout << " s--> "<<m.getArgAsString(i)<<endl; } else if (m.getArgType(i) == OFXOSC_TYPE_BLOB) { cout << " b--> "<<m.getArgAsBlob(i)<<endl; } } }
void ofApp::appendMessage( ofxOscMessage& message, osc::OutboundPacketStream& p ) { p << osc::BeginMessage( message.getAddress().c_str() ); for ( int i=0; i< message.getNumArgs(); ++i ) { if ( message.getArgType(i) == OFXOSC_TYPE_INT32 ) p << message.getArgAsInt32( i ); else if ( message.getArgType(i) == OFXOSC_TYPE_INT64 ) p << (osc::int64)message.getArgAsInt64( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_FLOAT ) p << message.getArgAsFloat( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_DOUBLE ) p << message.getArgAsDouble( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_STRING || message.getArgType( i ) == OFXOSC_TYPE_SYMBOL) p << message.getArgAsString( i ).c_str(); else if ( message.getArgType( i ) == OFXOSC_TYPE_CHAR ) p << message.getArgAsChar( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_MIDI_MESSAGE ) p << message.getArgAsMidiMessage( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_TRUE || message.getArgType( i ) == OFXOSC_TYPE_FALSE ) p << message.getArgAsBool( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_TRIGGER ) p << message.getArgAsTrigger( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_TIMETAG ) p << (osc::int64)message.getArgAsTimetag( i ); //else if ( message.getArgType( i ) == OFXOSC_TYPE_RGBA_COLOR ) // p << message.getArgAsRgbaColor( i ); else if ( message.getArgType( i ) == OFXOSC_TYPE_BLOB ){ ofBuffer buff = message.getArgAsBlob(i); osc::Blob b(buff.getData(), (unsigned long)buff.size()); p << b; }else { ofLogError("ofxOscSender") << "appendMessage(): bad argument type " << message.getArgType( i ); assert( false ); } } p << osc::EndMessage; }
//-------------------------------------------------------------- string ofApp::getOscMsgAsString(ofxOscMessage m){ string msg_string; msg_string = m.getAddress(); msg_string += ":"; for(int i = 0; i < m.getNumArgs(); i++){ // get the argument type msg_string += " " + m.getArgTypeName(i); msg_string += ":"; // display the argument - make sure we get the right type if(m.getArgType(i) == OFXOSC_TYPE_INT32){ msg_string += ofToString(m.getArgAsInt32(i)); } else if(m.getArgType(i) == OFXOSC_TYPE_FLOAT){ msg_string += ofToString(m.getArgAsFloat(i)); } else if(m.getArgType(i) == OFXOSC_TYPE_STRING){ msg_string += m.getArgAsString(i); } else{ msg_string += "unknown"; } } return msg_string; }
string OscManager::getMessageAsString(const ofxOscMessage& m) const { string msg_string; msg_string = m.getAddress(); for(int i = 0; i < m.getNumArgs(); i++){ // get the argument type msg_string += " "; // display the argument - make sure we get the right type if(m.getArgType(i) == OFXOSC_TYPE_INT32){ msg_string += ofToString(m.getArgAsInt32(i)); } else if(m.getArgType(i) == OFXOSC_TYPE_FLOAT){ msg_string += ofToString(m.getArgAsFloat(i)); } else if(m.getArgType(i) == OFXOSC_TYPE_STRING){ msg_string += m.getArgAsString(i); } else{ msg_string += "unknown"; } } return msg_string; }
// proceed the message bool durationReceiver::handle(const ofxOscMessage &_msg) { if( !isEnabled() ) return false; // lock mutex ofScopedLock myLock(oscMutex); // get incoming track info if( _msg.getAddress().compare("/dt/info") == 0 ){ // todo: register incomming variable types // tracks and let them be synchronised automatically with inter variables + getters return true; // we're done } // incoming track data if( canHandle(_msg) ){ string track=_msg.getAddress().substr(DT_PREFIX_LEN,_msg.getAddress().npos); ofxOscArgType type = OFXOSC_TYPE_NONE; if( _msg.getNumArgs() > 0 ) type = _msg.getArgType(0); if(_msg.getNumArgs()>0 && (type == OFXOSC_TYPE_INT32 || type == OFXOSC_TYPE_FLOAT) ){ // /dt/cmd/effect-* #define cmpEffectCmd "cmd/effect-" if( track.compare(0, sizeof(cmpEffectCmd)-1, cmpEffectCmd) == 0 ) { track=track.substr(sizeof(cmpEffectCmd)-1,track.npos); // enable / disable an effect // /dt/cmd/effect-enable-effectName #define cmpEffectCmdEnable "enable-" if( track.compare(0, sizeof(cmpEffectCmdEnable)-1, cmpEffectCmdEnable) == 0 ) { effectCmdEventArgs args; args.command = "enable"; args.targetEffectName = track.substr(sizeof(cmpEffectCmdEnable)-1, track.npos); args.boolValue = _msg.getArgAsInt32(0); ofNotifyEvent(basicEffect::effectCommandEvent, args); } #define cmpEffectCmdAlpha "alpha-" else if( track.compare(0, sizeof(cmpEffectCmdAlpha)-1, cmpEffectCmdAlpha) == 0 ) { effectCmdEventArgs args; args.command = "alpha"; args.targetEffectName = track.substr(sizeof(cmpEffectCmdAlpha)-1, track.npos); args.floatValue = _msg.getArgAsFloat(0); ofNotifyEvent(basicEffect::effectCommandEvent, args); } } } else if( type == OFXOSC_TYPE_FLOAT){ float value = 0; if(_msg.getNumArgs()>0) value=_msg.getArgAsFloat(0); durationFloatEventArgs args; args.track=track; //args.type="curve"; args.value=value; ofNotifyEvent(durationFloatEvent, args); } else if(type == OFXOSC_TYPE_INT32){ } else if(type == OFXOSC_TYPE_STRING){ durationFlagEventArgs args; args.track=track; args.flag = _msg.getArgAsString(0); ofNotifyEvent(durationFlagEvent, args); } // handle bangs else if(type == OFXOSC_TYPE_NONE){ durationBangEventArgs args; args.track=track; ofNotifyEvent(durationBangEvent, args); } // - - - - - - - - - - // Notice: // The following message handling are temporary and static. // A system needs to be made for synchronising any track by automatically parsing it. #ofxOscVariable // Hence you can dynamically create new variables and bind them to effect variables // - - - - - - - - - - if( track.compare("bang") == 0 && type == OFXOSC_TYPE_NONE ){ { // send bangEvent durationBangEventArgs args; args.track=track; ofNotifyEvent(durationBangEvent, args); } } else if( track.compare("test") == 0 ){ { // send flagEvent string flag = ""; if(_msg.getNumArgs()>0 && type == OFXOSC_TYPE_STRING){ flag=_msg.getArgAsString(0); } durationFlagEventArgs args; args.track=track; args.flag=""; ofNotifyEvent(durationFlagEvent, args); } } else if( track.compare("lineEffectIntensity") == 0 ){ { // curve float value = 0; if(_msg.getNumArgs()>0) value=_msg.getArgAsFloat(0); durationFloatEventArgs args; args.track=track; args.type="curve"; args.value=value; ofNotifyEvent(durationFloatEvent, args); } } // tmp else if( track.compare("bgVendomeOpacity") == 0 ){ { // curve float value = 0; if(_msg.getNumArgs()>0) value=_msg.getArgAsFloat(0); durationFloatEventArgs args; args.track=track; args.type="curve"; args.value=value; ofNotifyEvent(durationFloatEvent, args); } } else if( track.compare("imageBeatEffectIntensity") == 0 ){ { // curve float value = 0; if(_msg.getNumArgs()>0) value=_msg.getArgAsFloat(0); durationFloatEventArgs args; args.track=track; args.type="curve"; args.value=value; ofNotifyEvent(durationFloatEvent, args); } } /*{ // send bangEvent durationBangEventArgs args; args.what="aubioTempo"; ofNotifyEvent(durationBangEvent, args); } { // send bangEvent durationTempoEventArgs args; args.bpm = mirCache.bpm; args.isTempoBis=false; ofNotifyEvent(durationTempoEventArgs, args); } */ // unknown track, could not get information else { // todo: try to add the signal here //ofLogNotice(); } return true; }/* else if( addr.compare("/aubioTempoBis") == 0 ){ { // send bangEvent durationBangEventArgs args; args.what="aubioTempoBis"; ofNotifyEvent(durationBangEvent, args); } { // send bangEvent durationTempoEventArgs args; args.bpm = mirCache.bpm; args.isTempoBis=true; ofNotifyEvent(durationTempoEventArgs, args); } return true; } else if( addr.compare("/aubioBpm") == 0 ){ if(_msg.getNumArgs()>0) mirCache.bpm = _msg.getArgTypeName(0)=="int32"?_msg.getArgAsInt32(0):_msg.getArgAsFloat(0); return true; } else if( addr.compare("/aubioPitch") == 0 ){ if(_msg.getNumArgs()>0) mirCache.pitch = _msg.getArgTypeName(0)=="int32"?_msg.getArgAsInt32(0):_msg.getArgAsFloat(0); return true; } else if( addr.compare("/aubioQuiet") == 0 ){ if(_msg.getNumArgs()>0) mirCache.silence = (_msg.getArgAsInt32(0)==0)?true:false; return true; } else if( addr.compare("/aubioIsPlaying") == 0 ){ if(_msg.getNumArgs()>0) mirCache.isPlaying = (_msg.getArgAsInt32(0)==0)?true:false; return true; } else if( addr.compare("/aubioZcr") == 0 ){ if(_msg.getNumArgs()>0) mirCache.zcr = _msg.getArgTypeName(0)=="int32"?_msg.getArgAsInt32(0):_msg.getArgAsFloat(0); return true; } else if( addr.compare("/balance") == 0 ){ if(_msg.getNumArgs()>0) mirCache.balance = _msg.getArgTypeName(0)=="int32"?_msg.getArgAsInt32(0):_msg.getArgAsFloat(0); return true; } // Fiddle FFT Equaliser else if( addr.compare(0, 16, "/fiddle_fft/band") == 0 ){ // 16 first chars int band = ofToInt(addr.substr(16)); if(addr.compare(17, 20, "rms")==0) // rms (volume) mirCache.fiddleFFT[band][0]=_msg.getArgTypeName(0)=="int32"?_msg.getArgAsInt32(0):_msg.getArgAsFloat(0); else // pitch mirCache.fiddleFFT[band][1]=_msg.getArgTypeName(0)=="int32"?_msg.getArgAsInt32(0):_msg.getArgAsFloat(0); return true; } else if( addr.compare("") == 0 ){ return true; }*/ else { //cout << "Not recognized OSC = " << _msg.getAddress() << endl; } // unrecognized messge return false; }
// tell router if a message can be handled by this OSCNode instance bool durationReceiver::canHandle(const ofxOscMessage &_msg) const { //string tmp = _msg.getAddress().substr(0,DT_PREFIX_LEN)+" • " + ofToString(DT_PREFIX_LEN); return (_msg.getAddress().compare(0,DT_PREFIX_LEN, DURATION_TIMELINE_PREFIX) == 0); }
void AnimatedLines::parseOSC(ofxOscMessage &m){ // string msg = m.getAddress(); // string cmd ; // // int ces = msg.find_first_of("/"); // // if (ces != -1) { // if (ces == 0){ // msg = msg.substr(ces+1); // cmd = msg; // ces = msg.find_first_of("/"); // if (ces != -1) { // cmd = msg.substr(0, ces); // msg = msg.substr(ces); // } // } // else{ // cmd = msg.substr(0, ces); // msg = msg.substr(ces); // } // } vector<string> osc = getOSCcmd(m.getAddress()); string cmd = osc[0]; string msg = osc[1]; if (cmd == "lines"){ osc = getOSCcmd(msg); string cmd = osc[0]; string msg = osc[1]; if (cmd == "nbLines"){ nbLines = m.getArgAsFloat(0); } else if (cmd == "pos"){ pos = m.getArgAsFloat(0); } else if (cmd == "dir"){ dir = m.getArgAsInt32(0); } else if (cmd == "speed"){ speed = ofMap(m.getArgAsFloat(0), 0., 1., -0.05, 0.05); } else if (cmd == "noise"){ m.setAddress(msg); osc = getOSCcmd(m.getAddress()); cmd = osc[0]; msg = osc[1]; if (cmd == "sw"){ useNoise = m.getArgAsInt32(0); } else if (cmd == "coeff"){ noiseCoeff = m.getArgAsFloat(0); } else if (cmd == "speed"){ noiseSpeed = m.getArgAsFloat(0); } else if (cmd == "scale"){ noiseScale = m.getArgAsFloat(0); } } } }
//-------------------------------------------------------------- bool Sprite::processOscMessage(const ofxOscMessage& message) { // call the base class if(DrawableObject::processOscMessage(message)) { return true; } if(message.getAddress() == oscRootAddress + "/position") { tryNumber(message, pos.x, 0); tryNumber(message, pos.y, 1); return true; } else if(message.getAddress() == oscRootAddress + "/position/x") { tryNumber(message, pos.x, 0); return true; } else if(message.getAddress() == oscRootAddress + "/position/y") { tryNumber(message, pos.y, 0); return true; } else if(message.getAddress() == oscRootAddress + "/size") { tryNumber(message, width, 0); tryNumber(message, height, 1); resizeIfNecessary(); return true; } else if(message.getAddress() == oscRootAddress + "/size/width") { tryNumber(message, width, 0); resizeIfNecessary(); return true; } else if(message.getAddress() == oscRootAddress + "/size/height") { tryNumber(message, height, 0); resizeIfNecessary(); return true; } else if(message.getAddress() == oscRootAddress + "/frame") { unsigned int frame = 0; tryNumber(message, frame, 0); gotoFrame(frame); return true; } else if(message.getAddress() == oscRootAddress + "/animate") { tryBool(message, bAnimate, 0); return true; } else if(message.getAddress() == oscRootAddress + "/loop") { tryBool(message, bLoop, 0); return true; } else if(message.getAddress() == oscRootAddress + "/pingpong") { tryBool(message, bPingPong, 0); return true; } else if(message.getAddress() == oscRootAddress + "/center") { bool b = bDrawFromCenter; if(tryBool(message, b, 0)) { setDrawFromCenter(b); } return true; } else if(message.getAddress() == oscRootAddress + "/overlay") { tryBool(message, bDrawAllLayers, 0); return true; } return false; }