Beispiel #1
0
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));
        }
    }
}
Beispiel #2
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;
}
Beispiel #5
0
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);
}
Beispiel #6
0
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);
        }
    }
}
Beispiel #9
0
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);
}
Beispiel #10
0
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));
    }
}
Beispiel #12
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);
                }
            }
        }
    }
}
Beispiel #13
0
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;
}
Beispiel #14
0
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;
 }
Beispiel #15
0
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);
}
Beispiel #19
0
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;
}
Beispiel #21
0
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);
    }
}
Beispiel #23
0
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;
        }
    }
}
Beispiel #24
0
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;
}
Beispiel #25
0
//--------------------------------------------------------------
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);
}
Beispiel #29
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);
            }
        }
    }
}
Beispiel #30
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;
}