Also receive CC default value

This commit is contained in:
Jean Pierre Cimalando 2021-02-03 11:39:26 +01:00
parent 2ede8fd710
commit 80eb73f4cb
3 changed files with 25 additions and 0 deletions

View file

@ -156,6 +156,7 @@ struct Editor::Impl : EditorController::Receiver, IControlListener {
void updateCCUsed(unsigned cc, bool used);
void updateCCValue(unsigned cc, float value);
void updateCCDefaultValue(unsigned cc, float value);
void updateCCLabel(unsigned cc, const char* label);
// edition of CC by UI
@ -412,6 +413,8 @@ void Editor::Impl::uiReceiveMessage(const char* path, const char* sig, const sfi
char pathBuf[256];
sprintf(pathBuf, "/cc%u/value", cc);
sendQueuedOSC(pathBuf, "", nullptr);
sprintf(pathBuf, "/cc%u/default", cc);
sendQueuedOSC(pathBuf, "", nullptr);
sprintf(pathBuf, "/cc%u/label", cc);
sendQueuedOSC(pathBuf, "", nullptr);
}
@ -420,6 +423,9 @@ void Editor::Impl::uiReceiveMessage(const char* path, const char* sig, const sfi
else if (matchMessage("/cc&/value", path, indices) && !strcmp(sig, "f")) {
updateCCValue(indices[0], args[0].f);
}
else if (matchMessage("/cc&/default", path, indices) && !strcmp(sig, "f")) {
updateCCDefaultValue(indices[0], args[0].f);
}
else if (matchMessage("/cc&/label", path, indices) && !strcmp(sig, "s")) {
updateCCLabel(indices[0], args[0].s);
}
@ -1203,6 +1209,12 @@ void Editor::Impl::updateCCValue(unsigned cc, float value)
panel->setControlValue(cc, value);
}
void Editor::Impl::updateCCDefaultValue(unsigned cc, float value)
{
if (SControlsPanel* panel = controlsPanel_)
panel->setControlDefaultValue(cc, value);
}
void Editor::Impl::updateCCLabel(unsigned cc, const char* label)
{
if (SControlsPanel* panel = controlsPanel_)

View file

@ -603,6 +603,18 @@ void SControlsPanel::setControlValue(uint32_t index, float value)
slot->knob->setValue(value);
}
void SControlsPanel::setControlDefaultValue(uint32_t index, float value)
{
if (index >= slots_.size())
return;
ControlSlot* slot = slots_[index].get();
if (!slot)
return;
slot->knob->setDefaultValue(value);
}
void SControlsPanel::setControlLabelText(uint32_t index, UTF8StringPtr text)
{
if (index >= slots_.size())

View file

@ -223,6 +223,7 @@ public:
void setControlUsed(uint32_t index, bool used);
void setControlValue(uint32_t index, float value);
void setControlDefaultValue(uint32_t index, float value);
void setControlLabelText(uint32_t index, UTF8StringPtr text);
std::function<void(uint32_t, float)> ValueChangeFunction;