27 m_faderbankCtrlComponent = std::make_unique<Mema::FaderbankControlComponent>();
28 m_faderbankCtrlComponent->onInputMutesChanged = [=](
const std::map<std::uint16_t, bool>& inputMuteStates) {
29 std::map<std::uint16_t, bool> outputMuteStates;
30 std::map<std::uint16_t, std::map<std::uint16_t, bool>> crosspointStates;
31 std::map<std::uint16_t, std::map<std::uint16_t, float>> crosspointValues;
33 onMessageReadyToSend(std::make_unique<Mema::ControlParametersMessage>(inputMuteStates, outputMuteStates, crosspointStates, crosspointValues)->getSerializedMessage());
35 m_faderbankCtrlComponent->onOutputMutesChanged = [=](
const std::map<std::uint16_t, bool>& outputMuteStates) {
36 std::map<std::uint16_t, bool> inputMuteStates;
37 std::map<std::uint16_t, std::map<std::uint16_t, bool>> crosspointStates;
38 std::map<std::uint16_t, std::map<std::uint16_t, float>> crosspointValues;
40 onMessageReadyToSend(std::make_unique<Mema::ControlParametersMessage>(inputMuteStates, outputMuteStates, crosspointStates, crosspointValues)->getSerializedMessage());
42 m_faderbankCtrlComponent->onCrosspointStatesChanged = [=](
const std::map<std::uint16_t, std::map<std::uint16_t, bool>>& crosspointStates) {
43 std::map<std::uint16_t, bool> inputMuteStates;
44 std::map<std::uint16_t, bool> outputMuteStates;
45 std::map<std::uint16_t, std::map<std::uint16_t, float>> crosspointValues;
47 onMessageReadyToSend(std::make_unique<Mema::ControlParametersMessage>(inputMuteStates, outputMuteStates, crosspointStates, crosspointValues)->getSerializedMessage());
49 m_faderbankCtrlComponent->onCrosspointValuesChanged = [=](
const std::map<std::uint16_t, std::map<std::uint16_t, float>>& crosspointValues) {
50 std::map<std::uint16_t, bool> inputMuteStates;
51 std::map<std::uint16_t, bool> outputMuteStates;
52 std::map<std::uint16_t, std::map<std::uint16_t, bool>> crosspointStates;
54 onMessageReadyToSend(std::make_unique<Mema::ControlParametersMessage>(inputMuteStates, outputMuteStates, crosspointStates, crosspointValues)->getSerializedMessage());
56 addChildComponent(m_faderbankCtrlComponent.get());
58 m_panningCtrlComponent = std::make_unique<Mema::PanningControlComponent>();
59 m_panningCtrlComponent->onInputMutesChanged = [=](
const std::map<std::uint16_t, bool>& inputMuteStates) {
60 std::map<std::uint16_t, bool> outputMuteStates;
61 std::map<std::uint16_t, std::map<std::uint16_t, bool>> crosspointStates;
62 std::map<std::uint16_t, std::map<std::uint16_t, float>> crosspointValues;
64 onMessageReadyToSend(std::make_unique<Mema::ControlParametersMessage>(inputMuteStates, outputMuteStates, crosspointStates, crosspointValues)->getSerializedMessage());
66 m_panningCtrlComponent->onOutputMutesChanged = [=](
const std::map<std::uint16_t, bool>& outputMuteStates) {
67 std::map<std::uint16_t, bool> inputMuteStates;
68 std::map<std::uint16_t, std::map<std::uint16_t, bool>> crosspointStates;
69 std::map<std::uint16_t, std::map<std::uint16_t, float>> crosspointValues;
71 onMessageReadyToSend(std::make_unique<Mema::ControlParametersMessage>(inputMuteStates, outputMuteStates, crosspointStates, crosspointValues)->getSerializedMessage());
73 m_panningCtrlComponent->onCrosspointStatesChanged = [=](
const std::map<std::uint16_t, std::map<std::uint16_t, bool>>& crosspointStates) {
74 std::map<std::uint16_t, bool> inputMuteStates;
75 std::map<std::uint16_t, bool> outputMuteStates;
76 std::map<std::uint16_t, std::map<std::uint16_t, float>> crosspointValues;
78 onMessageReadyToSend(std::make_unique<Mema::ControlParametersMessage>(inputMuteStates, outputMuteStates, crosspointStates, crosspointValues)->getSerializedMessage());
80 m_panningCtrlComponent->onCrosspointValuesChanged = [=](
const std::map<std::uint16_t, std::map<std::uint16_t, float>>& crosspointValues) {
81 std::map<std::uint16_t, bool> inputMuteStates;
82 std::map<std::uint16_t, bool> outputMuteStates;
83 std::map<std::uint16_t, std::map<std::uint16_t, bool>> crosspointStates;
85 onMessageReadyToSend(std::make_unique<Mema::ControlParametersMessage>(inputMuteStates, outputMuteStates, crosspointStates, crosspointValues)->getSerializedMessage());
87 m_panningCtrlComponent->setExternalControlSettings(std::get<0>(m_externalAdmOscSettings), std::get<1>(m_externalAdmOscSettings), std::get<2>(m_externalAdmOscSettings));
88 addChildComponent(m_panningCtrlComponent.get());
90 m_pluginCtrlComponent = std::make_unique<Mema::PluginControlComponent>();
91 m_pluginCtrlComponent->onPluginParameterValueChanged = [=](std::uint16_t parameterIndex, std::string parameterId,
float value) {
92 DBG(juce::String(__FUNCTION__) +
" sending to net (" + juce::String(parameterIndex) +
"; " + juce::String(parameterId) +
"; " + juce::String(value) +
") ...");
94 onMessageReadyToSend(std::make_unique<Mema::PluginParameterValueMessage>(parameterIndex, parameterId, value)->getSerializedMessage());
96 addChildComponent(m_pluginCtrlComponent.get());
267 DBG(juce::String(__FUNCTION__) +
" ignoring unexpected AnalyzerParametersMessage...");
272 DBG(juce::String(__FUNCTION__) +
" ignoring unexpected AudiBufferMessage...");
276 DBG(juce::String(__FUNCTION__) +
" handling ReinitIOCountMessage...");
278 auto inputCount = iom->getInputCount();
279 jassert(inputCount > 0);
280 auto outputCount = iom->getOutputCount();
281 jassert(outputCount > 0);
283 m_currentIOCount = std::make_pair(inputCount, outputCount);
285 if (m_faderbankCtrlComponent)
286 m_faderbankCtrlComponent->setIOCount(m_currentIOCount);
287 if (m_panningCtrlComponent)
288 m_panningCtrlComponent->setIOCount(m_currentIOCount);
294 DBG(juce::String(__FUNCTION__) +
" handling ControlParametersMessage...");
296 for (
auto const& inputMuteState : cpm->getInputMuteStates())
297 m_inputMuteStates[inputMuteState.first] = inputMuteState.second;
298 if (!m_inputMuteStates.empty())
300 if (m_faderbankCtrlComponent)
301 m_faderbankCtrlComponent->setInputMuteStates(m_inputMuteStates);
302 if (m_panningCtrlComponent)
303 m_panningCtrlComponent->setInputMuteStates(m_inputMuteStates);
306 for (
auto const& outputMuteState : cpm->getOutputMuteStates())
307 m_outputMuteStates[outputMuteState.first] = outputMuteState.second;
308 if (!m_outputMuteStates.empty())
310 if (m_faderbankCtrlComponent)
311 m_faderbankCtrlComponent->setOutputMuteStates(m_outputMuteStates);
312 if (m_panningCtrlComponent)
313 m_panningCtrlComponent->setOutputMuteStates(m_outputMuteStates);
316 for (
auto const& cpsIKV : cpm->getCrosspointStates())
317 for (
auto const& cpsOKV : cpsIKV.second)
318 m_crosspointStates[cpsIKV.first][cpsOKV.first] = cpsOKV.second;
319 if (!m_crosspointStates.empty())
321 if (m_faderbankCtrlComponent)
322 m_faderbankCtrlComponent->setCrosspointStates(m_crosspointStates);
323 if (m_panningCtrlComponent)
324 m_panningCtrlComponent->setCrosspointStates(m_crosspointStates);
327 for (
auto const& cpvIKV : cpm->getCrosspointValues())
328 for (
auto const& cpvOKV : cpvIKV.second)
329 m_crosspointValues[cpvIKV.first][cpvOKV.first] = cpvOKV.second;
330 if (!m_crosspointValues.empty())
332 if (m_faderbankCtrlComponent)
333 m_faderbankCtrlComponent->setCrosspointValues(m_crosspointValues);
334 if (m_panningCtrlComponent)
335 m_panningCtrlComponent->setCrosspointValues(m_crosspointValues);
342 DBG(juce::String(__FUNCTION__) +
" handling PluginParameterInfosMessage (" + juce::String(ppim->getParameterInfos().size()) +
") ...");
344 if (m_pluginCtrlComponent && m_pluginCtrlComponent->isVisible())
346 m_pluginCtrlComponent->setPluginName(ppim->getPluginName().toStdString());
347 m_pluginCtrlComponent->setParameterInfos(ppim->getParameterInfos());
354 DBG(juce::String(__FUNCTION__) +
" handling PluginParameterValueMessage (" + juce::String(ppvm->getParameterIndex()) +
"; " + ppvm->getParameterId() +
"; " + juce::String(ppvm->getCurrentValue()) +
") ...");
356 if (m_pluginCtrlComponent && m_pluginCtrlComponent->isVisible())
357 m_pluginCtrlComponent->setParameterValue(ppvm->getParameterIndex(), ppvm->getParameterId().toStdString(), ppvm->getCurrentValue());