Mema
Memory Matrix — multi-channel audio matrix monitor and router
Loading...
Searching...
No Matches
MemaCommanders.h
Go to the documentation of this file.
1/* Copyright (c) 2024, Christian Ahrens
2 *
3 * This file is part of Mema <https://github.com/ChristianAhrens/Mema>
4 *
5 * This tool is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU Lesser General Public License version 3.0 as published
7 * by the Free Software Foundation.
8 *
9 * This tool is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12 * details.
13 *
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with this tool; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 */
18
19#pragma once
20
21#include <JuceHeader.h>
22
24
25
26namespace Mema
27{
28
29
32{
33public:
35 virtual ~MemaChannelCommander();
36
37 virtual void setChannelCount(std::uint16_t channelCount) = 0;
38
39protected:
40
41private:
42};
43
46{
47public:
49 virtual ~MemaInputCommander() override;
50
51 void setInputMuteChangeCallback(const std::function<void(MemaInputCommander* sender, std::uint16_t, bool)>& callback);
52 void setInputLevelChangeCallback(const std::function<void(MemaInputCommander* sender, std::uint16_t, float)>& callback);
53 void setInputMutePollCallback(const std::function<void(MemaInputCommander* sender, std::uint16_t)>& callback);
54 void setInputLevelPollCallback(const std::function<void(MemaInputCommander* sender, std::uint16_t)>& callback);
55
56 virtual void setInputMute(std::uint16_t channel, bool muteState, int userId = -1) = 0;
57 virtual void setInputLevel(std::uint16_t channel, float levelValue, int userId = -1) { ignoreUnused(channel); ignoreUnused(levelValue); ignoreUnused(userId); };
58
59protected:
60 void inputMuteChange(std::uint16_t channel, bool muteState, MemaInputCommander* sender);
61 void inputLevelChange(std::uint16_t channel, float levelValue, MemaInputCommander* sender);
62
63 void inputMutePoll(std::uint16_t channel, MemaInputCommander* sender);
64 void inputLevelPoll(std::uint16_t channel, MemaInputCommander* sender);
65
66private:
67 std::function<void(MemaInputCommander* sender, std::uint16_t, float)> onInputLevelChangeCallback{ nullptr };
68 std::function<void(MemaInputCommander* sender, std::uint16_t)> onInputLevelPollCallback{ nullptr };
69 std::function<void(MemaInputCommander* sender, std::uint16_t, bool)> onInputMuteChangeCallback{ nullptr };
70 std::function<void(MemaInputCommander* sender, std::uint16_t)> onInputMutePollCallback{ nullptr };
71
72 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MemaInputCommander)
73};
74
77{
78public:
80 virtual ~MemaOutputCommander() override;
81
82 void setOutputMuteChangeCallback(const std::function<void(MemaOutputCommander* sender, std::uint16_t, bool)>& callback);
83 void setOutputLevelChangeCallback(const std::function<void(MemaOutputCommander* sender, std::uint16_t, float)>& callback);
84 void setOutputMutePollCallback(const std::function<void(MemaOutputCommander* sender, std::uint16_t)>& callback);
85 void setOutputLevelPollCallback(const std::function<void(MemaOutputCommander* sender, std::uint16_t)>& callback);
86
87 virtual void setOutputMute(std::uint16_t channel, bool muteState, int userId = -1) = 0;
88 virtual void setOutputLevel(std::uint16_t channel, float levelValue, int userId = -1) { ignoreUnused(channel); ignoreUnused(levelValue); ignoreUnused(userId);
89 };
90
91protected:
92 void outputMuteChange(std::uint16_t channel, bool muteState, MemaOutputCommander* sender);
93 void outputLevelChange(std::uint16_t channel, float levelValue, MemaOutputCommander* sender);
94
95 void outputMutePoll(std::uint16_t channel, MemaOutputCommander* sender);
96 void outputLevelPoll(std::uint16_t channel, MemaOutputCommander* sender);
97
98private:
99 std::function<void(MemaOutputCommander* sender, std::uint16_t, float)> onOutputLevelChangeCallback{ nullptr };
100 std::function<void(MemaOutputCommander* sender, std::uint16_t)> onOutputLevelPollCallback{ nullptr };
101 std::function<void(MemaOutputCommander* sender, std::uint16_t, bool)> onOutputMuteChangeCallback{ nullptr };
102 std::function<void(MemaOutputCommander* sender, std::uint16_t)> onOutputMutePollCallback{ nullptr };
103
104 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MemaOutputCommander)
105};
106
109{
110public:
112 virtual ~MemaCrosspointCommander() override;
113
114 void setCrosspointEnabledChangeCallback(const std::function<void(MemaCrosspointCommander* sender, std::uint16_t, std::uint16_t, bool)>& callback);
115 void setCrosspointEnabledPollCallback(const std::function<void(MemaCrosspointCommander* sender, std::uint16_t, std::uint16_t)>& callback);
116 virtual void setCrosspointEnabledValue(std::uint16_t input, std::uint16_t output, bool enabledState, int userId = -1) = 0;
117
118 void setCrosspointFactorChangeCallback(const std::function<void(MemaCrosspointCommander* sender, std::uint16_t, std::uint16_t, float)>& callback);
119 void setCrosspointFactorPollCallback(const std::function<void(MemaCrosspointCommander* sender, std::uint16_t, std::uint16_t)>& callback);
120 virtual void setCrosspointFactorValue(std::uint16_t input, std::uint16_t output, float factor, int userId = -1) = 0;
121
122 virtual void setIOCount(std::uint16_t inputCount, std::uint16_t outputCount) = 0;
123
124protected:
125 void crosspointEnabledChange(std::uint16_t input, std::uint16_t output, bool enabledState, MemaCrosspointCommander* sender);
126 void crosspointEnabledPoll(std::uint16_t input, std::uint16_t output, MemaCrosspointCommander* sender);
127
128 void crosspointFactorChange(std::uint16_t input, std::uint16_t output, float factor, MemaCrosspointCommander* sender);
129 void crosspointFactorPoll(std::uint16_t input, std::uint16_t output, MemaCrosspointCommander* sender);
130
131private:
132 void setChannelCount(std::uint16_t channelCount) override { ignoreUnused(channelCount); jassertfalse; };
133
134 std::function<void(MemaCrosspointCommander* sender, std::uint16_t, std::uint16_t, bool)> onCrosspointEnabledChangeCallback{ nullptr };
135 std::function<void(MemaCrosspointCommander* sender, std::uint16_t, std::uint16_t)> onCrosspointEnabledPollCallback{ nullptr };
136
137 std::function<void(MemaCrosspointCommander* sender, std::uint16_t, std::uint16_t, float)> onCrosspointFactorChangeCallback{ nullptr };
138 std::function<void(MemaCrosspointCommander* sender, std::uint16_t, std::uint16_t)> onCrosspointFactorPollCallback{ nullptr };
139
140 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MemaCrosspointCommander)
141};
142
145{
146public:
148 virtual ~MemaPluginCommander();
149
150 void setPluginParameterInfosChangeCallback(const std::function<void(MemaPluginCommander* sender, const std::vector<PluginParameterInfo>&, const std::string& name)>& callback);
151 void setPluginParameterInfosPollCallback(const std::function<void(MemaPluginCommander* sender)>& callback);
152 virtual void setPluginParameterInfos(const std::vector<PluginParameterInfo>&, const std::string& name, int userId = -1) = 0;
153
154 void setPluginParameterValueChangeCallback(const std::function<void(MemaPluginCommander* sender, std::uint16_t, std::string, float)>& callback);
155 void setPluginParameterValuePollCallback(const std::function<void(MemaPluginCommander* sender, std::uint16_t, std::string)>& callback);
156 virtual void setPluginParameterValue(std::uint16_t index, std::string id, float currentValue, int userId = -1) = 0;
157
158protected:
159 void pluginParameterInfosChange(const std::vector<PluginParameterInfo>&, const std::string&, MemaPluginCommander* sender);
161
162 void pluginParameterValueChange(std::uint16_t index, std::string id, float currentValue, MemaPluginCommander* sender);
163 void pluginParameterValuePoll(std::uint16_t index, std::string id, MemaPluginCommander* sender);
164
165private:
166 std::function<void(MemaPluginCommander* sender, const std::vector<PluginParameterInfo>&, const std::string&)> onPluginParameterInfosChangeCallback{ nullptr };
167 std::function<void(MemaPluginCommander* sender)> onPluginParameterInfosPollCallback{ nullptr };
168
169 std::function<void(MemaPluginCommander* sender, std::uint16_t, std::string, float)> onPluginParameterValueChangeCallback{ nullptr };
170 std::function<void(MemaPluginCommander* sender, std::uint16_t, std::string)> onPluginParameterValuePollCallback{ nullptr };
171
172 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(MemaPluginCommander)
173};
174
175
176} // namespace Mema
virtual void setChannelCount(std::uint16_t channelCount)=0
void setCrosspointEnabledPollCallback(const std::function< void(MemaCrosspointCommander *sender, std::uint16_t, std::uint16_t)> &callback)
virtual void setCrosspointFactorValue(std::uint16_t input, std::uint16_t output, float factor, int userId=-1)=0
virtual ~MemaCrosspointCommander() override
void crosspointFactorPoll(std::uint16_t input, std::uint16_t output, MemaCrosspointCommander *sender)
void setCrosspointEnabledChangeCallback(const std::function< void(MemaCrosspointCommander *sender, std::uint16_t, std::uint16_t, bool)> &callback)
void crosspointEnabledChange(std::uint16_t input, std::uint16_t output, bool enabledState, MemaCrosspointCommander *sender)
void crosspointFactorChange(std::uint16_t input, std::uint16_t output, float factor, MemaCrosspointCommander *sender)
virtual void setIOCount(std::uint16_t inputCount, std::uint16_t outputCount)=0
virtual void setCrosspointEnabledValue(std::uint16_t input, std::uint16_t output, bool enabledState, int userId=-1)=0
void crosspointEnabledPoll(std::uint16_t input, std::uint16_t output, MemaCrosspointCommander *sender)
void setCrosspointFactorPollCallback(const std::function< void(MemaCrosspointCommander *sender, std::uint16_t, std::uint16_t)> &callback)
void setCrosspointFactorChangeCallback(const std::function< void(MemaCrosspointCommander *sender, std::uint16_t, std::uint16_t, float)> &callback)
void inputLevelPoll(std::uint16_t channel, MemaInputCommander *sender)
virtual ~MemaInputCommander() override
virtual void setInputLevel(std::uint16_t channel, float levelValue, int userId=-1)
void inputLevelChange(std::uint16_t channel, float levelValue, MemaInputCommander *sender)
void setInputMuteChangeCallback(const std::function< void(MemaInputCommander *sender, std::uint16_t, bool)> &callback)
void inputMuteChange(std::uint16_t channel, bool muteState, MemaInputCommander *sender)
virtual void setInputMute(std::uint16_t channel, bool muteState, int userId=-1)=0
void setInputLevelChangeCallback(const std::function< void(MemaInputCommander *sender, std::uint16_t, float)> &callback)
void inputMutePoll(std::uint16_t channel, MemaInputCommander *sender)
void setInputLevelPollCallback(const std::function< void(MemaInputCommander *sender, std::uint16_t)> &callback)
void setInputMutePollCallback(const std::function< void(MemaInputCommander *sender, std::uint16_t)> &callback)
void outputLevelChange(std::uint16_t channel, float levelValue, MemaOutputCommander *sender)
void outputMuteChange(std::uint16_t channel, bool muteState, MemaOutputCommander *sender)
void outputLevelPoll(std::uint16_t channel, MemaOutputCommander *sender)
void outputMutePoll(std::uint16_t channel, MemaOutputCommander *sender)
void setOutputMuteChangeCallback(const std::function< void(MemaOutputCommander *sender, std::uint16_t, bool)> &callback)
void setOutputLevelPollCallback(const std::function< void(MemaOutputCommander *sender, std::uint16_t)> &callback)
void setOutputLevelChangeCallback(const std::function< void(MemaOutputCommander *sender, std::uint16_t, float)> &callback)
virtual void setOutputLevel(std::uint16_t channel, float levelValue, int userId=-1)
virtual ~MemaOutputCommander() override
void setOutputMutePollCallback(const std::function< void(MemaOutputCommander *sender, std::uint16_t)> &callback)
virtual void setOutputMute(std::uint16_t channel, bool muteState, int userId=-1)=0
virtual void setPluginParameterValue(std::uint16_t index, std::string id, float currentValue, int userId=-1)=0
void setPluginParameterValueChangeCallback(const std::function< void(MemaPluginCommander *sender, std::uint16_t, std::string, float)> &callback)
void setPluginParameterValuePollCallback(const std::function< void(MemaPluginCommander *sender, std::uint16_t, std::string)> &callback)
virtual void setPluginParameterInfos(const std::vector< PluginParameterInfo > &, const std::string &name, int userId=-1)=0
void setPluginParameterInfosChangeCallback(const std::function< void(MemaPluginCommander *sender, const std::vector< PluginParameterInfo > &, const std::string &name)> &callback)
void setPluginParameterInfosPollCallback(const std::function< void(MemaPluginCommander *sender)> &callback)
void pluginParameterValuePoll(std::uint16_t index, std::string id, MemaPluginCommander *sender)
void pluginParameterValueChange(std::uint16_t index, std::string id, float currentValue, MemaPluginCommander *sender)
void pluginParameterInfosPoll(MemaPluginCommander *sender)
void pluginParameterInfosChange(const std::vector< PluginParameterInfo > &, const std::string &, MemaPluginCommander *sender)
Definition Mema.cpp:27