You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Great work on this little plugin, it sounds.. kickass, pardon the pun. I like it so much that I'd like to install it on a standalone plugin host type of machine (self-built x86 box). Upon exploring that idea though, I noticed there's no mention of midi CC or any other form of external control anywhere in the docs or source (that I can find, anyway). Is this indeed missing, and is this something that you plan to implement? Alternatively I may try to implement it myself, I have some c/c++ experience, although I am completely new to Juce and the Juce development process, so I may be biting off more than I can chew in the short term.
The text was updated successfully, but these errors were encountered:
Thanks, glad you're liking the plugin! If you're using a DAW, it's possible to map MIDI controls to individual parameters, but for a standalone thing like you mentioned, we'll need to implement some MIDI CC controls. From my perspective, the process would look something like this:
Create a map of MIDI CC controls to plugin parameters.
Parse the MidiBuffer input to the plugin to extract the MIDI CC values for those controls.
Set the parameters based on the MIDI CC values.
Here's a rough outline of a class that could maybe do this kind of thing (see also JUCE MidiMessage documentation):
classMidiController
{
public:MidiController (AudioProcessorValueTreeState& vts)
{
map.insert ({ 16, vts.getParameter ("out_level") }); // map output level to MIDI CC 16
... // do other parameters
}
voidprocessBuffer (MidiBuffer& messages)
{
for (const MidiMessageMetadata mm : midi)
{
auto message = mm.getMessage();
for (constauto& [ccID, param] : params)
{
if (message.isControllerOfType (ccID)
{
auto paramVal = param->convertFrom0To1 ((float) message.getControllerValue() / 127.0f);
param->setValueNotifyingHost (paramVal);
}
}
}
}
private:
std::unordered_map<int, RangedAudioParameter*> params;
};
Anyway, I have no idea if that will work, but might be worth trying.
Do you have references for other plugins that have this sort of thing implemented? I'd be curious to see how they do it, and how it's documented like in the plugin's user manual or something like that.
Hi,
Great work on this little plugin, it sounds.. kickass, pardon the pun. I like it so much that I'd like to install it on a standalone plugin host type of machine (self-built x86 box). Upon exploring that idea though, I noticed there's no mention of midi CC or any other form of external control anywhere in the docs or source (that I can find, anyway). Is this indeed missing, and is this something that you plan to implement? Alternatively I may try to implement it myself, I have some c/c++ experience, although I am completely new to Juce and the Juce development process, so I may be biting off more than I can chew in the short term.
The text was updated successfully, but these errors were encountered: