FREObject sendMIDIMessage(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) { int pointer = 0; int status = 0; int data1 = 0; int data2 = 0; FREGetObjectAsInt32(argv[0],&pointer); FREGetObjectAsInt32(argv[1],&status); FREGetObjectAsInt32(argv[2],&data1); FREGetObjectAsInt32(argv[3],&data2); RtMidiOut* out = (RtMidiOut *)pointer; //printf("Send Message : %i %i %i %i\n",out,status,data1,data2); outMessage[0] = (unsigned char)status; outMessage[1] = (unsigned char)data1; outMessage[2] = (unsigned char)data2; bool sendResult = false; try { if(out->isPortOpen()) out->sendMessage(&outMessage); }catch(std::exception e) { printf("Error sending message : %s\n",e.what()); } FREObject result; FRENewObjectFromBool(sendResult,&result); return result; }
FREObject closeOutputDevice(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) { int pointer = 0; FREGetObjectAsInt32(argv[0],&pointer); try { RtMidiOut *out = (RtMidiOut *)pointer; if(out->isPortOpen()) out->closePort(); removeDeviceOut(out); delete out; }catch(std::exception e) { printf("Error closing output device.\n"); } FREObject result; FRENewObjectFromBool(true,&result); return result; }