| @@ -210,11 +210,6 @@ static constexpr const uint PLUGIN_HAS_CUSTOM_UI_USING_FILE_OPEN = 0x2000; | |||||
| */ | */ | ||||
| static constexpr const uint PLUGIN_NEEDS_MAIN_THREAD_IDLE = 0x4000; | static constexpr const uint PLUGIN_NEEDS_MAIN_THREAD_IDLE = 0x4000; | ||||
| /*! | |||||
| * Plugin can use internal Front-Rear balance for Quadro (or > 2 channels in General). | |||||
| */ | |||||
| static constexpr const uint PLUGIN_CAN_FORTH = 0x8000; | |||||
| /** @} */ | /** @} */ | ||||
| /* ------------------------------------------------------------------------------------------------------------ | /* ------------------------------------------------------------------------------------------------------------ | ||||
| @@ -838,19 +833,12 @@ typedef enum { | |||||
| * Range -1...15 (-1 = off). | * Range -1...15 (-1 = off). | ||||
| */ | */ | ||||
| PARAMETER_CTRL_CHANNEL = -8, | PARAMETER_CTRL_CHANNEL = -8, | ||||
| /*! | |||||
| * Experimental Front-Rear parameter for Quadro (or > 2 channels in General). | |||||
| * Range -1.0...1.0; default is 0.0. | |||||
| */ | |||||
| PARAMETER_FORTH = -9, | |||||
| #endif | #endif | ||||
| /*! | /*! | ||||
| * Max value, defined only for convenience. | * Max value, defined only for convenience. | ||||
| */ | */ | ||||
| PARAMETER_MAX = -10 | |||||
| PARAMETER_MAX = -9 | |||||
| } InternalParameterIndex; | } InternalParameterIndex; | ||||
| @@ -966,13 +966,6 @@ CARLA_API_EXPORT void carla_set_balance_right(CarlaHostHandle handle, uint plugi | |||||
| */ | */ | ||||
| CARLA_API_EXPORT void carla_set_panning(CarlaHostHandle handle, uint pluginId, float value); | CARLA_API_EXPORT void carla_set_panning(CarlaHostHandle handle, uint pluginId, float value); | ||||
| /*! | |||||
| * Change a plugin's internal experimental front-rear (forth) value. | |||||
| * @param pluginId Plugin | |||||
| * @param value New value | |||||
| */ | |||||
| CARLA_API_EXPORT void carla_set_forth(CarlaHostHandle handle, uint pluginId, float value); | |||||
| /*! | /*! | ||||
| * Change a plugin's internal control channel. | * Change a plugin's internal control channel. | ||||
| * @param pluginId Plugin | * @param pluginId Plugin | ||||
| @@ -542,15 +542,6 @@ public: | |||||
| */ | */ | ||||
| void setPanning(float value, bool sendOsc, bool sendCallback) noexcept; | void setPanning(float value, bool sendOsc, bool sendCallback) noexcept; | ||||
| /*! | |||||
| * Set the plugin's output forth (front-rear) value to @a value. | |||||
| * @a value must be between -1.0 and 1.0. | |||||
| * | |||||
| * @param sendOsc Send message change over OSC | |||||
| * @param sendCallback Send message change to registered callback | |||||
| */ | |||||
| void setForth(float value, bool sendOsc, bool sendCallback) noexcept; | |||||
| /*! | /*! | ||||
| * Overloaded functions, to be called from within RT context only. | * Overloaded functions, to be called from within RT context only. | ||||
| */ | */ | ||||
| @@ -559,7 +550,6 @@ public: | |||||
| void setBalanceLeftRT(float value, bool sendCallbackLater) noexcept; | void setBalanceLeftRT(float value, bool sendCallbackLater) noexcept; | ||||
| void setBalanceRightRT(float value, bool sendCallbackLater) noexcept; | void setBalanceRightRT(float value, bool sendCallbackLater) noexcept; | ||||
| void setPanningRT(float value, bool sendCallbackLater) noexcept; | void setPanningRT(float value, bool sendCallbackLater) noexcept; | ||||
| void setForthRT(float value, bool sendCallbackLater) noexcept; | |||||
| #endif // ! BUILD_BRIDGE_ALTERNATIVE_ARCH | #endif // ! BUILD_BRIDGE_ALTERNATIVE_ARCH | ||||
| /*! | /*! | ||||
| @@ -2091,14 +2091,6 @@ void carla_set_panning(CarlaHostHandle handle, uint pluginId, float value) | |||||
| plugin->setPanning(value, true, false); | plugin->setPanning(value, true, false); | ||||
| } | } | ||||
| void carla_set_forth(CarlaHostHandle handle, uint pluginId, float value) | |||||
| { | |||||
| CARLA_SAFE_ASSERT_RETURN(handle->engine != nullptr,); | |||||
| if (const CarlaPluginPtr plugin = handle->engine->getPlugin(pluginId)) | |||||
| plugin->setForth(value, true, false); | |||||
| } | |||||
| void carla_set_ctrl_channel(CarlaHostHandle handle, uint pluginId, int8_t channel) | void carla_set_ctrl_channel(CarlaHostHandle handle, uint pluginId, int8_t channel) | ||||
| { | { | ||||
| CARLA_SAFE_ASSERT_RETURN(handle->engine != nullptr,); | CARLA_SAFE_ASSERT_RETURN(handle->engine != nullptr,); | ||||
| @@ -2921,7 +2921,6 @@ bool CarlaEngine::loadProjectInternal(water::XmlDocument& xmlDoc, const bool alw | |||||
| plugin->setBalanceLeft(stateSave.balanceLeft, true, true); | plugin->setBalanceLeft(stateSave.balanceLeft, true, true); | ||||
| plugin->setBalanceRight(stateSave.balanceRight, true, true); | plugin->setBalanceRight(stateSave.balanceRight, true, true); | ||||
| plugin->setPanning(stateSave.panning, true, true); | plugin->setPanning(stateSave.panning, true, true); | ||||
| plugin->setForth(stateSave.forth, true, true); | |||||
| plugin->setCtrlChannel(stateSave.ctrlChannel, true, true); | plugin->setCtrlChannel(stateSave.ctrlChannel, true, true); | ||||
| plugin->setActive(stateSave.active, true, true); | plugin->setActive(stateSave.active, true, true); | ||||
| plugin->setEnabled(true); | plugin->setEnabled(true); | ||||
| @@ -2977,7 +2976,6 @@ bool CarlaEngine::loadProjectInternal(water::XmlDocument& xmlDoc, const bool alw | |||||
| plugin->setBalanceLeft(stateSave.balanceLeft, true, true); | plugin->setBalanceLeft(stateSave.balanceLeft, true, true); | ||||
| plugin->setBalanceRight(stateSave.balanceRight, true, true); | plugin->setBalanceRight(stateSave.balanceRight, true, true); | ||||
| plugin->setPanning(stateSave.panning, true, true); | plugin->setPanning(stateSave.panning, true, true); | ||||
| plugin->setForth(stateSave.forth, true, true); | |||||
| plugin->setCtrlChannel(stateSave.ctrlChannel, true, true); | plugin->setCtrlChannel(stateSave.ctrlChannel, true, true); | ||||
| plugin->setActive(stateSave.active, true, true); | plugin->setActive(stateSave.active, true, true); | ||||
| plugin->setEnabled(true); | plugin->setEnabled(true); | ||||
| @@ -2115,17 +2115,6 @@ bool CarlaEngineNativeUI::msgReceived(const char* const msg) noexcept | |||||
| if (const CarlaPluginPtr plugin = fEngine->getPlugin(pluginId)) | if (const CarlaPluginPtr plugin = fEngine->getPlugin(pluginId)) | ||||
| plugin->setPanning(value, true, false); | plugin->setPanning(value, true, false); | ||||
| } | } | ||||
| else if (std::strcmp(msg, "set_forth") == 0) | |||||
| { | |||||
| uint32_t pluginId; | |||||
| float value; | |||||
| CARLA_SAFE_ASSERT_RETURN(readNextLineAsUInt(pluginId), true); | |||||
| CARLA_SAFE_ASSERT_RETURN(readNextLineAsFloat(value), true); | |||||
| if (const CarlaPluginPtr plugin = fEngine->getPlugin(pluginId)) | |||||
| plugin->setForth(value, true, false); | |||||
| } | |||||
| else if (std::strcmp(msg, "set_ctrl_channel") == 0) | else if (std::strcmp(msg, "set_ctrl_channel") == 0) | ||||
| { | { | ||||
| uint32_t pluginId; | uint32_t pluginId; | ||||
| @@ -137,7 +137,6 @@ private: | |||||
| int handleMsgSetBalanceLeft(CARLA_ENGINE_OSC_HANDLE_ARGS); | int handleMsgSetBalanceLeft(CARLA_ENGINE_OSC_HANDLE_ARGS); | ||||
| int handleMsgSetBalanceRight(CARLA_ENGINE_OSC_HANDLE_ARGS); | int handleMsgSetBalanceRight(CARLA_ENGINE_OSC_HANDLE_ARGS); | ||||
| int handleMsgSetPanning(CARLA_ENGINE_OSC_HANDLE_ARGS); | int handleMsgSetPanning(CARLA_ENGINE_OSC_HANDLE_ARGS); | ||||
| int handleMsgSetForth(CARLA_ENGINE_OSC_HANDLE_ARGS); | |||||
| int handleMsgSetParameterValue(CARLA_ENGINE_OSC_HANDLE_ARGS); | int handleMsgSetParameterValue(CARLA_ENGINE_OSC_HANDLE_ARGS); | ||||
| int handleMsgSetParameterMappedControlIndex(CARLA_ENGINE_OSC_HANDLE_ARGS); | int handleMsgSetParameterMappedControlIndex(CARLA_ENGINE_OSC_HANDLE_ARGS); | ||||
| int handleMsgSetParameterMappedRange(CARLA_ENGINE_OSC_HANDLE_ARGS); | int handleMsgSetParameterMappedRange(CARLA_ENGINE_OSC_HANDLE_ARGS); | ||||
| @@ -179,8 +179,6 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, | |||||
| return handleMsgSetBalanceRight(plugin, argc, argv, types); | return handleMsgSetBalanceRight(plugin, argc, argv, types); | ||||
| if (std::strcmp(method, "set_panning") == 0) | if (std::strcmp(method, "set_panning") == 0) | ||||
| return handleMsgSetPanning(plugin, argc, argv, types); | return handleMsgSetPanning(plugin, argc, argv, types); | ||||
| if (std::strcmp(method, "set_forth") == 0) | |||||
| return handleMsgSetForth(plugin, argc, argv, types); | |||||
| if (std::strcmp(method, "set_ctrl_channel") == 0) | if (std::strcmp(method, "set_ctrl_channel") == 0) | ||||
| return 0; //handleMsgSetControlChannel(plugin, argc, argv, types); // TODO | return 0; //handleMsgSetControlChannel(plugin, argc, argv, types); // TODO | ||||
| if (std::strcmp(method, "set_parameter_value") == 0) | if (std::strcmp(method, "set_parameter_value") == 0) | ||||
| @@ -680,17 +678,6 @@ int CarlaEngineOsc::handleMsgSetPanning(CARLA_ENGINE_OSC_HANDLE_ARGS) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| int CarlaEngineOsc::handleMsgSetForth(CARLA_ENGINE_OSC_HANDLE_ARGS) | |||||
| { | |||||
| carla_debug("CarlaEngineOsc::handleMsgSetForth()"); | |||||
| CARLA_ENGINE_OSC_CHECK_OSC_TYPES(1, "f"); | |||||
| const float value = argv[0]->f; | |||||
| plugin->setForth(value, false, true); | |||||
| return 0; | |||||
| } | |||||
| int CarlaEngineOsc::handleMsgSetParameterValue(CARLA_ENGINE_OSC_HANDLE_ARGS) | int CarlaEngineOsc::handleMsgSetParameterValue(CARLA_ENGINE_OSC_HANDLE_ARGS) | ||||
| { | { | ||||
| carla_debug("CarlaEngineOsc::handleMsgSetParameterValue()"); | carla_debug("CarlaEngineOsc::handleMsgSetParameterValue()"); | ||||
| @@ -287,18 +287,18 @@ void CarlaEngineOsc::sendPluginInternalParameterValues(const CarlaPluginPtr& plu | |||||
| carla_debug("CarlaEngineOsc::sendPluginInternalParameterValues(%p)", plugin.get()); | carla_debug("CarlaEngineOsc::sendPluginInternalParameterValues(%p)", plugin.get()); | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | #ifdef CARLA_PROPER_CPP11_SUPPORT | ||||
| static_assert(PARAMETER_ACTIVE == -2 && PARAMETER_MAX == -10, "Incorrect data"); | |||||
| static_assert(PARAMETER_ACTIVE == -2 && PARAMETER_MAX == -9, "Incorrect data"); | |||||
| #endif | #endif | ||||
| double iparams[8]; | |||||
| double iparams[7]; | |||||
| for (int32_t i = 0; i < 8; ++i) | |||||
| for (int32_t i = 0; i < 7; ++i) | |||||
| iparams[i] = plugin->getInternalParameterValue(PARAMETER_ACTIVE - i); | iparams[i] = plugin->getInternalParameterValue(PARAMETER_ACTIVE - i); | ||||
| char targetPath[std::strlen(fControlDataTCP.path)+9]; | char targetPath[std::strlen(fControlDataTCP.path)+9]; | ||||
| std::strcpy(targetPath, fControlDataTCP.path); | std::strcpy(targetPath, fControlDataTCP.path); | ||||
| std::strcat(targetPath, "/iparams"); | std::strcat(targetPath, "/iparams"); | ||||
| try_lo_send(fControlDataTCP.target, targetPath, "iffffffff", | |||||
| try_lo_send(fControlDataTCP.target, targetPath, "ifffffff", | |||||
| static_cast<int32_t>(plugin->getId()), | static_cast<int32_t>(plugin->getId()), | ||||
| iparams[0], // PARAMETER_ACTIVE | iparams[0], // PARAMETER_ACTIVE | ||||
| iparams[1], // PARAMETER_DRYWET | iparams[1], // PARAMETER_DRYWET | ||||
| @@ -306,8 +306,7 @@ void CarlaEngineOsc::sendPluginInternalParameterValues(const CarlaPluginPtr& plu | |||||
| iparams[3], // PARAMETER_BALANCE_LEFT | iparams[3], // PARAMETER_BALANCE_LEFT | ||||
| iparams[4], // PARAMETER_BALANCE_RIGHT | iparams[4], // PARAMETER_BALANCE_RIGHT | ||||
| iparams[5], // PARAMETER_PANNING | iparams[5], // PARAMETER_PANNING | ||||
| iparams[6], // PARAMETER_CTRL_CHANNEL | |||||
| iparams[7] // PARAMETER_FORTH | |||||
| iparams[6] // PARAMETER_CTRL_CHANNEL | |||||
| ); | ); | ||||
| } | } | ||||
| @@ -392,8 +392,6 @@ float CarlaPlugin::getInternalParameterValue(const int32_t parameterId) const no | |||||
| return pData->postProc.balanceRight; | return pData->postProc.balanceRight; | ||||
| case PARAMETER_PANNING: | case PARAMETER_PANNING: | ||||
| return pData->postProc.panning; | return pData->postProc.panning; | ||||
| case PARAMETER_FORTH: | |||||
| return pData->postProc.forth; | |||||
| }; | }; | ||||
| #endif | #endif | ||||
| CARLA_SAFE_ASSERT_RETURN(parameterId >= 0, 0.0f); | CARLA_SAFE_ASSERT_RETURN(parameterId >= 0, 0.0f); | ||||
| @@ -542,7 +540,6 @@ const CarlaStateSave& CarlaPlugin::getStateSave(const bool callPrepareForSave) | |||||
| pData->stateSave.balanceLeft = pData->postProc.balanceLeft; | pData->stateSave.balanceLeft = pData->postProc.balanceLeft; | ||||
| pData->stateSave.balanceRight = pData->postProc.balanceRight; | pData->stateSave.balanceRight = pData->postProc.balanceRight; | ||||
| pData->stateSave.panning = pData->postProc.panning; | pData->stateSave.panning = pData->postProc.panning; | ||||
| pData->stateSave.forth = pData->postProc.forth; | |||||
| pData->stateSave.ctrlChannel = pData->ctrlChannel; | pData->stateSave.ctrlChannel = pData->ctrlChannel; | ||||
| #endif | #endif | ||||
| @@ -956,7 +953,6 @@ void CarlaPlugin::loadStateSave(const CarlaStateSave& stateSave) | |||||
| setBalanceLeft(stateSave.balanceLeft, true, true); | setBalanceLeft(stateSave.balanceLeft, true, true); | ||||
| setBalanceRight(stateSave.balanceRight, true, true); | setBalanceRight(stateSave.balanceRight, true, true); | ||||
| setPanning(stateSave.panning, true, true); | setPanning(stateSave.panning, true, true); | ||||
| setForth(stateSave.forth, true, true); | |||||
| setCtrlChannel(stateSave.ctrlChannel, true, true); | setCtrlChannel(stateSave.ctrlChannel, true, true); | ||||
| setActive(stateSave.active, true, true); | setActive(stateSave.active, true, true); | ||||
| @@ -1554,31 +1550,6 @@ void CarlaPlugin::setPanning(const float value, const bool sendOsc, const bool s | |||||
| nullptr); | nullptr); | ||||
| } | } | ||||
| void CarlaPlugin::setForth(const float value, const bool sendOsc, const bool sendCallback) noexcept | |||||
| { | |||||
| if (pData->engineBridged) { | |||||
| CARLA_SAFE_ASSERT_RETURN(!sendOsc && !sendCallback,); | |||||
| } else { | |||||
| CARLA_SAFE_ASSERT_RETURN(sendOsc || sendCallback,); // never call this from RT | |||||
| } | |||||
| CARLA_SAFE_ASSERT(value >= -1.0f && value <= 1.0f); | |||||
| const float fixedValue(carla_fixedValue<float>(-1.0f, 1.0f, value)); | |||||
| if (carla_isEqual(pData->postProc.forth, fixedValue)) | |||||
| return; | |||||
| pData->postProc.forth = fixedValue; | |||||
| pData->engine->callback(sendCallback, sendOsc, | |||||
| ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, | |||||
| pData->id, | |||||
| PARAMETER_FORTH, | |||||
| 0, 0, | |||||
| fixedValue, | |||||
| nullptr); | |||||
| } | |||||
| void CarlaPlugin::setDryWetRT(const float value, const bool sendCallbackLater) noexcept | void CarlaPlugin::setDryWetRT(const float value, const bool sendCallbackLater) noexcept | ||||
| { | { | ||||
| CARLA_SAFE_ASSERT(value >= 0.0f && value <= 1.0f); | CARLA_SAFE_ASSERT(value >= 0.0f && value <= 1.0f); | ||||
| @@ -1643,19 +1614,6 @@ void CarlaPlugin::setPanningRT(const float value, const bool sendCallbackLater) | |||||
| pData->postProc.panning = fixedValue; | pData->postProc.panning = fixedValue; | ||||
| pData->postponeParameterChangeRtEvent(sendCallbackLater, PARAMETER_PANNING, fixedValue); | pData->postponeParameterChangeRtEvent(sendCallbackLater, PARAMETER_PANNING, fixedValue); | ||||
| } | } | ||||
| void CarlaPlugin::setForthRT(const float value, const bool sendCallbackLater) noexcept | |||||
| { | |||||
| CARLA_SAFE_ASSERT(value >= -1.0f && value <= 1.0f); | |||||
| const float fixedValue(carla_fixedValue<float>(-1.0f, 1.0f, value)); | |||||
| if (carla_isEqual(pData->postProc.forth, fixedValue)) | |||||
| return; | |||||
| pData->postProc.forth = fixedValue; | |||||
| pData->postponeParameterChangeRtEvent(sendCallbackLater, PARAMETER_FORTH, fixedValue); | |||||
| } | |||||
| #endif // ! BUILD_BRIDGE_ALTERNATIVE_ARCH | #endif // ! BUILD_BRIDGE_ALTERNATIVE_ARCH | ||||
| void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept | void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept | ||||
| @@ -1737,8 +1695,6 @@ void CarlaPlugin::setParameterValueByRealIndex(const int32_t rindex, const float | |||||
| return setBalanceRight(value, sendOsc, sendCallback); | return setBalanceRight(value, sendOsc, sendCallback); | ||||
| case PARAMETER_PANNING: | case PARAMETER_PANNING: | ||||
| return setPanning(value, sendOsc, sendCallback); | return setPanning(value, sendOsc, sendCallback); | ||||
| case PARAMETER_FORTH: | |||||
| return setForth(value, sendOsc, sendCallback); | |||||
| } | } | ||||
| #endif | #endif | ||||
| CARLA_SAFE_ASSERT_RETURN(rindex >= 0,); | CARLA_SAFE_ASSERT_RETURN(rindex >= 0,); | ||||
| @@ -710,7 +710,6 @@ CarlaPlugin::ProtectedData::PostProc::PostProc() noexcept | |||||
| balanceLeft(-1.0f), | balanceLeft(-1.0f), | ||||
| balanceRight(1.0f), | balanceRight(1.0f), | ||||
| panning(0.0f), | panning(0.0f), | ||||
| forth(0.0f), | |||||
| extraBuffer(nullptr) {} | extraBuffer(nullptr) {} | ||||
| #endif | #endif | ||||
| @@ -379,7 +379,6 @@ struct CarlaPlugin::ProtectedData { | |||||
| float balanceLeft; | float balanceLeft; | ||||
| float balanceRight; | float balanceRight; | ||||
| float panning; | float panning; | ||||
| float forth; | |||||
| float* extraBuffer; | float* extraBuffer; | ||||
| PostProc() noexcept; | PostProc() noexcept; | ||||
| @@ -1273,9 +1273,6 @@ public: | |||||
| if (aOuts >= 2) | if (aOuts >= 2) | ||||
| pData->hints |= PLUGIN_CAN_PANNING; | pData->hints |= PLUGIN_CAN_PANNING; | ||||
| if (aOuts >= 3) | |||||
| pData->hints |= PLUGIN_CAN_FORTH; | |||||
| #endif | #endif | ||||
| // extra plugin hints | // extra plugin hints | ||||
| @@ -2124,13 +2121,12 @@ public: | |||||
| } | } | ||||
| } | } | ||||
| // Panning and Front-Rear ("Forth"). | |||||
| // Panning | |||||
| // Only decrease of levels, but never increase, unlike 'L, R'. | // Only decrease of levels, but never increase, unlike 'L, R'. | ||||
| // Note: no any pan/forth processing for Mono. | |||||
| // Note: no pan processing for Mono. | |||||
| uint32_t q = pData->audioOut.count; | uint32_t q = pData->audioOut.count; | ||||
| float pan = pData->postProc.panning; | float pan = pData->postProc.panning; | ||||
| float forth = pData->postProc.forth; | |||||
| float vol = pData->postProc.volume; | float vol = pData->postProc.volume; | ||||
| // Pan: Stereo, 3 ch (extra rear/bass), or Quadro. | // Pan: Stereo, 3 ch (extra rear/bass), or Quadro. | ||||
| @@ -2149,22 +2145,6 @@ public: | |||||
| } | } | ||||
| } | } | ||||
| // Front-Rear: 3 ch (extra rear/bass), or Quadro. | |||||
| if ((forth != 0.0) && ((q == 3) || (q == 4))) | |||||
| { | |||||
| // rear channel(s) reduce when moving forth to front | |||||
| if ((forth > 0) && ((i == 2) || (i == 3))) | |||||
| { | |||||
| vol = vol * (1.0 - forth); | |||||
| } | |||||
| // front channels reduce when moving back to rear | |||||
| else if ((forth < 0) && ((i == 0) || (i == 1))) | |||||
| { | |||||
| vol = vol * (1.0 + forth); | |||||
| } | |||||
| } | |||||
| // Volume (and buffer copy) | // Volume (and buffer copy) | ||||
| { | { | ||||
| for (uint32_t k=0; k < frames; ++k) | for (uint32_t k=0; k < frames; ++k) | ||||
| @@ -3341,9 +3341,6 @@ public: | |||||
| if (aOuts >= 2) | if (aOuts >= 2) | ||||
| pData->hints |= PLUGIN_CAN_PANNING; | pData->hints |= PLUGIN_CAN_PANNING; | ||||
| if (aOuts >= 3) | |||||
| pData->hints |= PLUGIN_CAN_FORTH; | |||||
| // extra plugin hints | // extra plugin hints | ||||
| pData->extraHints = 0x0; | pData->extraHints = 0x0; | ||||
| @@ -4715,13 +4712,12 @@ public: | |||||
| } | } | ||||
| } | } | ||||
| // Panning and Front-Rear ("Forth"). | |||||
| // Panning | |||||
| // Only decrease of levels, but never increase, unlike 'L, R'. | // Only decrease of levels, but never increase, unlike 'L, R'. | ||||
| // Note: no any pan/forth processing for Mono. | |||||
| // Note: no pan processing for Mono. | |||||
| uint32_t q = pData->audioOut.count; | uint32_t q = pData->audioOut.count; | ||||
| float pan = pData->postProc.panning; | float pan = pData->postProc.panning; | ||||
| float forth = pData->postProc.forth; | |||||
| float vol = pData->postProc.volume; | float vol = pData->postProc.volume; | ||||
| // Pan: Stereo, 3 ch (extra rear/bass), or Quadro. | // Pan: Stereo, 3 ch (extra rear/bass), or Quadro. | ||||
| @@ -4740,22 +4736,6 @@ public: | |||||
| } | } | ||||
| } | } | ||||
| // Front-Rear: 3 ch (extra rear/bass), or Quadro. | |||||
| if ((forth != 0.0) && ((q == 3) || (q == 4))) | |||||
| { | |||||
| // rear channel(s) reduce when moving forth to front | |||||
| if ((forth > 0) && ((i == 2) || (i == 3))) | |||||
| { | |||||
| vol = vol * (1.0 - forth); | |||||
| } | |||||
| // front channels reduce when moving back to rear | |||||
| else if ((forth < 0) && ((i == 0) || (i == 1))) | |||||
| { | |||||
| vol = vol * (1.0 + forth); | |||||
| } | |||||
| } | |||||
| // Volume (and buffer copy) | // Volume (and buffer copy) | ||||
| { | { | ||||
| for (uint32_t k=0; k < frames; ++k) | for (uint32_t k=0; k < frames; ++k) | ||||
| @@ -1408,9 +1408,6 @@ public: | |||||
| if (aOuts >= 2) | if (aOuts >= 2) | ||||
| pData->hints |= PLUGIN_CAN_PANNING; | pData->hints |= PLUGIN_CAN_PANNING; | ||||
| if (aOuts >= 3) | |||||
| pData->hints |= PLUGIN_CAN_FORTH; | |||||
| // native plugin hints | // native plugin hints | ||||
| if (fDescriptor->hints & NATIVE_PLUGIN_IS_RTSAFE) | if (fDescriptor->hints & NATIVE_PLUGIN_IS_RTSAFE) | ||||
| pData->hints |= PLUGIN_IS_RTSAFE; | pData->hints |= PLUGIN_IS_RTSAFE; | ||||
| @@ -2422,13 +2419,12 @@ public: | |||||
| } | } | ||||
| } | } | ||||
| // Panning and Front-Rear ("Forth"). | |||||
| // Panning | |||||
| // Only decrease of levels, but never increase, unlike 'L, R'. | // Only decrease of levels, but never increase, unlike 'L, R'. | ||||
| // Note: no any pan/forth processing for Mono. | |||||
| // Note: no pan processing for Mono. | |||||
| uint32_t q = pData->audioOut.count; | uint32_t q = pData->audioOut.count; | ||||
| float pan = pData->postProc.panning; | float pan = pData->postProc.panning; | ||||
| float forth = pData->postProc.forth; | |||||
| float vol = pData->postProc.volume; | float vol = pData->postProc.volume; | ||||
| // Pan: Stereo, 3 ch (extra rear/bass), or Quadro. | // Pan: Stereo, 3 ch (extra rear/bass), or Quadro. | ||||
| @@ -2447,22 +2443,6 @@ public: | |||||
| } | } | ||||
| } | } | ||||
| // Front-Rear: 3 ch (extra rear/bass), or Quadro. | |||||
| if ((forth != 0.0) && ((q == 3) || (q == 4))) | |||||
| { | |||||
| // rear channel(s) reduce when moving forth to front | |||||
| if ((forth > 0) && ((i == 2) || (i == 3))) | |||||
| { | |||||
| vol = vol * (1.0 - forth); | |||||
| } | |||||
| // front channels reduce when moving back to rear | |||||
| else if ((forth < 0) && ((i == 0) || (i == 1))) | |||||
| { | |||||
| vol = vol * (1.0 + forth); | |||||
| } | |||||
| } | |||||
| // Volume (and buffer copy) | // Volume (and buffer copy) | ||||
| { | { | ||||
| for (uint32_t k=0; k < frames; ++k) | for (uint32_t k=0; k < frames; ++k) | ||||
| @@ -207,9 +207,6 @@ PLUGIN_USES_MULTI_PROGS = 0x400 | |||||
| # Plugin can make use of inline display API. | # Plugin can make use of inline display API. | ||||
| PLUGIN_HAS_INLINE_DISPLAY = 0x800 | PLUGIN_HAS_INLINE_DISPLAY = 0x800 | ||||
| # Plugin can use internal control of Front-Rear balance for Quadro (or > 2 channels in General). | |||||
| PLUGIN_CAN_FORTH = 0x8000 | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Plugin Options | # Plugin Options | ||||
| # Various plugin options. | # Various plugin options. | ||||
| @@ -556,12 +553,8 @@ PARAMETER_PANNING = -7 | |||||
| # Range -1...15 (-1 = off). | # Range -1...15 (-1 = off). | ||||
| PARAMETER_CTRL_CHANNEL = -8 | PARAMETER_CTRL_CHANNEL = -8 | ||||
| # Experimental Front-Rear (Forth) parameter. | |||||
| # Range -1.0...1.0; default is 0.0. | |||||
| PARAMETER_FORTH = -9 | |||||
| # Max value, defined only for convenience. | # Max value, defined only for convenience. | ||||
| PARAMETER_MAX = -10 | |||||
| PARAMETER_MAX = -9 | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Special Mapped Control Index | # Special Mapped Control Index | ||||
| @@ -2119,13 +2112,6 @@ class CarlaHostMeta(): | |||||
| def set_panning(self, pluginId, value): | def set_panning(self, pluginId, value): | ||||
| raise NotImplementedError | raise NotImplementedError | ||||
| # Change a plugin's internal front-rear (forth) value. | |||||
| # @param pluginId Plugin | |||||
| # @param value New value | |||||
| @abstractmethod | |||||
| def set_forth(self, pluginId, value): | |||||
| raise NotImplementedError | |||||
| # Change a plugin's internal control channel. | # Change a plugin's internal control channel. | ||||
| # @param pluginId Plugin | # @param pluginId Plugin | ||||
| # @param channel New channel | # @param channel New channel | ||||
| @@ -2544,9 +2530,6 @@ class CarlaHostNull(CarlaHostMeta): | |||||
| def set_panning(self, pluginId, value): | def set_panning(self, pluginId, value): | ||||
| return | return | ||||
| def set_forth(self, pluginId, value): | |||||
| return | |||||
| def set_ctrl_channel(self, pluginId, channel): | def set_ctrl_channel(self, pluginId, channel): | ||||
| return | return | ||||
| @@ -2869,9 +2852,6 @@ class CarlaHostDLL(CarlaHostMeta): | |||||
| self.lib.carla_set_panning.argtypes = (c_void_p, c_uint, c_float) | self.lib.carla_set_panning.argtypes = (c_void_p, c_uint, c_float) | ||||
| self.lib.carla_set_panning.restype = None | self.lib.carla_set_panning.restype = None | ||||
| self.lib.carla_set_forth.argtypes = (c_void_p, c_uint, c_float) | |||||
| self.lib.carla_set_forth.restype = None | |||||
| self.lib.carla_set_ctrl_channel.argtypes = (c_void_p, c_uint, c_int8) | self.lib.carla_set_ctrl_channel.argtypes = (c_void_p, c_uint, c_int8) | ||||
| self.lib.carla_set_ctrl_channel.restype = None | self.lib.carla_set_ctrl_channel.restype = None | ||||
| @@ -3213,9 +3193,6 @@ class CarlaHostDLL(CarlaHostMeta): | |||||
| def set_panning(self, pluginId, value): | def set_panning(self, pluginId, value): | ||||
| self.lib.carla_set_panning(self.handle, pluginId, value) | self.lib.carla_set_panning(self.handle, pluginId, value) | ||||
| def set_forth(self, pluginId, value): | |||||
| self.lib.carla_set_forth(self.handle, pluginId, value) | |||||
| def set_ctrl_channel(self, pluginId, channel): | def set_ctrl_channel(self, pluginId, channel): | ||||
| self.lib.carla_set_ctrl_channel(self.handle, pluginId, channel) | self.lib.carla_set_ctrl_channel(self.handle, pluginId, channel) | ||||
| @@ -3296,7 +3273,7 @@ class PluginStoreInfo(): | |||||
| def clear(self): | def clear(self): | ||||
| self.pluginInfo = PyCarlaPluginInfo.copy() | self.pluginInfo = PyCarlaPluginInfo.copy() | ||||
| self.pluginRealName = "" | self.pluginRealName = "" | ||||
| self.internalValues = [0.0, 1.0, 1.0, -1.0, 1.0, 0.0, -1.0, 0.0] | |||||
| self.internalValues = [0.0, 1.0, 1.0, -1.0, 1.0, 0.0, -1.0] | |||||
| self.audioCountInfo = PyCarlaPortCountInfo.copy() | self.audioCountInfo = PyCarlaPortCountInfo.copy() | ||||
| self.midiCountInfo = PyCarlaPortCountInfo.copy() | self.midiCountInfo = PyCarlaPortCountInfo.copy() | ||||
| self.parameterCount = 0 | self.parameterCount = 0 | ||||
| @@ -3623,10 +3600,6 @@ class CarlaHostPlugin(CarlaHostMeta): | |||||
| self.sendMsg(["set_panning", pluginId, value]) | self.sendMsg(["set_panning", pluginId, value]) | ||||
| self.fPluginsInfo[pluginId].internalValues[5] = value | self.fPluginsInfo[pluginId].internalValues[5] = value | ||||
| def set_forth(self, pluginId, value): | |||||
| self.sendMsg(["set_forth", pluginId, value]) | |||||
| self.fPluginsInfo[pluginId].internalValues[7] = value | |||||
| def set_ctrl_channel(self, pluginId, channel): | def set_ctrl_channel(self, pluginId, channel): | ||||
| self.sendMsg(["set_ctrl_channel", pluginId, channel]) | self.sendMsg(["set_ctrl_channel", pluginId, channel]) | ||||
| self.fPluginsInfo[pluginId].internalValues[6] = float(channel) | self.fPluginsInfo[pluginId].internalValues[6] = float(channel) | ||||
| @@ -468,12 +468,6 @@ class CarlaHostQtWeb(CarlaHostQtNull): | |||||
| 'value': value, | 'value': value, | ||||
| }) | }) | ||||
| def set_forth(self, pluginId, value): | |||||
| requests.get("{}/set_forth".format(self.baseurl), params={ | |||||
| 'pluginId': pluginId, | |||||
| 'value': value, | |||||
| }) | |||||
| def set_ctrl_channel(self, pluginId, channel): | def set_ctrl_channel(self, pluginId, channel): | ||||
| requests.get("{}/set_ctrl_channel".format(self.baseurl), params={ | requests.get("{}/set_ctrl_channel".format(self.baseurl), params={ | ||||
| 'pluginId': pluginId, | 'pluginId': pluginId, | ||||
| @@ -1546,7 +1546,6 @@ class HostWindow(QMainWindow): | |||||
| pitem.getWidget().setInternalParameter(PARAMETER_BALANCE_LEFT, -1.0) | pitem.getWidget().setInternalParameter(PARAMETER_BALANCE_LEFT, -1.0) | ||||
| pitem.getWidget().setInternalParameter(PARAMETER_BALANCE_RIGHT, 1.0) | pitem.getWidget().setInternalParameter(PARAMETER_BALANCE_RIGHT, 1.0) | ||||
| pitem.getWidget().setInternalParameter(PARAMETER_PANNING, 0.0) | pitem.getWidget().setInternalParameter(PARAMETER_PANNING, 0.0) | ||||
| pitem.getWidget().setInternalParameter(PARAMETER_FORTH, 0.0) | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_pluginsChangeSkin(self): | def slot_pluginsChangeSkin(self): | ||||
| @@ -189,7 +189,6 @@ class CarlaHostOSC(CarlaHostQtPlugin): | |||||
| "set_balance_left", | "set_balance_left", | ||||
| "set_balance_right", | "set_balance_right", | ||||
| "set_panning", | "set_panning", | ||||
| "set_forth", | |||||
| #"set_ctrl_channel", | #"set_ctrl_channel", | ||||
| "set_parameter_value", | "set_parameter_value", | ||||
| "set_parameter_midi_channel", | "set_parameter_midi_channel", | ||||
| @@ -427,18 +426,17 @@ class CarlaControlServerTCP(Server): | |||||
| pluginId, index, type_, key, value = args | pluginId, index, type_, key, value = args | ||||
| self.host._set_customData(pluginId, index, { 'type': type_, 'key': key, 'value': value }) | self.host._set_customData(pluginId, index, { 'type': type_, 'key': key, 'value': value }) | ||||
| @make_method('/ctrl/iparams', 'iffffffff') | |||||
| @make_method('/ctrl/iparams', 'ifffffff') | |||||
| def carla_iparams(self, path, args): | def carla_iparams(self, path, args): | ||||
| if DEBUG: print(path, args) | if DEBUG: print(path, args) | ||||
| self.fReceivedMsgs = True | self.fReceivedMsgs = True | ||||
| pluginId, active, drywet, volume, balLeft, balRight, pan, ctrlChan, forth = args | |||||
| pluginId, active, drywet, volume, balLeft, balRight, pan, ctrlChan = args | |||||
| self.host._set_internalValue(pluginId, PARAMETER_ACTIVE, active) | self.host._set_internalValue(pluginId, PARAMETER_ACTIVE, active) | ||||
| self.host._set_internalValue(pluginId, PARAMETER_DRYWET, drywet) | self.host._set_internalValue(pluginId, PARAMETER_DRYWET, drywet) | ||||
| self.host._set_internalValue(pluginId, PARAMETER_VOLUME, volume) | self.host._set_internalValue(pluginId, PARAMETER_VOLUME, volume) | ||||
| self.host._set_internalValue(pluginId, PARAMETER_BALANCE_LEFT, balLeft) | self.host._set_internalValue(pluginId, PARAMETER_BALANCE_LEFT, balLeft) | ||||
| self.host._set_internalValue(pluginId, PARAMETER_BALANCE_RIGHT, balRight) | self.host._set_internalValue(pluginId, PARAMETER_BALANCE_RIGHT, balRight) | ||||
| self.host._set_internalValue(pluginId, PARAMETER_PANNING, pan) | self.host._set_internalValue(pluginId, PARAMETER_PANNING, pan) | ||||
| self.host._set_internalValue(pluginId, PARAMETER_FORTH, forth) | |||||
| self.host._set_internalValue(pluginId, PARAMETER_CTRL_CHANNEL, ctrlChan) | self.host._set_internalValue(pluginId, PARAMETER_CTRL_CHANNEL, ctrlChan) | ||||
| @make_method('/ctrl/resp', 'is') | @make_method('/ctrl/resp', 'is') | ||||
| @@ -798,14 +798,6 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): | |||||
| self.fParameterList.append([PARAMETER_PANNING, widget]) | self.fParameterList.append([PARAMETER_PANNING, widget]) | ||||
| self.w_knobs_right.layout().addWidget(widget) | self.w_knobs_right.layout().addWidget(widget) | ||||
| if (self.fPluginInfo['hints'] & PLUGIN_CAN_FORTH) != 0: | |||||
| if widget.getTweak('ShowForth', 0): | |||||
| widget = ScalableDial(self, PARAMETER_FORTH, 100, 0.0, -1.0, 1.0, "Forth", skinNum * 16 + ScalableDial.CUSTOM_PAINT_MODE_CARLA_FORTH, -1, "%", self.fSkinStyle, whiteLabels, self.fTweaks) | |||||
| self.fParameterList.append([PARAMETER_FORTH, widget]) | |||||
| self.w_knobs_right.layout().addWidget(widget) | |||||
| for paramIndex, paramWidget in self.fParameterList: | for paramIndex, paramWidget in self.fParameterList: | ||||
| if not paramWidget.fIsOutput: | if not paramWidget.fIsOutput: | ||||
| paramWidget.customContextMenuRequested.connect(self.slot_knobCustomMenu) | paramWidget.customContextMenuRequested.connect(self.slot_knobCustomMenu) | ||||
| @@ -901,10 +893,6 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): | |||||
| if (self.fPluginInfo['hints'] & PLUGIN_CAN_PANNING) == 0: return | if (self.fPluginInfo['hints'] & PLUGIN_CAN_PANNING) == 0: return | ||||
| self.host.set_panning(self.fPluginId, value) | self.host.set_panning(self.fPluginId, value) | ||||
| elif parameterId == PARAMETER_FORTH: | |||||
| if (self.fPluginInfo['hints'] & PLUGIN_CAN_FORTH) == 0: return | |||||
| self.host.set_forth(self.fPluginId, value) | |||||
| elif parameterId == PARAMETER_CTRL_CHANNEL: | elif parameterId == PARAMETER_CTRL_CHANNEL: | ||||
| self.host.set_ctrl_channel(self.fPluginId, value) | self.host.set_ctrl_channel(self.fPluginId, value) | ||||
| @@ -76,7 +76,6 @@ from carla_backend import ( | |||||
| PLUGIN_CAN_VOLUME, | PLUGIN_CAN_VOLUME, | ||||
| PLUGIN_CAN_BALANCE, | PLUGIN_CAN_BALANCE, | ||||
| PLUGIN_CAN_PANNING, | PLUGIN_CAN_PANNING, | ||||
| PLUGIN_CAN_FORTH, | |||||
| PLUGIN_CATEGORY_SYNTH, | PLUGIN_CATEGORY_SYNTH, | ||||
| PLUGIN_OPTION_FIXED_BUFFERS, | PLUGIN_OPTION_FIXED_BUFFERS, | ||||
| PLUGIN_OPTION_FORCE_STEREO, | PLUGIN_OPTION_FORCE_STEREO, | ||||
| @@ -95,7 +94,6 @@ from carla_backend import ( | |||||
| PARAMETER_BALANCE_LEFT, | PARAMETER_BALANCE_LEFT, | ||||
| PARAMETER_BALANCE_RIGHT, | PARAMETER_BALANCE_RIGHT, | ||||
| PARAMETER_PANNING, | PARAMETER_PANNING, | ||||
| PARAMETER_FORTH, | |||||
| PARAMETER_CTRL_CHANNEL, | PARAMETER_CTRL_CHANNEL, | ||||
| PARAMETER_IS_ENABLED, | PARAMETER_IS_ENABLED, | ||||
| PARAMETER_IS_AUTOMATABLE, | PARAMETER_IS_AUTOMATABLE, | ||||
| @@ -579,9 +577,6 @@ class PluginEdit(QDialog): | |||||
| self.ui.dial_pan = ScalableDial(self.ui.dial_pan, PARAMETER_PANNING, 100, 0, -1.0, 1.0, "Pan", ScalableDial.CUSTOM_PAINT_MODE_CARLA_PAN) | self.ui.dial_pan = ScalableDial(self.ui.dial_pan, PARAMETER_PANNING, 100, 0, -1.0, 1.0, "Pan", ScalableDial.CUSTOM_PAINT_MODE_CARLA_PAN) | ||||
| self.ui.dial_pan.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_PANNING)) | self.ui.dial_pan.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_PANNING)) | ||||
| self.ui.dial_forth = ScalableDial(self.ui.dial_forth, PARAMETER_FORTH, 100, 0, -1.0, 1.0, "Forth", ScalableDial.CUSTOM_PAINT_MODE_CARLA_FORTH) | |||||
| self.ui.dial_forth.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_FORTH)) | |||||
| self.ui.sb_ctrl_channel.setValue(self.fControlChannel+1) | self.ui.sb_ctrl_channel.setValue(self.fControlChannel+1) | ||||
| self.ui.scrollArea = PixmapKeyboardHArea(self) | self.ui.scrollArea = PixmapKeyboardHArea(self) | ||||
| @@ -628,7 +623,6 @@ class PluginEdit(QDialog): | |||||
| self.ui.dial_b_left.realValueChanged.connect(self.slot_balanceLeftChanged) | self.ui.dial_b_left.realValueChanged.connect(self.slot_balanceLeftChanged) | ||||
| self.ui.dial_b_right.realValueChanged.connect(self.slot_balanceRightChanged) | self.ui.dial_b_right.realValueChanged.connect(self.slot_balanceRightChanged) | ||||
| self.ui.dial_pan.realValueChanged.connect(self.slot_panChanged) | self.ui.dial_pan.realValueChanged.connect(self.slot_panChanged) | ||||
| self.ui.dial_forth.realValueChanged.connect(self.slot_forthChanged) | |||||
| self.ui.sb_ctrl_channel.valueChanged.connect(self.slot_ctrlChannelChanged) | self.ui.sb_ctrl_channel.valueChanged.connect(self.slot_ctrlChannelChanged) | ||||
| self.ui.dial_drywet.customContextMenuRequested.connect(self.slot_knobCustomMenu) | self.ui.dial_drywet.customContextMenuRequested.connect(self.slot_knobCustomMenu) | ||||
| @@ -763,10 +757,6 @@ class PluginEdit(QDialog): | |||||
| self.ui.dial_pan.setValue(self.host.get_internal_parameter_value(self.fPluginId, PARAMETER_PANNING)) | self.ui.dial_pan.setValue(self.host.get_internal_parameter_value(self.fPluginId, PARAMETER_PANNING)) | ||||
| self.ui.dial_pan.blockSignals(False) | self.ui.dial_pan.blockSignals(False) | ||||
| self.ui.dial_forth.blockSignals(True) | |||||
| self.ui.dial_forth.setValue(self.host.get_internal_parameter_value(self.fPluginId, PARAMETER_FORTH)) | |||||
| self.ui.dial_forth.blockSignals(False) | |||||
| self.fControlChannel = round(self.host.get_internal_parameter_value(self.fPluginId, PARAMETER_CTRL_CHANNEL)) | self.fControlChannel = round(self.host.get_internal_parameter_value(self.fPluginId, PARAMETER_CTRL_CHANNEL)) | ||||
| self.ui.sb_ctrl_channel.blockSignals(True) | self.ui.sb_ctrl_channel.blockSignals(True) | ||||
| self.ui.sb_ctrl_channel.setValue(self.fControlChannel+1) | self.ui.sb_ctrl_channel.setValue(self.fControlChannel+1) | ||||
| @@ -836,7 +826,6 @@ class PluginEdit(QDialog): | |||||
| self.ui.dial_b_left.setEnabled(pluginHints & PLUGIN_CAN_BALANCE) | self.ui.dial_b_left.setEnabled(pluginHints & PLUGIN_CAN_BALANCE) | ||||
| self.ui.dial_b_right.setEnabled(pluginHints & PLUGIN_CAN_BALANCE) | self.ui.dial_b_right.setEnabled(pluginHints & PLUGIN_CAN_BALANCE) | ||||
| self.ui.dial_pan.setEnabled(pluginHints & PLUGIN_CAN_PANNING) | self.ui.dial_pan.setEnabled(pluginHints & PLUGIN_CAN_PANNING) | ||||
| self.ui.dial_forth.setEnabled(pluginHints & PLUGIN_CAN_FORTH) | |||||
| optsAvailable = self.fPluginInfo['optionsAvailable'] | optsAvailable = self.fPluginInfo['optionsAvailable'] | ||||
| optsEnabled = self.fPluginInfo['optionsEnabled'] | optsEnabled = self.fPluginInfo['optionsEnabled'] | ||||
| @@ -1219,11 +1208,6 @@ class PluginEdit(QDialog): | |||||
| self.ui.dial_pan.setValue(value) | self.ui.dial_pan.setValue(value) | ||||
| self.ui.dial_pan.blockSignals(False) | self.ui.dial_pan.blockSignals(False) | ||||
| elif index == PARAMETER_FORTH: | |||||
| self.ui.dial_forth.blockSignals(True) | |||||
| self.ui.dial_forth.setValue(value) | |||||
| self.ui.dial_forth.blockSignals(False) | |||||
| elif index == PARAMETER_CTRL_CHANNEL: | elif index == PARAMETER_CTRL_CHANNEL: | ||||
| self.fControlChannel = round(value) | self.fControlChannel = round(value) | ||||
| self.ui.sb_ctrl_channel.blockSignals(True) | self.ui.sb_ctrl_channel.blockSignals(True) | ||||
| @@ -1423,13 +1407,6 @@ class PluginEdit(QDialog): | |||||
| if self.fParent is not None: | if self.fParent is not None: | ||||
| self.fParent.editDialogParameterValueChanged(self.fPluginId, PARAMETER_PANNING, value) | self.fParent.editDialogParameterValueChanged(self.fPluginId, PARAMETER_PANNING, value) | ||||
| @pyqtSlot(float) | |||||
| def slot_forthChanged(self, value): | |||||
| self.host.set_forth(self.fPluginId, value) | |||||
| if self.fParent is not None: | |||||
| self.fParent.editDialogParameterValueChanged(self.fPluginId, PARAMETER_FORTH, value) | |||||
| @pyqtSlot(int) | @pyqtSlot(int) | ||||
| def slot_ctrlChannelChanged(self, value): | def slot_ctrlChannelChanged(self, value): | ||||
| self.fControlChannel = value-1 | self.fControlChannel = value-1 | ||||
| @@ -1542,7 +1519,7 @@ class PluginEdit(QDialog): | |||||
| menu.addSeparator() | menu.addSeparator() | ||||
| actSet = menu.addAction(self.tr("Set value...\t" + editHotKey)) | actSet = menu.addAction(self.tr("Set value...\t" + editHotKey)) | ||||
| if index > PARAMETER_NULL or index not in (PARAMETER_BALANCE_LEFT, PARAMETER_BALANCE_RIGHT, PARAMETER_PANNING, PARAMETER_FORTH): | |||||
| if index > PARAMETER_NULL or index not in (PARAMETER_BALANCE_LEFT, PARAMETER_BALANCE_RIGHT, PARAMETER_PANNING): | |||||
| menu.removeAction(actCenter) | menu.removeAction(actCenter) | ||||
| actSelected = menu.exec_(QCursor.pos()) | actSelected = menu.exec_(QCursor.pos()) | ||||
| @@ -61,7 +61,6 @@ AboutDialog::AboutDialog(QWidget* const parent, | |||||
| "<tr><td>" "/set_volume" " </td><td><f-value></td></tr>" | "<tr><td>" "/set_volume" " </td><td><f-value></td></tr>" | ||||
| "<tr><td>" "/set_balance_left" " </td><td><f-value></td></tr>" | "<tr><td>" "/set_balance_left" " </td><td><f-value></td></tr>" | ||||
| "<tr><td>" "/set_balance_right" " </td><td><f-value></td></tr>" | "<tr><td>" "/set_balance_right" " </td><td><f-value></td></tr>" | ||||
| "<tr><td>" "/set_forth" " </td><td><f-value></td></tr>" | |||||
| "<tr><td>" "/set_panning" " </td><td><f-value></td></tr>" | "<tr><td>" "/set_panning" " </td><td><f-value></td></tr>" | ||||
| "<tr><td>" "/set_parameter_value" " </td><td><i-index> <f-value></td></tr>" | "<tr><td>" "/set_parameter_value" " </td><td><i-index> <f-value></td></tr>" | ||||
| "<tr><td>" "/set_parameter_midi_cc" " </td><td><i-index> <i-cc></td></tr>" | "<tr><td>" "/set_parameter_midi_cc" " </td><td><i-index> <i-cc></td></tr>" | ||||
| @@ -20,7 +20,7 @@ elif qt_config == 6: | |||||
| from carla_shared import strLim | from carla_shared import strLim | ||||
| from widgets.paramspinbox import CustomInputDialog | from widgets.paramspinbox import CustomInputDialog | ||||
| from carla_backend import PARAMETER_NULL, PARAMETER_DRYWET, PARAMETER_VOLUME, PARAMETER_BALANCE_LEFT, PARAMETER_BALANCE_RIGHT, PARAMETER_PANNING, PARAMETER_FORTH | |||||
| from carla_backend import PARAMETER_NULL, PARAMETER_DRYWET, PARAMETER_VOLUME, PARAMETER_BALANCE_LEFT, PARAMETER_BALANCE_RIGHT, PARAMETER_PANNING | |||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| # Widget Class | # Widget Class | ||||
| @@ -289,7 +289,7 @@ class CommonDial(QWidget): | |||||
| def mouseDoubleClickEvent(self, event): | def mouseDoubleClickEvent(self, event): | ||||
| if self.knobPusheable and self.fIndex in (PARAMETER_DRYWET, PARAMETER_VOLUME, PARAMETER_PANNING, PARAMETER_FORTH): # -3, -4, -7, -9 | |||||
| if self.knobPusheable and self.fIndex in (PARAMETER_DRYWET, PARAMETER_VOLUME, PARAMETER_PANNING): # -3, -4, -7 | |||||
| return # Mutex with special Single Click | return # Mutex with special Single Click | ||||
| if event.button() == Qt.LeftButton: | if event.button() == Qt.LeftButton: | ||||
| @@ -336,7 +336,7 @@ class CommonDial(QWidget): | |||||
| # NOTE: fLastLabel state managed @ scalabledial | # NOTE: fLastLabel state managed @ scalabledial | ||||
| def knobPush(self): | def knobPush(self): | ||||
| if self.knobPusheable and self.fIndex in (PARAMETER_DRYWET, PARAMETER_VOLUME, PARAMETER_PANNING, PARAMETER_FORTH): # -3, -4, -7, -9 | |||||
| if self.knobPusheable and self.fIndex in (PARAMETER_DRYWET, PARAMETER_VOLUME, PARAMETER_PANNING): # -3, -4, -7 | |||||
| if self.fLastLabel == "": # push value | if self.fLastLabel == "": # push value | ||||
| self.fLastValue = self.fRealValue | self.fLastValue = self.fRealValue | ||||
| @@ -549,8 +549,6 @@ class CommonDial(QWidget): | |||||
| tip = "MUTE" | tip = "MUTE" | ||||
| elif self.fRealValue == 0 and self.fIndex == PARAMETER_PANNING: | elif self.fRealValue == 0 and self.fIndex == PARAMETER_PANNING: | ||||
| tip = "Center" | tip = "Center" | ||||
| elif self.fRealValue == 0 and self.fIndex == PARAMETER_FORTH: | |||||
| tip = "Midway" | |||||
| else: | else: | ||||
| if self.fIndex < PARAMETER_NULL: | if self.fIndex < PARAMETER_NULL: | ||||
| percent = 100.0 | percent = 100.0 | ||||
| @@ -28,7 +28,6 @@ from carla_backend import ( | |||||
| PARAMETER_BALANCE_LEFT, | PARAMETER_BALANCE_LEFT, | ||||
| PARAMETER_BALANCE_RIGHT, | PARAMETER_BALANCE_RIGHT, | ||||
| PARAMETER_PANNING, | PARAMETER_PANNING, | ||||
| PARAMETER_FORTH, | |||||
| PARAMETER_MAX ) | PARAMETER_MAX ) | ||||
| # --------------------------------------------------------------------------------------------------------------------- | # --------------------------------------------------------------------------------------------------------------------- | ||||
| @@ -306,7 +305,7 @@ class ScalableDial(CommonDial): | |||||
| haveLed = self.getTweak('WetVolPushLed', 1) and self.fCustomPaintMode in (1, 2, 5, 6, 9, 10,) | haveLed = self.getTweak('WetVolPushLed', 1) and self.fCustomPaintMode in (1, 2, 5, 6, 9, 10,) | ||||
| if self.fIndex in (PARAMETER_DRYWET, PARAMETER_VOLUME, PARAMETER_PANNING, PARAMETER_FORTH): # -3, -4, -7, -9 | |||||
| if self.fIndex in (PARAMETER_DRYWET, PARAMETER_VOLUME, PARAMETER_PANNING): # -3, -4, -7 | |||||
| if knobMuted: | if knobMuted: | ||||
| if self.fIndex == PARAMETER_DRYWET: | if self.fIndex == PARAMETER_DRYWET: | ||||
| self.pushLabel("Thru") | self.pushLabel("Thru") | ||||
| @@ -994,20 +994,6 @@ void handle_carla_set_panning(const std::shared_ptr<Session> session) | |||||
| session->close(OK); | session->close(OK); | ||||
| } | } | ||||
| void handle_carla_set_forth(const std::shared_ptr<Session> session) | |||||
| { | |||||
| const std::shared_ptr<const Request> request = session->get_request(); | |||||
| const int pluginId = std::atoi(request->get_query_parameter("pluginId").c_str()); | |||||
| CARLA_SAFE_ASSERT_RETURN(pluginId >= 0,) | |||||
| const double value = std::atof(request->get_query_parameter("value").c_str()); | |||||
| CARLA_SAFE_ASSERT_RETURN(value >= -1.0 && value <= 1.0,) | |||||
| carla_set_forth(pluginId, value); | |||||
| session->close(OK); | |||||
| } | |||||
| void handle_carla_set_ctrl_channel(const std::shared_ptr<Session> session) | void handle_carla_set_ctrl_channel(const std::shared_ptr<Session> session) | ||||
| { | { | ||||
| const std::shared_ptr<const Request> request = session->get_request(); | const std::shared_ptr<const Request> request = session->get_request(); | ||||
| @@ -407,7 +407,6 @@ int main(int, const char**) | |||||
| make_resource(service, "/set_balance_left", handle_carla_set_balance_left); | make_resource(service, "/set_balance_left", handle_carla_set_balance_left); | ||||
| make_resource(service, "/set_balance_right", handle_carla_set_balance_right); | make_resource(service, "/set_balance_right", handle_carla_set_balance_right); | ||||
| make_resource(service, "/set_panning", handle_carla_set_panning); | make_resource(service, "/set_panning", handle_carla_set_panning); | ||||
| make_resource(service, "/set_forth", handle_carla_set_forth); | |||||
| make_resource(service, "/set_ctrl_channel", handle_carla_set_ctrl_channel); | make_resource(service, "/set_ctrl_channel", handle_carla_set_ctrl_channel); | ||||
| make_resource(service, "/set_option", handle_carla_set_option); | make_resource(service, "/set_option", handle_carla_set_option); | ||||
| @@ -196,8 +196,6 @@ const char* InternalParameterIndex2Str(const InternalParameterIndex index) noexc | |||||
| return "PARAMETER_BALANCE_RIGHT"; | return "PARAMETER_BALANCE_RIGHT"; | ||||
| case PARAMETER_PANNING: | case PARAMETER_PANNING: | ||||
| return "PARAMETER_PANNING"; | return "PARAMETER_PANNING"; | ||||
| case PARAMETER_FORTH: | |||||
| return "PARAMETER_FORTH"; | |||||
| case PARAMETER_CTRL_CHANNEL: | case PARAMETER_CTRL_CHANNEL: | ||||
| return "PARAMETER_CTRL_CHANNEL"; | return "PARAMETER_CTRL_CHANNEL"; | ||||
| #endif | #endif | ||||
| @@ -185,7 +185,6 @@ CarlaStateSave::CarlaStateSave() noexcept | |||||
| balanceLeft(-1.0f), | balanceLeft(-1.0f), | ||||
| balanceRight(1.0f), | balanceRight(1.0f), | ||||
| panning(0.0f), | panning(0.0f), | ||||
| forth(0.0f), | |||||
| ctrlChannel(-1), | ctrlChannel(-1), | ||||
| #endif | #endif | ||||
| currentProgramIndex(-1), | currentProgramIndex(-1), | ||||
| @@ -244,7 +243,6 @@ void CarlaStateSave::clear() noexcept | |||||
| balanceLeft = -1.0f; | balanceLeft = -1.0f; | ||||
| balanceRight = 1.0f; | balanceRight = 1.0f; | ||||
| panning = 0.0f; | panning = 0.0f; | ||||
| forth = 0.0f; | |||||
| ctrlChannel = -1; | ctrlChannel = -1; | ||||
| #endif | #endif | ||||
| @@ -348,10 +346,6 @@ bool CarlaStateSave::fillFromXmlElement(const XmlElement* const xmlElement) | |||||
| { | { | ||||
| panning = carla_fixedValue(-1.0f, 1.0f, text.getFloatValue()); | panning = carla_fixedValue(-1.0f, 1.0f, text.getFloatValue()); | ||||
| } | } | ||||
| else if (tag == "Forth") | |||||
| { | |||||
| forth = carla_fixedValue(-1.0f, 1.0f, text.getFloatValue()); | |||||
| } | |||||
| else if (tag == "ControlChannel") | else if (tag == "ControlChannel") | ||||
| { | { | ||||
| if (! text.startsWithIgnoreCase("n")) | if (! text.startsWithIgnoreCase("n")) | ||||
| @@ -633,8 +627,6 @@ void CarlaStateSave::dumpToMemoryStream(MemoryOutputStream& content) const | |||||
| dataXml << " <Balance-Right>" << water::String(balanceRight, 7) << "</Balance-Right>\n"; | dataXml << " <Balance-Right>" << water::String(balanceRight, 7) << "</Balance-Right>\n"; | ||||
| if (carla_isNotEqual(panning, 0.0f)) | if (carla_isNotEqual(panning, 0.0f)) | ||||
| dataXml << " <Panning>" << water::String(panning, 7) << "</Panning>\n"; | dataXml << " <Panning>" << water::String(panning, 7) << "</Panning>\n"; | ||||
| if (carla_isNotEqual(forth, 0.0f)) | |||||
| dataXml << " <Forth>" << water::String(forth, 7) << "</Forth>\n"; | |||||
| if (ctrlChannel < 0) | if (ctrlChannel < 0) | ||||
| dataXml << " <ControlChannel>N</ControlChannel>\n"; | dataXml << " <ControlChannel>N</ControlChannel>\n"; | ||||
| @@ -69,7 +69,6 @@ struct CarlaStateSave { | |||||
| float balanceLeft; | float balanceLeft; | ||||
| float balanceRight; | float balanceRight; | ||||
| float panning; | float panning; | ||||
| float forth; | |||||
| int8_t ctrlChannel; | int8_t ctrlChannel; | ||||
| #endif | #endif | ||||