| @@ -511,22 +511,232 @@ public: | |||||
| void idle() noexcept override | void idle() noexcept override | ||||
| { | { | ||||
| CarlaPlugin* const plugin(pData->plugins[0].plugin); | |||||
| CARLA_SAFE_ASSERT_RETURN(plugin != nullptr,); | |||||
| if (fFirstIdle) | if (fFirstIdle) | ||||
| { | { | ||||
| fFirstIdle = false; | fFirstIdle = false; | ||||
| fLastPingCounter = 0; | fLastPingCounter = 0; | ||||
| char bufStr[STR_MAX+1]; | |||||
| uint32_t bufStrSize; | |||||
| const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex); | const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex); | ||||
| // TODO - send plugin data | |||||
| // kPluginBridgeNonRtServerPluginInfo1 | |||||
| { | |||||
| // uint/category, uint/hints, uint/optionsAvailable, uint/optionsEnabled, long/uniqueId | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerPluginInfo1); | |||||
| fShmNonRtServerControl.writeUInt(plugin->getCategory()); | |||||
| fShmNonRtServerControl.writeUInt(plugin->getHints()); | |||||
| fShmNonRtServerControl.writeUInt(plugin->getOptionsAvailable()); | |||||
| fShmNonRtServerControl.writeUInt(plugin->getOptionsEnabled()); | |||||
| fShmNonRtServerControl.writeLong(plugin->getUniqueId()); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| // kPluginBridgeNonRtServerPluginInfo2 | |||||
| { | |||||
| // uint/size, str[] (realName), uint/size, str[] (label), uint/size, str[] (maker), uint/size, str[] (copyright) | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerPluginInfo2); | |||||
| carla_zeroChar(bufStr, STR_MAX); | |||||
| plugin->getRealName(bufStr); | |||||
| bufStrSize = carla_fixValue(1U, 32U, static_cast<uint32_t>(std::strlen(bufStr))); | |||||
| fShmNonRtServerControl.writeUInt(bufStrSize); | |||||
| fShmNonRtServerControl.writeCustomData(bufStr, bufStrSize); | |||||
| carla_zeroChar(bufStr, STR_MAX); | |||||
| plugin->getLabel(bufStr); | |||||
| bufStrSize = carla_fixValue(1U, 32U, static_cast<uint32_t>(std::strlen(bufStr))); | |||||
| fShmNonRtServerControl.writeUInt(bufStrSize); | |||||
| fShmNonRtServerControl.writeCustomData(bufStr, bufStrSize); | |||||
| carla_zeroChar(bufStr, STR_MAX); | |||||
| plugin->getMaker(bufStr); | |||||
| bufStrSize = carla_fixValue(1U, 32U, static_cast<uint32_t>(std::strlen(bufStr))); | |||||
| fShmNonRtServerControl.writeUInt(bufStrSize); | |||||
| fShmNonRtServerControl.writeCustomData(bufStr, bufStrSize); | |||||
| carla_zeroChar(bufStr, STR_MAX); | |||||
| plugin->getCopyright(bufStr); | |||||
| bufStrSize = carla_fixValue(1U, 32U, static_cast<uint32_t>(std::strlen(bufStr))); | |||||
| fShmNonRtServerControl.writeUInt(bufStrSize); | |||||
| fShmNonRtServerControl.writeCustomData(bufStr, bufStrSize); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| // kPluginBridgeNonRtServerAudioCount | |||||
| { | |||||
| // uint/ins, uint/outs | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerAudioCount); | |||||
| fShmNonRtServerControl.writeUInt(plugin->getAudioInCount()); | |||||
| fShmNonRtServerControl.writeUInt(plugin->getAudioOutCount()); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| // kPluginBridgeNonRtServerMidiCount | |||||
| { | |||||
| // uint/ins, uint/outs | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerMidiCount); | |||||
| fShmNonRtServerControl.writeUInt(plugin->getMidiInCount()); | |||||
| fShmNonRtServerControl.writeUInt(plugin->getMidiOutCount()); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| // kPluginBridgeNonRtServerParameter* | |||||
| if (const uint32_t count = plugin->getParameterCount()) | |||||
| { | |||||
| uint32_t paramIns, paramOuts; | |||||
| plugin->getParameterCountInfo(paramIns, paramOuts); | |||||
| // uint/ins, uint/outs | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterCount); | |||||
| fShmNonRtServerControl.writeUInt(paramIns); | |||||
| fShmNonRtServerControl.writeUInt(paramOuts); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| for (uint32_t i=0, maxParams=pData->options.maxParameters; i<count && i<maxParams; ++i) | |||||
| { | |||||
| // kPluginBridgeNonRtServerParameterData1 | |||||
| { | |||||
| const ParameterData& paramData(plugin->getParameterData(i)); | |||||
| // uint/index, int/rindex, uint/type, uint/hints, short/cc | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterData1); | |||||
| fShmNonRtServerControl.writeUInt(i); | |||||
| fShmNonRtServerControl.writeInt(paramData.rindex); | |||||
| fShmNonRtServerControl.writeUInt(paramData.type); | |||||
| fShmNonRtServerControl.writeUInt(paramData.hints); | |||||
| fShmNonRtServerControl.writeShort(paramData.midiCC); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| // kPluginBridgeNonRtServerParameterData2 | |||||
| { | |||||
| // uint/index, uint/size, str[] (name), uint/size, str[] (unit) | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterData2); | |||||
| fShmNonRtServerControl.writeUInt(i); | |||||
| carla_zeroChar(bufStr, STR_MAX); | |||||
| plugin->getParameterName(i, bufStr); | |||||
| bufStrSize = carla_fixValue(1U, 32U, static_cast<uint32_t>(std::strlen(bufStr))); | |||||
| fShmNonRtServerControl.writeUInt(bufStrSize); | |||||
| fShmNonRtServerControl.writeCustomData(bufStr, bufStrSize); | |||||
| carla_zeroChar(bufStr, STR_MAX); | |||||
| plugin->getParameterUnit(i, bufStr); | |||||
| bufStrSize = carla_fixValue(1U, 32U, static_cast<uint32_t>(std::strlen(bufStr))); | |||||
| fShmNonRtServerControl.writeUInt(bufStrSize); | |||||
| fShmNonRtServerControl.writeCustomData(bufStr, bufStrSize); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| // kPluginBridgeNonRtServerParameterRanges | |||||
| { | |||||
| const ParameterRanges& paramRanges(plugin->getParameterRanges(i)); | |||||
| // uint/index, float/def, float/min, float/max, float/step, float/stepSmall, float/stepLarge | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterRanges); | |||||
| fShmNonRtServerControl.writeUInt(i); | |||||
| fShmNonRtServerControl.writeFloat(paramRanges.def); | |||||
| fShmNonRtServerControl.writeFloat(paramRanges.min); | |||||
| fShmNonRtServerControl.writeFloat(paramRanges.max); | |||||
| fShmNonRtServerControl.writeFloat(paramRanges.step); | |||||
| fShmNonRtServerControl.writeFloat(paramRanges.stepSmall); | |||||
| fShmNonRtServerControl.writeFloat(paramRanges.stepLarge); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| // kPluginBridgeNonRtServerParameterValue2 | |||||
| { | |||||
| // uint/index float/value (used for init/output parameters only, don't resend values) | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterValue2); | |||||
| fShmNonRtServerControl.writeUInt(i); | |||||
| fShmNonRtServerControl.writeFloat(plugin->getParameterValue(i)); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| } | |||||
| } | |||||
| // kPluginBridgeNonRtServerProgram* | |||||
| if (const uint32_t count = plugin->getProgramCount()) | |||||
| { | |||||
| // uint/count | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerProgramCount); | |||||
| fShmNonRtServerControl.writeUInt(count); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| for (uint32_t i=0; i < count; ++i) | |||||
| { | |||||
| // uint/index, uint/size, str[] (name) | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerProgramName); | |||||
| fShmNonRtServerControl.writeUInt(i); | |||||
| carla_zeroChar(bufStr, STR_MAX); | |||||
| plugin->getProgramName(i, bufStr); | |||||
| bufStrSize = carla_fixValue(1U, 32U, static_cast<uint32_t>(std::strlen(bufStr))); | |||||
| fShmNonRtServerControl.writeUInt(bufStrSize); | |||||
| fShmNonRtServerControl.writeCustomData(bufStr, bufStrSize); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| } | |||||
| // kPluginBridgeNonRtServerMidiProgram* | |||||
| if (const uint32_t count = plugin->getMidiProgramCount()) | |||||
| { | |||||
| // uint/count | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerMidiProgramCount); | |||||
| fShmNonRtServerControl.writeUInt(count); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| for (uint32_t i=0; i < count; ++i) | |||||
| { | |||||
| const MidiProgramData& mpData(plugin->getMidiProgramData(i)); | |||||
| CARLA_SAFE_ASSERT_CONTINUE(mpData.name != nullptr); | |||||
| // uint/index, uint/bank, uint/program, uint/size, str[] (name) | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerMidiProgramData); | |||||
| fShmNonRtServerControl.writeUInt(i); | |||||
| fShmNonRtServerControl.writeUInt(mpData.bank); | |||||
| fShmNonRtServerControl.writeUInt(mpData.program); | |||||
| bufStrSize = carla_fixValue(1U, 32U, static_cast<uint32_t>(std::strlen(mpData.name))); | |||||
| fShmNonRtServerControl.writeUInt(bufStrSize); | |||||
| fShmNonRtServerControl.writeCustomData(mpData.name, bufStrSize); | |||||
| fShmNonRtServerControl.commitWrite(); | |||||
| } | |||||
| } | |||||
| // ready! | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerReady); | fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerReady); | ||||
| fShmNonRtServerControl.commitWrite(); | fShmNonRtServerControl.commitWrite(); | ||||
| carla_stdout("Carla Client Ready!"); | carla_stdout("Carla Client Ready!"); | ||||
| } | } | ||||
| // TODO - send output parameters to server | |||||
| if (const uint32_t count = plugin->getParameterCount()) | |||||
| { | |||||
| const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex); | |||||
| for (uint32_t i=0; i < count; ++i) | |||||
| { | |||||
| if (! plugin->isParameterOutput(i)) | |||||
| continue; | |||||
| fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterValue2); | |||||
| fShmNonRtServerControl.writeUInt(i); | |||||
| fShmNonRtServerControl.writeFloat(plugin->getParameterValue(i)); | |||||
| if (! fShmNonRtServerControl.commitWrite()) | |||||
| break; | |||||
| } | |||||
| } | |||||
| CarlaEngine::idle(); | CarlaEngine::idle(); | ||||
| @@ -749,7 +959,7 @@ public: | |||||
| const CarlaString valueBase64(CarlaString::asBase64(valueMemStream.getData(), valueMemStream.getDataSize())); | const CarlaString valueBase64(CarlaString::asBase64(valueMemStream.getData(), valueMemStream.getDataSize())); | ||||
| const uint32_t valueBase64Len(static_cast<uint32_t>(valueBase64.length())); | const uint32_t valueBase64Len(static_cast<uint32_t>(valueBase64.length())); | ||||
| CARLA_SAFE_ASSERT_CONTINUE(valueBase64.length() > 0); | |||||
| CARLA_SAFE_ASSERT_CONTINUE(valueBase64Len > 0); | |||||
| { | { | ||||
| const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex); | const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex); | ||||
| @@ -89,16 +89,11 @@ void CarlaEngineThread::run() noexcept | |||||
| value = plugin->getParameterValue(j); | value = plugin->getParameterValue(j); | ||||
| #ifndef BUILD_BRIDGE | |||||
| // Update OSC engine client | // Update OSC engine client | ||||
| if (oscRegisted) | if (oscRegisted) | ||||
| { | |||||
| #ifdef BUILD_BRIDGE | |||||
| //kEngine->oscSend_bridge_parameter_value(j, value); | |||||
| #else | |||||
| kEngine->oscSend_control_set_parameter_value(i, static_cast<int32_t>(j), value); | kEngine->oscSend_control_set_parameter_value(i, static_cast<int32_t>(j), value); | ||||
| #endif | #endif | ||||
| } | |||||
| // Update UI | // Update UI | ||||
| if (needsUiUpdates) | if (needsUiUpdates) | ||||
| plugin->uiParameterChange(j, value); | plugin->uiParameterChange(j, value); | ||||
| @@ -1438,11 +1438,12 @@ void CarlaPlugin::registerToOscClient() noexcept | |||||
| // Base data | // Base data | ||||
| { | { | ||||
| // TODO - clear buf | |||||
| char bufName[STR_MAX+1] = { '\0' }; | |||||
| char bufLabel[STR_MAX+1] = { '\0' }; | |||||
| char bufMaker[STR_MAX+1] = { '\0' }; | |||||
| char bufCopyright[STR_MAX+1] = { '\0' }; | |||||
| char bufName[STR_MAX+1], bufLabel[STR_MAX+1], bufMaker[STR_MAX+1], bufCopyright[STR_MAX+1]; | |||||
| carla_zeroChar(bufName, STR_MAX); | |||||
| carla_zeroChar(bufLabel, STR_MAX); | |||||
| carla_zeroChar(bufMaker, STR_MAX); | |||||
| carla_zeroChar(bufCopyright, STR_MAX); | |||||
| getRealName(bufName); | getRealName(bufName); | ||||
| getLabel(bufLabel); | getLabel(bufLabel); | ||||
| getMaker(bufMaker); | getMaker(bufMaker); | ||||
| @@ -1463,11 +1464,11 @@ void CarlaPlugin::registerToOscClient() noexcept | |||||
| } | } | ||||
| // Plugin Parameters | // Plugin Parameters | ||||
| if (pData->param.count > 0) | |||||
| if (const uint32_t count = pData->param.count) | |||||
| { | { | ||||
| char bufName[STR_MAX+1], bufUnit[STR_MAX+1]; | char bufName[STR_MAX+1], bufUnit[STR_MAX+1]; | ||||
| for (uint32_t i=0, count=pData->param.count, maxParams=pData->engine->getOptions().maxParameters; i<count && i<maxParams; ++i) | |||||
| for (uint32_t i=0, maxParams=pData->engine->getOptions().maxParameters; i<count && i<maxParams; ++i) | |||||
| { | { | ||||
| carla_zeroChar(bufName, STR_MAX); | carla_zeroChar(bufName, STR_MAX); | ||||
| carla_zeroChar(bufUnit, STR_MAX); | carla_zeroChar(bufUnit, STR_MAX); | ||||
| @@ -1488,22 +1489,22 @@ void CarlaPlugin::registerToOscClient() noexcept | |||||
| } | } | ||||
| // Programs | // Programs | ||||
| if (pData->prog.count > 0) | |||||
| if (const uint32_t count = pData->prog.count) | |||||
| { | { | ||||
| pData->engine->oscSend_control_set_program_count(pData->id, pData->prog.count); | |||||
| pData->engine->oscSend_control_set_program_count(pData->id, count); | |||||
| for (uint32_t i=0; i < pData->prog.count; ++i) | |||||
| for (uint32_t i=0; i < count; ++i) | |||||
| pData->engine->oscSend_control_set_program_name(pData->id, i, pData->prog.names[i]); | pData->engine->oscSend_control_set_program_name(pData->id, i, pData->prog.names[i]); | ||||
| pData->engine->oscSend_control_set_current_program(pData->id, pData->prog.current); | pData->engine->oscSend_control_set_current_program(pData->id, pData->prog.current); | ||||
| } | } | ||||
| // MIDI Programs | // MIDI Programs | ||||
| if (pData->midiprog.count > 0) | |||||
| if (const uint32_t count = pData->midiprog.count) | |||||
| { | { | ||||
| pData->engine->oscSend_control_set_midi_program_count(pData->id, pData->midiprog.count); | |||||
| pData->engine->oscSend_control_set_midi_program_count(pData->id, count); | |||||
| for (uint32_t i=0; i < pData->midiprog.count; ++i) | |||||
| for (uint32_t i=0; i < count; ++i) | |||||
| { | { | ||||
| const MidiProgramData& mpData(pData->midiprog.data[i]); | const MidiProgramData& mpData(pData->midiprog.data[i]); | ||||
| @@ -2020,12 +2020,15 @@ public: | |||||
| } | } | ||||
| } break; | } break; | ||||
| case kPluginBridgeNonRtServerParameterRanges1: { | |||||
| // uint/index, float/def, float/min, float/max | |||||
| case kPluginBridgeNonRtServerParameterRanges: { | |||||
| // uint/index, float/def, float/min, float/max, float/step, float/stepSmall, float/stepLarge | |||||
| const uint32_t index = fShmNonRtServerControl.readUInt(); | const uint32_t index = fShmNonRtServerControl.readUInt(); | ||||
| const float def = fShmNonRtServerControl.readFloat(); | const float def = fShmNonRtServerControl.readFloat(); | ||||
| const float min = fShmNonRtServerControl.readFloat(); | const float min = fShmNonRtServerControl.readFloat(); | ||||
| const float max = fShmNonRtServerControl.readFloat(); | const float max = fShmNonRtServerControl.readFloat(); | ||||
| const float step = fShmNonRtServerControl.readFloat(); | |||||
| const float stepSmall = fShmNonRtServerControl.readFloat(); | |||||
| const float stepLarge = fShmNonRtServerControl.readFloat(); | |||||
| CARLA_SAFE_ASSERT_BREAK(min < max); | CARLA_SAFE_ASSERT_BREAK(min < max); | ||||
| CARLA_SAFE_ASSERT_BREAK(def >= min); | CARLA_SAFE_ASSERT_BREAK(def >= min); | ||||
| @@ -2037,27 +2040,29 @@ public: | |||||
| pData->param.ranges[index].def = def; | pData->param.ranges[index].def = def; | ||||
| pData->param.ranges[index].min = min; | pData->param.ranges[index].min = min; | ||||
| pData->param.ranges[index].max = max; | pData->param.ranges[index].max = max; | ||||
| pData->param.ranges[index].step = step; | |||||
| pData->param.ranges[index].stepSmall = stepSmall; | |||||
| pData->param.ranges[index].stepLarge = stepLarge; | |||||
| } | } | ||||
| } break; | } break; | ||||
| case kPluginBridgeNonRtServerParameterRanges2: { | |||||
| // uint/index float/step, float/stepSmall, float/stepLarge | |||||
| const uint32_t index = fShmNonRtServerControl.readUInt(); | |||||
| const float step = fShmNonRtServerControl.readFloat(); | |||||
| const float stepSmall = fShmNonRtServerControl.readFloat(); | |||||
| const float stepLarge = fShmNonRtServerControl.readFloat(); | |||||
| case kPluginBridgeNonRtServerParameterValue: { | |||||
| // uint/index float/value | |||||
| const uint32_t index = fShmNonRtServerControl.readUInt(); | |||||
| const float value = fShmNonRtServerControl.readFloat(); | |||||
| CARLA_SAFE_ASSERT_INT2(index < pData->param.count, index, pData->param.count); | CARLA_SAFE_ASSERT_INT2(index < pData->param.count, index, pData->param.count); | ||||
| if (index < pData->param.count) | if (index < pData->param.count) | ||||
| { | { | ||||
| pData->param.ranges[index].step = step; | |||||
| pData->param.ranges[index].stepSmall = stepSmall; | |||||
| pData->param.ranges[index].stepLarge = stepLarge; | |||||
| const float fixedValue(pData->param.getFixedValue(index, value)); | |||||
| fParams[index].value = fixedValue; | |||||
| CarlaPlugin::setParameterValue(index, fixedValue, false, true, true); | |||||
| } | } | ||||
| } break; | } break; | ||||
| case kPluginBridgeNonRtServerParameterValue: { | |||||
| case kPluginBridgeNonRtServerParameterValue2: { | |||||
| // uint/index float/value | // uint/index float/value | ||||
| const uint32_t index = fShmNonRtServerControl.readUInt(); | const uint32_t index = fShmNonRtServerControl.readUInt(); | ||||
| const float value = fShmNonRtServerControl.readFloat(); | const float value = fShmNonRtServerControl.readFloat(); | ||||
| @@ -2068,8 +2073,6 @@ public: | |||||
| { | { | ||||
| const float fixedValue(pData->param.getFixedValue(index, value)); | const float fixedValue(pData->param.getFixedValue(index, value)); | ||||
| fParams[index].value = fixedValue; | fParams[index].value = fixedValue; | ||||
| CarlaPlugin::setParameterValue(index, fixedValue, false, true, true); | |||||
| } | } | ||||
| } break; | } break; | ||||
| @@ -75,26 +75,26 @@ enum PluginBridgeNonRtClientOpcode { | |||||
| enum PluginBridgeNonRtServerOpcode { | enum PluginBridgeNonRtServerOpcode { | ||||
| kPluginBridgeNonRtServerNull = 0, | kPluginBridgeNonRtServerNull = 0, | ||||
| kPluginBridgeNonRtServerPong, | kPluginBridgeNonRtServerPong, | ||||
| kPluginBridgeNonRtServerPluginInfo1, // uint/category, uint/hints, uint/optionsAvailable, uint/optionsEnabled, long/uniqueId | |||||
| kPluginBridgeNonRtServerPluginInfo2, // uint/size, str[] (realName), uint/size, str[] (label), uint/size, str[] (maker), uint/size, str[] (copyright) | |||||
| kPluginBridgeNonRtServerAudioCount, // uint/ins, uint/outs | |||||
| kPluginBridgeNonRtServerMidiCount, // uint/ins, uint/outs | |||||
| kPluginBridgeNonRtServerParameterCount, // uint/ins, uint/outs | |||||
| kPluginBridgeNonRtServerProgramCount, // uint/count | |||||
| kPluginBridgeNonRtServerMidiProgramCount, // uint/count | |||||
| kPluginBridgeNonRtServerParameterData1, // uint/index, int/rindex, uint/type, uint/hints, short/cc | |||||
| kPluginBridgeNonRtServerParameterData2, // uint/index, uint/size, str[] (name), uint/size, str[] (unit) | |||||
| kPluginBridgeNonRtServerParameterRanges1, // uint/index, float/def, float/min, float/max | |||||
| kPluginBridgeNonRtServerParameterRanges2, // uint/index float/step, float/stepSmall, float/stepLarge | |||||
| kPluginBridgeNonRtServerParameterValue, // uint/index float/value | |||||
| kPluginBridgeNonRtServerDefaultValue, // uint/index float/value | |||||
| kPluginBridgeNonRtServerCurrentProgram, // int/index | |||||
| kPluginBridgeNonRtServerCurrentMidiProgram, // int/index | |||||
| kPluginBridgeNonRtServerProgramName, // uint/index, uint/size, str[] (name) | |||||
| kPluginBridgeNonRtServerMidiProgramData, // uint/index, uint/bank, uint/program, uint/size, str[] (name) | |||||
| kPluginBridgeNonRtServerSetCustomData, // uint/size, str[], uint/size, str[], uint/size, str[] (base64, compressed) | |||||
| kPluginBridgeNonRtServerSetChunkDataFile, // uint/size, str[] (filename, base64 content) | |||||
| kPluginBridgeNonRtServerSetLatency, // uint | |||||
| kPluginBridgeNonRtServerPluginInfo1, // uint/category, uint/hints, uint/optionsAvailable, uint/optionsEnabled, long/uniqueId | |||||
| kPluginBridgeNonRtServerPluginInfo2, // uint/size, str[] (realName), uint/size, str[] (label), uint/size, str[] (maker), uint/size, str[] (copyright) | |||||
| kPluginBridgeNonRtServerAudioCount, // uint/ins, uint/outs | |||||
| kPluginBridgeNonRtServerMidiCount, // uint/ins, uint/outs | |||||
| kPluginBridgeNonRtServerParameterCount, // uint/ins, uint/outs | |||||
| kPluginBridgeNonRtServerProgramCount, // uint/count | |||||
| kPluginBridgeNonRtServerMidiProgramCount, // uint/count | |||||
| kPluginBridgeNonRtServerParameterData1, // uint/index, int/rindex, uint/type, uint/hints, short/cc | |||||
| kPluginBridgeNonRtServerParameterData2, // uint/index, uint/size, str[] (name), uint/size, str[] (unit) | |||||
| kPluginBridgeNonRtServerParameterRanges, // uint/index, float/def, float/min, float/max, float/step, float/stepSmall, float/stepLarge | |||||
| kPluginBridgeNonRtServerParameterValue, // uint/index float/value | |||||
| kPluginBridgeNonRtServerParameterValue2, // uint/index float/value (used for init/output parameters only, don't resend values) | |||||
| kPluginBridgeNonRtServerDefaultValue, // uint/index float/value | |||||
| kPluginBridgeNonRtServerCurrentProgram, // int/index | |||||
| kPluginBridgeNonRtServerCurrentMidiProgram, // int/index | |||||
| kPluginBridgeNonRtServerProgramName, // uint/index, uint/size, str[] (name) | |||||
| kPluginBridgeNonRtServerMidiProgramData, // uint/index, uint/bank, uint/program, uint/size, str[] (name) | |||||
| kPluginBridgeNonRtServerSetCustomData, // uint/size, str[], uint/size, str[], uint/size, str[] (base64, compressed) | |||||
| kPluginBridgeNonRtServerSetChunkDataFile, // uint/size, str[] (filename, base64 content) | |||||
| kPluginBridgeNonRtServerSetLatency, // uint | |||||
| kPluginBridgeNonRtServerReady, | kPluginBridgeNonRtServerReady, | ||||
| kPluginBridgeNonRtServerSaved, | kPluginBridgeNonRtServerSaved, | ||||
| kPluginBridgeNonRtServerUiClosed, | kPluginBridgeNonRtServerUiClosed, | ||||
| @@ -271,12 +271,12 @@ const char* PluginBridgeNonRtServerOpcode2str(const PluginBridgeNonRtServerOpcod | |||||
| return "kPluginBridgeNonRtServerParameterData1"; | return "kPluginBridgeNonRtServerParameterData1"; | ||||
| case kPluginBridgeNonRtServerParameterData2: | case kPluginBridgeNonRtServerParameterData2: | ||||
| return "kPluginBridgeNonRtServerParameterData2"; | return "kPluginBridgeNonRtServerParameterData2"; | ||||
| case kPluginBridgeNonRtServerParameterRanges1: | |||||
| return "kPluginBridgeNonRtServerParameterRanges1"; | |||||
| case kPluginBridgeNonRtServerParameterRanges2: | |||||
| return "kPluginBridgeNonRtServerParameterRanges2"; | |||||
| case kPluginBridgeNonRtServerParameterRanges: | |||||
| return "kPluginBridgeNonRtServerParameterRanges"; | |||||
| case kPluginBridgeNonRtServerParameterValue: | case kPluginBridgeNonRtServerParameterValue: | ||||
| return "kPluginBridgeNonRtServerParameterValue"; | return "kPluginBridgeNonRtServerParameterValue"; | ||||
| case kPluginBridgeNonRtServerParameterValue2: | |||||
| return "kPluginBridgeNonRtServerParameterValue2"; | |||||
| case kPluginBridgeNonRtServerDefaultValue: | case kPluginBridgeNonRtServerDefaultValue: | ||||
| return "kPluginBridgeNonRtServerDefaultValue"; | return "kPluginBridgeNonRtServerDefaultValue"; | ||||
| case kPluginBridgeNonRtServerCurrentProgram: | case kPluginBridgeNonRtServerCurrentProgram: | ||||