void Mesh::generateMessage(ofxOscMessage& message) { message.setAddress("/mesh/positions"); for (auto p : points) { message.addFloatArg(p.x); message.addFloatArg(p.y); } }
//-------------------------------------------------------------- void DonutCop::handleControlMessage(const ofxOscMessage &m) { ofBuffer data = m.getArgAsBlob(0); _maxSprinkles = m.getArgAsInt32(1); _minSprinkles = m.getArgAsInt32(2); _maxNewSprinkles = m.getArgAsInt32(3); _maxVelocity = m.getArgAsFloat(4); _maxAcceleration = m.getArgAsFloat(5); // Calculate left and right IDs int val; int maxId = 0; leftId = 256; rightId = -1; for (int i = 0; i < data.size(); ++i) { val = (int)(data.getData()[i]); if (val > id && val < leftId) { leftId = val; } if (val < id && val > rightId) { rightId = val; } if (val > maxId) { maxId = val; } } if (leftId == 256) { leftId = 0; } if (rightId == -1) { rightId = maxId; } ofLogVerbose() << "My left ID is " << leftId << " and my right ID is " << rightId << "."; }
///-------------------------------------------------------------- void AbletonManager::onClipPlayingPositionChanged(ofxOscMessage &m) { /** * Response for clip position changes: * /clip/playing_position * N triplets with: * (int) track * (int) clip * (float) track position (0..1) */ int track; float position; int numArgs = m.getNumArgs(); for (int i=0; i<numArgs; i+=3) { track = m.getArgAsInt32(i); // clip = m.getArgAsInt32(i+1); position = m.getArgAsFloat(i+2); if (track >= sceneNumObjects) continue; ofNotifyEvent(eventsClipPositionChanged[track], position, this); } }
///-------------------------------------------------------------- void AbletonManager::onTracksVolumeChanged(ofxOscMessage &m) { /** * Response for track volume (amplitude) changes: * /live/track/meterblock * N triplets with: * (int) track number * (int) channel (0=left, 1=right) * (float) volume (0..1) */ int track, channel; float volume; int numArgs = m.getNumArgs(); for (int i=0; i<numArgs; i+=3) { track = m.getArgAsInt32(i); channel = m.getArgAsInt32(i+1); volume = m.getArgAsFloat(i+2); if (channel == 1) continue; // Skip right channel messages if (track >= sceneNumObjects) continue; // Skip if this track index is larger than the number of objects in scene ofNotifyEvent(eventsVolumeChanged[track], volume, this); } }
void Ableton::getDeviceList(ofxOscMessage &m) { int numArgs = m.getNumArgs(); int track = m.getArgAsInt32(0); if (tracks.count(track) == 0) { AbletonTrack *newTrack = new AbletonTrack("track "+ofToString(track), track, numScenes, &sender); tracks[track] = newTrack; newTrack->getControl()->setCollapsible(true); if (track == 0) { control.attachWidget(newTrack->getControl()); } else { tracks[track-1]->getControl()->attachWidget(newTrack->getControl()); } } for (int i = 1; i < numArgs; i+=2) { int device = m.getArgAsInt32(i); string name = m.getArgAsString(i+1); if (tracks[track]->getDevices().count(device) == 0) { AbletonDevice *newDevice = new AbletonDevice(name, track, device, &sender); tracks[track]->addDevice(device, newDevice); } requestDeviceParameters(track, device); requestDeviceParametersRange(track, device); } }
void addOscMessageArg(ofxOscMessage& message, const ofFloatColor& value) { message.addFloatArg(value.r); message.addFloatArg(value.g); message.addFloatArg(value.b); message.addFloatArg(value.a); }
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 ofApp::getMessage22(ofxOscMessage m){ int msgnum; msgnum = m.getNumArgs(); if(msgnum==2){ velx_ave = m.getArgAsInt32(0); vely_ave = m.getArgAsInt32(1); } }
static ofMultiTaction::Finger makeFingerFromOSC(const ofxOscMessage &m) { ofMultiTaction::Finger finger; finger.id = m.getArgAsInt32(0); finger.x = m.getArgAsFloat(1); finger.y = m.getArgAsFloat(2); return finger; }
void Ableton::getDeviceParametersRange(ofxOscMessage &m) { int track = m.getArgAsInt32(0); int device = m.getArgAsInt32(1); if (tracks.count(track) != 0 && tracks[track]->getDevices().count(device) != 0) { tracks[track]->getDevices()[device]->getParameterRanges(m); } }
void oniActorApp::oscSendCenter(XnPoint3D center, string addr, ofxOscMessage &m) { m.setAddress(addr); m.addFloatArg(center.X); m.addFloatArg(center.Y); m.addFloatArg(center.Z); sender.sendMessage(m); m.clear(); }
//-------------------------------------------------------------- float ofApp::getAverageFromChannels(ofxOscMessage& msg) { float avg = 0; int channels = msg.getNumArgs(); for(int i = 0; i < channels; i++) { avg += msg.getArgAsFloat(i); } avg /= channels; return avg; }
float ofApp::getHighestFromChannels(ofxOscMessage& msg) { float highest = 0; int channels = msg.getNumArgs(); for(int i = 0; i < channels; i++) { float channelValue = msg.getArgAsFloat(i); if(channelValue > highest) highest = channelValue; } return highest; }
static ofMultiTaction::Marker makeMarkerFromOSC(const ofxOscMessage &m) { ofMultiTaction::Marker marker; marker.id = m.getArgAsInt32(0); marker.code = m.getArgAsInt32(1); marker.x = m.getArgAsFloat(2); marker.y = m.getArgAsFloat(3); marker.rotation = m.getArgAsFloat(3); return marker; }
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 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; } }
ofVec3f getOscMessageValue(const ofxOscMessage& message) { auto size = message.getNumArgs(); if (size == 3) { return ofVec3f(message.getArgAsFloat(0), message.getArgAsFloat(1), message.getArgAsFloat(2)); } else { logInvalidSize(message); return ofVec3f(0); } }
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 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 ofxOscSender::appendParameter( ofxOscMessage & msg, const ofAbstractParameter & parameter, string address){ msg.setAddress(address+parameter.getEscapedName()); if(parameter.type()==typeid(ofParameter<int>).name()){ msg.addIntArg(parameter.cast<int>()); }else if(parameter.type()==typeid(ofParameter<float>).name()){ msg.addFloatArg(parameter.cast<float>()); }else if(parameter.type()==typeid(ofParameter<bool>).name()){ msg.addIntArg(parameter.cast<bool>()); }else{ msg.addStringArg(parameter.toString()); } }
void Ableton::getParameterUpdate(ofxOscMessage &m) { int track = m.getArgAsInt32(0); int device = m.getArgAsInt32(1); int parameter = m.getArgAsInt32(2); if (tracks.count(track) != 0 && tracks[track]->getDevices().count(device) != 0 && tracks[track]->getDevices()[device]->getParameters().count(parameter)) { tracks[track]->getDevices()[device]->getParameters()[parameter]->setValue(m.getArgAsFloat(3)); } }
void FlyingObjectPhysics::generateArgs(ofxOscMessage& message) { // 種類 message.addIntArg(kind); // 位置 message.addFloatArg(shape->getPosition().x); message.addFloatArg(shape->getPosition().y); // 回転 message.addFloatArg(shape->getRotation()); // スケール message.addFloatArg(1); // アルファ message.addFloatArg(getAlpha()); }
void ramNodeArray::updateWithOscMessage(const ofxOscMessage &m) { const int nNodes = m.getArgAsInt32(1); for (int i = 0; i < nNodes; i++) { const string name = m.getArgAsString(i * 8 + 0 + 2); const float vx = m.getArgAsFloat(i * 8 + 1 + 2); const float vy = m.getArgAsFloat(i * 8 + 2 + 2); const float vz = m.getArgAsFloat(i * 8 + 3 + 2); const float angle = m.getArgAsFloat(i * 8 + 4 + 2); const float ax = m.getArgAsFloat(i * 8 + 5 + 2); const float ay = m.getArgAsFloat(i * 8 + 6 + 2); const float az = m.getArgAsFloat(i * 8 + 7 + 2); const ofVec3f axis(ax, ay, az); const ofVec3f vec(vx, vy, vz); const ofQuaternion quat(angle, axis); ramNode &node = getNode(i); node.node_id = i; node.name = isActor() ? getJointName(i) : "Node " + ofToString(i); node.setGlobalPosition(vec); node.setGlobalOrientation(quat); node.accelerometer.update(vec, quat); } last_timestamp = current_timestamp; current_timestamp = m.getArgAsFloat(2 + nNodes * 8); last_update_client_time = ofGetElapsedTimef(); }
void ofxRemoteUIClient::fillPresetListFromMessage(ofxOscMessage m){ int n = m.getNumArgs(); //check if server has no presets at all if (m.getNumArgs() == 1){ if(m.getArgAsString(0) == OFXREMOTEUI_NO_PRESETS){ //if no prests, server sends only one with this value //we know there's no presets } } presetNames.clear(); for(int i = 0; i < n; i++){ presetNames.push_back( m.getArgAsString(i)); } }
void Ableton::getNumTracks(ofxOscMessage &m) { numTracks = m.getArgAsInt32(0); for (int t = 0; t < numTracks; t++) { requestDeviceList(t); } }
void ofApp::confirmMessage(ofxOscMessage m){ //figure out which pi string sIp = m.getRemoteIp(); string msgContent = getMsgContent(m); int iCurPi = -1; if (hasEnding(sIp, pi1_ip)){ iCurPi = 0; m_bOscConfirmations[0] = true; logMsg("got msg from 1: " + msgContent); } else if (hasEnding(sIp, pi2_ip)){ iCurPi = 1; m_bOscConfirmations[1] = true; logMsg("got msg from 2: " + msgContent); } else if (hasEnding(sIp, pi3_ip)){ iCurPi = 2; m_bOscConfirmations[2] = true; logMsg("got msg from 3: " + msgContent); } else if (hasEnding(sIp, pi4_ip)){ iCurPi = 3; m_bOscConfirmations[3] = true; logMsg("got msg from 4: " + msgContent); } else { logMsg("got msg from UNKNOWN " + sIp + ": " + msgContent); } //update corresponding status string sCurStatus = ""; int iCurArg = 1; string sStatus = m.getArgAsString(iCurArg++); string sFile = m.getArgAsString(iCurArg++); iCurArg += 2; bool bLoop = m.getArgAsInt(iCurArg++); if (hasEnding(sStatus, "stoped")){ sCurStatus += "Stopped"; } else { if (bLoop){ sCurStatus += "Loop\t"; } else { sCurStatus += "Play\t"; } sCurStatus += sFile; } m_sRpiStatuses[iCurPi] = sCurStatus; }
static CommandArgs messageToCommandArgs(const ofxOscMessage& message) { CommandArgs args; for (int i = 0; i < message.getNumArgs(); ++i) { auto arg = messageArgToCommandArg(message, i); args.add(arg); } return args; }
void Ableton::getNumScenes(ofxOscMessage &m) { numScenes = m.getArgAsInt32(0); // sceneSelector = control.addMenu("Select scene", this, &Ableton::eventSelectScene); for (int i=0; i<numScenes; i++) { //sceneSelector->addToggle("Scene "+ofToString(i)); } }
ofFloatColor getOscMessageValue(const ofxOscMessage& message) { auto size = message.getNumArgs(); if (size == 3) { return ofFloatColor(message.getArgAsFloat(0), message.getArgAsFloat(1), message.getArgAsFloat(2), 1); } else if (size == 4) { return ofFloatColor(message.getArgAsFloat(0), message.getArgAsFloat(1), message.getArgAsFloat(2), message.getArgAsFloat(3)); } else { logInvalidSize(message); return ofFloatColor(0, 0, 0, 1); } }
float ofApp::getFromForeheadChannels(ofxOscMessage& msg) { float avg = 0; avg += msg.getArgAsFloat(1); avg += msg.getArgAsFloat(2); avg /= 2; return avg; }