Add per-note velocity routing to filter cutoff and resonance

This commit is contained in:
Armin 2026-08-30 00:01:53 +02:00
commit 9ef77e04ab
6 changed files with 63 additions and 20 deletions

View file

@ -640,6 +640,8 @@ MainContentComponent::MainContentComponent(ChromaFlockProcessor& p)
setupParam(filterResKnob, filterResAttach, "filterRes", "RES");
setupParam(filterEnvAmtKnob, filterEnvAmtAttach, "filterEnvAmt", "ENV AMT");
setupParam(keyTrackKnob, keyTrackAttach, "keyTrack", "KEY TRK");
setupParam(velToCutKnob, velToCutAttach, "velToCut", "VEL CUT");
setupParam(velToResKnob, velToResAttach, "velToRes", "VEL RES");
setupLabel(envLabel, "AMP ENV");
setupParam(envAttackKnob, envAttackAttach, "envAttack", "ATTACK");
@ -1247,12 +1249,23 @@ void MainContentComponent::resized() {
phaseOffsetKnob.setBounds(528 + (knobSize + knobSpacing) * 4, knobY2, knobSize, knobSize);
filterLabel.setBounds(1152, sectionY, 498, labelH);
filterTypeBox.setBounds(1162, sectionY + labelH + 4, 200, 28);
int knobYF = sectionY + labelH + comboH + 8;
filterCutoffKnob.setBounds(1162, knobYF, knobSize, knobSize);
filterResKnob.setBounds(1162 + knobSize + knobSpacing, knobYF, knobSize, knobSize);
filterEnvAmtKnob.setBounds(1162 + (knobSize + knobSpacing) * 2, knobYF, knobSize, knobSize);
keyTrackKnob.setBounds(1162 + (knobSize + knobSpacing) * 3, knobYF, knobSize, knobSize);
filterTypeBox.setBounds(1430, 88, 220, 28);
// FILTER holds 6 knobs (incl. per-note VEL CUT / VEL RES), so the type
// dropdown sits in the header row and the knobs form a 3x2 grid.
{
int fSize = 78;
int fGap = 6;
int gridW = 3 * fSize + 2 * fGap;
int fSx = 1152 + (498 - gridW) / 2;
int fRow1Y = 124;
int fRow2Y = fRow1Y + fSize + fGap;
filterCutoffKnob.setBounds(fSx, fRow1Y, fSize, fSize);
filterResKnob.setBounds(fSx + fSize + fGap, fRow1Y, fSize, fSize);
filterEnvAmtKnob.setBounds(fSx + (fSize + fGap) * 2, fRow1Y, fSize, fSize);
keyTrackKnob.setBounds(fSx, fRow2Y, fSize, fSize);
velToCutKnob.setBounds(fSx + fSize + fGap, fRow2Y, fSize, fSize);
velToResKnob.setBounds(fSx + (fSize + fGap) * 2, fRow2Y, fSize, fSize);
}
envLabel.setBounds(10, 302, 563, labelH);
{