commit 5df8f9bc2b5fe66d76be94abeb4405a496cf6841
parent 35e2b6d99e9801c7356b16596f0a84272396f3e3
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Sat, 3 Aug 2024 03:43:11 +0200
add outpput mode configuration
Diffstat:
1 file changed, 52 insertions(+), 6 deletions(-)
diff --git a/source/nord/n2x/n2xJucePlugin/n2xPart.cpp b/source/nord/n2x/n2xJucePlugin/n2xPart.cpp
@@ -29,24 +29,70 @@ namespace n2xJucePlugin
{
juce::PopupMenu menuChannel;
- const auto paramMidiChannel = static_cast<n2x::MultiParam>(n2x::MultiParam::SlotAMidiChannel + getPart());
- const auto ch = controller.getMultiParameter(paramMidiChannel);
+ const auto mp = static_cast<n2x::MultiParam>(n2x::MultiParam::SlotAMidiChannel + getPart());
+ const auto ch = controller.getMultiParameter(mp);
for(uint8_t c=0; c<16; ++c)
{
- menuChannel.addItem((std::string("Channel ") + std::to_string(c+1)).c_str(), true, c == ch, [&controller, c, paramMidiChannel]
+ menuChannel.addItem((std::string("Channel ") + std::to_string(c+1)).c_str(), true, c == ch, [&controller, c, mp]
{
- controller.setMultiParameter(paramMidiChannel, c);
+ controller.setMultiParameter(mp, c);
});
}
menuChannel.addSeparator();
- menuChannel.addItem("Off", true, ch == 16, [&controller, paramMidiChannel]
+ menuChannel.addItem("Off", true, ch == 16, [&controller, mp]
{
- controller.setMultiParameter(paramMidiChannel, 16);
+ controller.setMultiParameter(mp, 16);
});
menu.addSubMenu("Midi Channel", menuChannel);
}
+ {
+ juce::PopupMenu menuOut;
+
+ constexpr auto mp = n2x::MultiParam::OutModeABCD;
+ auto o = controller.getMultiParameter(mp);
+ auto out = o;
+
+ if(getPart() >= 2)
+ out >>= 4;
+ else
+ out &= 0xf;
+
+ auto setMode = [this, &controller, mp, o](uint8_t _mode)
+ {
+ auto newO = o;
+ if(getPart() < 2)
+ {
+ newO &= 0xf0;
+ newO |= _mode;
+ }
+ else
+ {
+ newO &= 0x0f;
+ newO |= _mode << 4u;
+ }
+ controller.setMultiParameter(mp, newO);
+ };
+
+ if(getPart() < 2)
+ {
+ menuOut.addItem("A & B Mono/Stereo", true, out == 0, [setMode, mp] { setMode(0); });
+ menuOut.addItem("A & B Mono" , true, out == 1, [setMode, mp] { setMode(1); });
+ menuOut.addItem("A & B Alternating", true, out == 2, [setMode, mp] { setMode(2); });
+ menuOut.addItem("A to A / B to B" , true, out == 3, [setMode, mp] { setMode(3); });
+ }
+ else
+ {
+ menuOut.addItem("Same as A & B " , true, out == 0, [setMode, mp] { setMode(0); });
+ menuOut.addItem("C & D Mono/Stereo" , true, out == 1, [setMode, mp] { setMode(1); });
+ menuOut.addItem("C & D Mono" , true, out == 2, [setMode, mp] { setMode(2); });
+ menuOut.addItem("C & D Alternating" , true, out == 3, [setMode, mp] { setMode(3); });
+ menuOut.addItem("C to C / D to D" , true, out == 4, [setMode, mp] { setMode(4); });
+ }
+
+ menu.addSubMenu("Output Mode", menuOut);
+ }
menu.showMenuAsync({});
}