static void updateDevice(struct nodeInstanceData *context, VuoMidiDevice newDevice) { VuoMidiDevice_release(context->device); context->device = newDevice; VuoMidiDevice_retain(context->device); VuoRelease(context->midiManager); context->midiManager = VuoMidiIn_make(newDevice); VuoRetain(context->midiManager); }
static void resetController(VuoMidiOut outputManager, char cc, VuoRealRegulation controller) { VuoMidiOut_sendController(outputManager, VuoMidiController_make(1, cc, (controller.defaultValue-controller.minimumValue)/(controller.maximumValue-controller.minimumValue) * 127.)); } struct nodeInstanceData *nodeInstanceInit( VuoInputData(VuoRealRegulation) footSwitch, VuoInputData(VuoRealRegulation) footController ) { struct nodeInstanceData *context = (struct nodeInstanceData *)calloc(1,sizeof(struct nodeInstanceData)); VuoRegister(context, free); context->inputDevice = VuoMidiInputDevice_make(-1, VuoText_make("BCF2000")); VuoMidiInputDevice_retain(context->inputDevice); context->inputManager = VuoMidiIn_make(context->inputDevice); VuoRetain(context->inputManager); context->outputDevice = VuoMidiOutputDevice_make(-1, VuoText_make("BCF2000")); VuoMidiOutputDevice_retain(context->outputDevice); context->outputManager = VuoMidiOut_make(context->outputDevice); VuoRetain(context->outputManager); VuoRealRegulation controllers[2] = {footSwitch, footController}; for (int i = 0; i < 2; ++i) { context->controllerSmooth[i] = VuoSmoothInertia_make(controllers[i].defaultValue); VuoRetain(context->controllerSmooth[i]); // Output the initial position during the first time event. context->controllerSmooth[i]->updateNeededAfterSetPosition = true;