void AntiOPe20::onCallBack(UsineMessage *Message) { if ((Message->wParam == 1) && (Message->lParam == MSG_CHANGE) && (sdkGetEvtData(m_receivedSendOrder) == 1)) // && (Message->result == 1)) //received 1 on "enable" input { m_textNew = sdkGetEvtPChar(m_textInput); // std::string str(m_textNew); int firstChar(0); for (unsigned i = 0; i < str.length(); ++i) { char m_simplechar = str.at(i); if (m_simplechar == ',') { std::string strToSend = str.substr(firstChar, i - (1 + firstChar)); // a string between 2 commas firstChar = i+1; // the index of the string to start the next subtring sdkSetEvtPChar(m_textOutput, (AnsiCharPtr) (strToSend.c_str())); sdkSetEvtData(m_SendOrderToOSCModule, 1); //wait one cycle here sdkTraceChar("sending to MINITEL"); _sleep(160); sdkSetEvtData(m_SendOrderToOSCModule, 0); } else{} } } else{} }
void TemplateModule::onProcess () { if(sdkGetEvtData(params[eRate]) == eControl){ float data; if(sdkGetEvtData(params[eMax]) > sdkGetEvtData(params[eMin])){ data = distribution.value(sdkGetEvtData(params[eMin]), sdkGetEvtData(params[eMax]), 128); if(data == 0.0f){ data = sdkGetEvtData(params[eMin]); } }else{ data = 0.f; } sdkSetEvtSize(params[eOut], 1); sdkSetEvtData(params[eOut], data); }else if (sdkGetEvtData(params[eRate]) == eAudio){ int sampleFrames = sdkGetBlocSize(); sdkSetEvtSize(params[eOut], sampleFrames); for (int i = 0; i < sampleFrames; i++){ float data; if(sdkGetEvtData(params[eMax]) > sdkGetEvtData(params[eMin])){ data = distribution.value(sdkGetEvtData(params[eMin]), sdkGetEvtData(params[eMax]), 128); if(data == 0.0f){ data = sdkGetEvtData(params[eMin]); } }else{ data = 0.f; } sdkSetEvtArrayData(params[eOut], i, data); } } }
void SimplePendulum::onCallBack(UsineMessage *Message) { //algo ici if (Message->message == NOTIFY_MSG_USINE_CALLBACK && Message->lParam == MSG_CHANGE) { switch (Message->wParam) { case 3: //reset position gravityAngle = sdkGetEvtData(m_resetValue) * 2 * PI; prev_gravityCorrection = gravityCorrection; gravityCorrection = gravityAngle; token1 = 2; break; case 4: //received clock trigger //evaluate the state functions float gravity = sdkGetEvtData(m_gravity); float friction = sdkGetEvtData(m_friction) * (1+gravity); dx[0] = (-gravity / (sdkGetEvtData(m_L1) * 1000)) * sin(dx[2]); //acceleration dx[1] += dx[0]; //vitesse dx[1] *= (1 - friction); if (token1 == 2) { token1 = 0; dx[2] = dx[2] - gravityCorrection + prev_gravityCorrection; //angle } else { dx[2] += dx[1]; //angle } float newAngle1 = dx[2] + gravityCorrection; sdkSetEvtData(m_M1posx, centerx + sdkGetEvtData(m_L1)*sin(newAngle1)); sdkSetEvtData(m_M1posy, centery + sdkGetEvtData(m_L1)*cos(newAngle1)); sdkSetEvtData(m_OffSetM1posx, centerx + 0.5f*sin(newAngle1)); sdkSetEvtData(m_OffSetM1posy, centery + 0.5f*cos(newAngle1)); //} break; } } }
void Incrementor::onCallBack (UsineMessage *Message) { if ((Message->wParam == 0) && (Message->lParam == MSG_CHANGE)) { sdkAddEvt3 (internalOutput, positiveInput, internalOutput); if (sdkGetEvtData(internalOutput) > sdkGetEvtData(resolutionInput)) { sdkSetEvtData(internalOutput, 0); } else if (sdkGetEvtData(internalOutput) < 0) { sdkSetEvtData(internalOutput, sdkGetEvtData(resolutionInput)); } sdkDivEvt3 (internalOutput, resolutionInput, output); } if ((Message->wParam == 1) && (Message->lParam == MSG_CHANGE)) { sdkSubEvt3 (internalOutput, minusInput, internalOutput); if (sdkGetEvtData(internalOutput) > sdkGetEvtData(resolutionInput)) { sdkSetEvtData(internalOutput, sdkGetEvtData(resolutionInput)); } else if (sdkGetEvtData(internalOutput) < 0) { sdkSetEvtData(internalOutput, 0); } sdkDivEvt3 (internalOutput, resolutionInput, output); } if (((Message->wParam == 2) || (Message->wParam == 3)) && (Message->lParam == MSG_CHANGE)) { if (sdkGetEvtData(resetValueInput) > sdkGetEvtData(resolutionInput)) { sdkSetEvtData(resetValueInput, sdkGetEvtData(resolutionInput)); } } if ((Message->wParam == 4) && (Message->lParam == MSG_CHANGE)) { if (sdkGetEvtData(resetValueInput) > sdkGetEvtData(resolutionInput)) { sdkSetEvtData(resetValueInput, sdkGetEvtData(resolutionInput)); } sdkSetEvtData(internalOutput, sdkGetEvtData(resetValueInput)); sdkDivEvt3 (internalOutput, resolutionInput, output); } }
void TemplateModule::onCallBack (UsineMessage *Message) { switch (Message->wParam) { case eRate: rate = (int)sdkGetEvtData(params[eRate]); break; case eTrigger: if(Message->lParam == MSG_CHANGE && sdkGetEvtData(params[eRate]) == eButton){ float data; if(sdkGetEvtData(params[eMax]) > sdkGetEvtData(params[eMin])){ data = distribution.value(sdkGetEvtData(params[eMin]), sdkGetEvtData(params[eMax]), 128); if(data == 0.0f){ data = sdkGetEvtData(params[eMin]); } }else{ data = 0.f; } sdkSetEvtSize(params[eOut], 1); sdkSetEvtData(params[eOut], data); } break; case eOut: //params[eOut] = pEvent; break; case eParamA: distribution.doBilateral(sdkGetEvtData(params[eParamA])); distribution.doExponential(sdkGetEvtData(params[eParamA]) * 5.f); distribution.doCauchy(sdkGetEvtData(params[eParamA]), sdkGetEvtData(params[eParamB])); distribution.doGaussian(sdkGetEvtData(params[eParamA]), sdkGetEvtData(params[eParamB])); distribution.doWeibull((sdkGetEvtData(params[eParamA]) * 0.99f) + 0.01, sdkGetEvtData(params[eParamB])); switch((int)sdkGetEvtData(params[eType])){ case 0: distribution.setType(UNIFORM);break; case 1: distribution.setType(LINEAR);break; case 2: distribution.setType(TRIANGULAR);break; case 3: distribution.setType(EXPONENTIAL);break; case 4: distribution.setType(BILATERAL);break; case 5: distribution.setType(GAUSSIAN);break; case 6: distribution.setType(CAUCHY);break; case 7: distribution.setType(WEIBULL);break; default: distribution.setType(UNIFORM);break; } break; case eParamB: distribution.doCauchy(sdkGetEvtData(params[eParamA]), sdkGetEvtData(params[eParamB])); distribution.doGaussian(sdkGetEvtData(params[eParamA]), sdkGetEvtData(params[eParamB])); distribution.doWeibull((sdkGetEvtData(params[eParamA]) * 0.99f) + 0.01, sdkGetEvtData(params[eParamB])); switch((int)sdkGetEvtData(params[eType])){ case 0: distribution.setType(UNIFORM);break; case 1: distribution.setType(LINEAR);break; case 2: distribution.setType(TRIANGULAR);break; case 3: distribution.setType(EXPONENTIAL);break; case 4: distribution.setType(BILATERAL);break; case 5: distribution.setType(GAUSSIAN);break; case 6: distribution.setType(CAUCHY);break; case 7: distribution.setType(WEIBULL);break; default: distribution.setType(UNIFORM);break; } break; case eType: switch((int)sdkGetEvtData(params[eType])){ case 0: distribution.setType(UNIFORM);break; case 1: distribution.setType(LINEAR);break; case 2: distribution.setType(TRIANGULAR);break; case 3: distribution.setType(EXPONENTIAL);break; case 4: distribution.setType(BILATERAL);break; case 5: distribution.setType(GAUSSIAN);break; case 6: distribution.setType(CAUCHY);break; case 7: distribution.setType(WEIBULL);break; default: distribution.setType(UNIFORM);break; } break; case eMin: if(sdkGetEvtData(params[eMax]) > sdkGetEvtData(params[eMin])){ float temp = sdkGetEvtData(params[eMin]) + ((sdkGetEvtData(params[eMax]) - sdkGetEvtData(params[eMin])) * 0.5f); distribution.doTriangular(sdkGetEvtData(params[eMin]), temp, sdkGetEvtData(params[eMax])); distribution.doUniform(sdkGetEvtData(params[eMin]), sdkGetEvtData(params[eMax])); } switch((int)sdkGetEvtData(params[eType])){ case 0: distribution.setType(UNIFORM);break; case 1: distribution.setType(LINEAR);break; case 2: distribution.setType(TRIANGULAR);break; case 3: distribution.setType(EXPONENTIAL);break; case 4: distribution.setType(BILATERAL);break; case 5: distribution.setType(GAUSSIAN);break; case 6: distribution.setType(CAUCHY);break; case 7: distribution.setType(WEIBULL);break; default: distribution.setType(UNIFORM);break; } break; case eMax: if(sdkGetEvtData(params[eMax]) > sdkGetEvtData(params[eMin])){ float temp = sdkGetEvtData(params[eMin]) + ((sdkGetEvtData(params[eMax]) - sdkGetEvtData(params[eMin])) * 0.5f); distribution.doTriangular(sdkGetEvtData(params[eMin]), temp, sdkGetEvtData(params[eMax])); distribution.doUniform(sdkGetEvtData(params[eMin]), sdkGetEvtData(params[eMax])); } switch((int)sdkGetEvtData(params[eType])){ case 0: distribution.setType(UNIFORM);break; case 1: distribution.setType(LINEAR);break; case 2: distribution.setType(TRIANGULAR);break; case 3: distribution.setType(EXPONENTIAL);break; case 4: distribution.setType(BILATERAL);break; case 5: distribution.setType(GAUSSIAN);break; case 6: distribution.setType(CAUCHY);break; case 7: distribution.setType(WEIBULL);break; default: distribution.setType(UNIFORM);break; } break; // default case default: break; } }