mirror of
https://codeberg.org/armin/chromaflock.git
synced 2026-09-01 04:10:47 +02:00
updateeeees
This commit is contained in:
parent
8768d13338
commit
462891fb11
5 changed files with 69 additions and 99 deletions
|
|
@ -555,6 +555,7 @@ MainContentComponent::MainContentComponent(ChromaFlockProcessor& p)
|
|||
arpEnabledLed(p.apvts, "arpEnabled", "ON", "OFF"),
|
||||
arpDirectionLed(p.apvts, "arpDirection", "ON", "OFF"),
|
||||
delayPingPongLed(p.apvts, "delayPingPong", "ON", "OFF"),
|
||||
reverbOnLed(p.apvts, "reverbOn", "ON", "OFF"),
|
||||
lfo1SyncLed(p.apvts, "lfo1Sync", "SYNC ON", "SYNC OFF"),
|
||||
lfo2SyncLed(p.apvts, "lfo2Sync", "SYNC ON", "SYNC OFF"),
|
||||
delaySyncLed(p.apvts, "delaySync", "SYNC ON", "SYNC OFF") {
|
||||
|
|
@ -664,6 +665,7 @@ MainContentComponent::MainContentComponent(ChromaFlockProcessor& p)
|
|||
setupParam(delayFbKnob, delayFbAttach, "delayFeedback", "FBACK");
|
||||
setupParam(delayMixKnob, delayMixAttach, "delayMix", "MIX");
|
||||
addAndMakeVisible(delayPingPongLed);
|
||||
addAndMakeVisible(reverbOnLed);
|
||||
setupParam(reverbSizeKnob, reverbSizeAttach, "reverbSize", "SIZE");
|
||||
setupParam(reverbDampKnob, reverbDampAttach, "reverbDamping", "DAMP");
|
||||
setupParam(reverbMixKnob, reverbMixAttach, "reverbMix", "MIX");
|
||||
|
|
@ -771,7 +773,7 @@ MainContentComponent::MainContentComponent(ChromaFlockProcessor& p)
|
|||
{"Up / Minor", "Down / Minor", "Up & Down / Major", "Down & Up / Major", "Random",
|
||||
"As Played", "Chord", "Up & Down X", "Down & Up X", "Random Once", "Octave Up",
|
||||
"Octave Down", "Pinky Up", "Pinky Down", "Up / Major", "Down / Major",
|
||||
"Up & Down / Minor", "C3/C4 1", "C3/C4 2", "C3/C4 3", "C3/C4 4", "C3/C4 5"});
|
||||
"Up & Down / Minor", "Stab 1", "Stab 2", "Stab 3", "Stab 4", "Stab 5"});
|
||||
setupCB(arpOctavesBox, arpOctavesAttach, "arpOctaves", {"1", "2", "3"});
|
||||
setupCB(arpRateBox, arpRateAttach, "arpRate", {"1/32", "1/16", "1/8", "1/4", "1/2", "1", "2"});
|
||||
|
||||
|
|
@ -1047,19 +1049,7 @@ void MainContentComponent::paint(juce::Graphics& g) {
|
|||
g.setOpacity(1.0f);
|
||||
}
|
||||
|
||||
// Header section background
|
||||
{
|
||||
auto rect = juce::Rectangle<float>(10.0f, 0.0f, 1640.0f, 80.0f);
|
||||
auto glow = rect.expanded(6.0f);
|
||||
g.setColour(juce::Colour(0xff222222).withAlpha(0.25f));
|
||||
g.fillRoundedRectangle(glow, 12.0f);
|
||||
juce::ColourGradient fillGrad(juce::Colour(0xBB222222), rect.getCentreX(), rect.getY(),
|
||||
juce::Colour(0xBB111111), rect.getCentreX(), rect.getBottom(), false);
|
||||
g.setGradientFill(fillGrad);
|
||||
g.fillRoundedRectangle(rect, 9.0f);
|
||||
g.setColour(juce::Colour(0xff333333));
|
||||
g.drawRoundedRectangle(rect, 9.0f, 1.0f);
|
||||
}
|
||||
// Header section: no boxed background (border removed)
|
||||
|
||||
// Load logo
|
||||
if (!logoLoaded) {
|
||||
|
|
@ -1116,13 +1106,13 @@ void MainContentComponent::paint(juce::Graphics& g) {
|
|||
g.drawRoundedRectangle(rect, 9.0f, 1.0f);
|
||||
};
|
||||
|
||||
drawSection(10, 80, 498, 200);
|
||||
drawSection(518, 80, 624, 200);
|
||||
drawSection(1152, 80, 498, 200);
|
||||
drawSection(10, 290, 563, 160);
|
||||
drawSection(583, 290, 502, 160);
|
||||
drawSection(1095, 290, 555, 160);
|
||||
drawSection(10, 884, 1640, 136);
|
||||
drawSection(10, 88, 498, 200);
|
||||
drawSection(518, 88, 624, 200);
|
||||
drawSection(1152, 88, 498, 200);
|
||||
drawSection(10, 298, 563, 160);
|
||||
drawSection(583, 298, 502, 160);
|
||||
drawSection(1095, 298, 555, 160);
|
||||
drawSection(10, 892, 1640, 136);
|
||||
|
||||
// FX sub-sections
|
||||
auto drawSubSection = [&](int x, int y, int w, int h, const juce::String& title, int titlePadY = 2) {
|
||||
|
|
@ -1142,25 +1132,25 @@ void MainContentComponent::paint(juce::Graphics& g) {
|
|||
g.drawText(title, x + 6, y + titlePadY, w - 12, 14, juce::Justification::centred);
|
||||
};
|
||||
|
||||
drawSubSection(10, 460, 510, 115, "DISTORTION", 6);
|
||||
drawSubSection(528, 460, 468, 115, "COMPRESSION", 6);
|
||||
drawSubSection(1004, 460, 268, 115, "PANNING", 6);
|
||||
drawSubSection(1280, 460, 370, 115, "LIMITER", 6);
|
||||
drawSubSection(10, 468, 510, 115, "DISTORTION", 6);
|
||||
drawSubSection(528, 468, 468, 115, "COMPRESSION", 6);
|
||||
drawSubSection(1004, 468, 268, 115, "PANNING", 6);
|
||||
drawSubSection(1280, 468, 370, 115, "LIMITER", 6);
|
||||
|
||||
// LFO sub-sections
|
||||
drawSubSection(10, 586, 540, 150, "LFO 1", 4);
|
||||
drawSubSection(560, 586, 530, 150, "LFO 2", 4);
|
||||
drawSubSection(10, 594, 464, 150, "LFO 1", 4);
|
||||
drawSubSection(480, 594, 464, 150, "LFO 2", 4);
|
||||
|
||||
// FX2 sub-sections
|
||||
drawSubSection(1015, 586, 375, 150, "DELAY", 4);
|
||||
drawSubSection(1395, 586, 255, 150, "REVERB", 4);
|
||||
drawSubSection(950, 594, 368, 150, "DELAY", 4);
|
||||
drawSubSection(1324, 594, 326, 150, "REVERB", 4);
|
||||
|
||||
// Arpeggiator section (replaces the removed spectrum analyzer)
|
||||
drawSubSection(860, 746, 790, 128, "ARPEGGIATOR", 6);
|
||||
drawSubSection(860, 754, 790, 128, "ARPEGGIATOR", 6);
|
||||
}
|
||||
|
||||
void MainContentComponent::resized() {
|
||||
auto sectionY = 84;
|
||||
auto sectionY = 92;
|
||||
auto knobSize = 112;
|
||||
auto knobSpacing = 10;
|
||||
auto labelH = 18;
|
||||
|
|
@ -1191,33 +1181,33 @@ void MainContentComponent::resized() {
|
|||
filterEnvAmtKnob.setBounds(1162 + (knobSize + knobSpacing) * 2, knobYF, knobSize, knobSize);
|
||||
keyTrackKnob.setBounds(1162 + (knobSize + knobSpacing) * 3, knobYF, knobSize, knobSize);
|
||||
|
||||
envLabel.setBounds(10, 294, 563, labelH);
|
||||
envLabel.setBounds(10, 302, 563, labelH);
|
||||
{
|
||||
int rowW = 4 * knobSize + 3 * knobSpacing;
|
||||
int sx = 10 + (563 - rowW) / 2;
|
||||
int knobYA = 304 + labelH + 6;
|
||||
int knobYA = 312 + labelH + 6;
|
||||
envAttackKnob.setBounds(sx, knobYA, knobSize, knobSize);
|
||||
envDecayKnob.setBounds(sx + (knobSize + knobSpacing), knobYA, knobSize, knobSize);
|
||||
envSustainKnob.setBounds(sx + (knobSize + knobSpacing) * 2, knobYA, knobSize, knobSize);
|
||||
envReleaseKnob.setBounds(sx + (knobSize + knobSpacing) * 3, knobYA, knobSize, knobSize);
|
||||
}
|
||||
|
||||
fEnvLabel.setBounds(583, 294, 502, labelH);
|
||||
fEnvLabel.setBounds(583, 302, 502, labelH);
|
||||
{
|
||||
int rowW = 4 * knobSize + 3 * knobSpacing;
|
||||
int sx = 583 + (502 - rowW) / 2;
|
||||
int knobYFE = 304 + labelH + 6;
|
||||
int knobYFE = 312 + labelH + 6;
|
||||
fEnvAttackKnob.setBounds(sx, knobYFE, knobSize, knobSize);
|
||||
fEnvDecayKnob.setBounds(sx + (knobSize + knobSpacing), knobYFE, knobSize, knobSize);
|
||||
fEnvSustainKnob.setBounds(sx + (knobSize + knobSpacing) * 2, knobYFE, knobSize, knobSize);
|
||||
fEnvReleaseKnob.setBounds(sx + (knobSize + knobSpacing) * 3, knobYFE, knobSize, knobSize);
|
||||
}
|
||||
|
||||
globalLabel.setBounds(1095, 294, 555, labelH);
|
||||
globalLabel.setBounds(1095, 302, 555, labelH);
|
||||
{
|
||||
int rowW = 4 * knobSize + 3 * knobSpacing;
|
||||
int sx = 1095 + (555 - rowW) / 2;
|
||||
int knobYM = 304 + labelH + 6;
|
||||
int knobYM = 312 + labelH + 6;
|
||||
panKnob.setBounds(sx, knobYM, knobSize, knobSize);
|
||||
driveKnob.setBounds(sx + (knobSize + knobSpacing), knobYM, knobSize, knobSize);
|
||||
masterKnob.setBounds(sx + (knobSize + knobSpacing) * 2, knobYM, knobSize, knobSize);
|
||||
|
|
@ -1225,7 +1215,7 @@ void MainContentComponent::resized() {
|
|||
}
|
||||
|
||||
// --- FX SECTION ---
|
||||
int fxY = 432;
|
||||
int fxY = 440;
|
||||
int fxKnobSize = 80;
|
||||
int fxLabelH = 16;
|
||||
int fxKnobY = fxY + 54; // sub-section y(476) + titlePad(6) + titleH(14) + bottomPad(6) + 4
|
||||
|
|
@ -1274,32 +1264,32 @@ void MainContentComponent::resized() {
|
|||
}
|
||||
|
||||
// --- LFO SECTION ---
|
||||
int lfoY = 566;
|
||||
int lfoY = 574;
|
||||
int lfoKnobSize = 80;
|
||||
int lfoKnobY = 586 + 4 + 14 + 6; // subSectionY + titlePad + titleH + bottomPad
|
||||
int lfoKnobY = 594 + 4 + 14 + 6; // subSectionY + titlePad + titleH + bottomPad
|
||||
|
||||
lfoLabel.setBounds(10, lfoY, 1080, fxLabelH);
|
||||
fx2Label.setBounds(1015, lfoY, 635, fxLabelH);
|
||||
lfoLabel.setBounds(10, lfoY, 934, fxLabelH);
|
||||
fx2Label.setBounds(950, lfoY, 700, fxLabelH);
|
||||
|
||||
// LFO 1 sub-section (X=15, Y=642, W=530, H=110)
|
||||
// LFO 1 sub-section (X=10, Y=642, W=464, H=110)
|
||||
lfo1RateKnob.setBounds(22, lfoKnobY, lfoKnobSize, lfoKnobSize);
|
||||
lfo1DepthKnob.setBounds(132, lfoKnobY, lfoKnobSize, lfoKnobSize);
|
||||
lfo1ShapeBox.setBounds(242, lfoKnobY + (lfoKnobSize - 28) / 2, 105, 28);
|
||||
lfo1DestBox.setBounds(357, lfoKnobY + (lfoKnobSize - 28) / 2, 105, 28);
|
||||
lfo1SyncLed.setBounds(22, lfoKnobY + lfoKnobSize + 6, 200, 28);
|
||||
|
||||
// LFO 2 sub-section (X=560, Y=642, W=530, H=110)
|
||||
lfo2RateKnob.setBounds(568, lfoKnobY, lfoKnobSize, lfoKnobSize);
|
||||
lfo2DepthKnob.setBounds(678, lfoKnobY, lfoKnobSize, lfoKnobSize);
|
||||
lfo2ShapeBox.setBounds(788, lfoKnobY + (lfoKnobSize - 28) / 2, 105, 28);
|
||||
lfo2DestBox.setBounds(903, lfoKnobY + (lfoKnobSize - 28) / 2, 105, 28);
|
||||
lfo2SyncLed.setBounds(568, lfoKnobY + lfoKnobSize + 6, 200, 28);
|
||||
// LFO 2 sub-section (X=480, Y=642, W=464, H=110)
|
||||
lfo2RateKnob.setBounds(492, lfoKnobY, lfoKnobSize, lfoKnobSize);
|
||||
lfo2DepthKnob.setBounds(602, lfoKnobY, lfoKnobSize, lfoKnobSize);
|
||||
lfo2ShapeBox.setBounds(712, lfoKnobY + (lfoKnobSize - 28) / 2, 105, 28);
|
||||
lfo2DestBox.setBounds(827, lfoKnobY + (lfoKnobSize - 28) / 2, 105, 28);
|
||||
lfo2SyncLed.setBounds(492, lfoKnobY + lfoKnobSize + 6, 200, 28);
|
||||
|
||||
// --- FX2 SECTION ---
|
||||
int fx2KnobY = lfoKnobY;
|
||||
|
||||
// Delay sub-section: TIME, FBACK, MIX, PING + sync combo
|
||||
int dx = 1020;
|
||||
int dx = 962;
|
||||
int dGap = lfoKnobSize + 8;
|
||||
delayTimeKnob.setBounds(dx, fx2KnobY, lfoKnobSize, lfoKnobSize);
|
||||
delayFbKnob.setBounds(dx + dGap, fx2KnobY, lfoKnobSize, lfoKnobSize);
|
||||
|
|
@ -1309,10 +1299,12 @@ void MainContentComponent::resized() {
|
|||
|
||||
// Reverb sub-section: SIZE, DAMP, MIX (right edge aligned to 1650)
|
||||
{
|
||||
int rx = 1402;
|
||||
int rx = 1336;
|
||||
reverbSizeKnob.setBounds(rx, fx2KnobY, lfoKnobSize, lfoKnobSize);
|
||||
reverbDampKnob.setBounds(rx + (lfoKnobSize + 4), fx2KnobY, lfoKnobSize, lfoKnobSize);
|
||||
reverbMixKnob.setBounds(rx + (lfoKnobSize + 4) * 2, fx2KnobY, lfoKnobSize, lfoKnobSize);
|
||||
// On/off LED on the right, filling the remaining space before the box edge
|
||||
reverbOnLed.setBounds(rx + (lfoKnobSize + 4) * 3, fx2KnobY, 1650 - (rx + (lfoKnobSize + 4) * 3), lfoKnobSize);
|
||||
}
|
||||
|
||||
// --- PRESET + SCALE (vertically centered within top section, y: 0..128) ---
|
||||
|
|
@ -1341,11 +1333,11 @@ void MainContentComponent::resized() {
|
|||
midiLabel.setBounds(1354, labelY2, 64, labelH2);
|
||||
midiLed.setBounds(1418, (headerH - 10) / 2, 10, 10);
|
||||
|
||||
scaleLabel.setBounds(1514, labelY2, 58, labelH2);
|
||||
uiScaleBox.setBounds(1574, comboY2, 80, comboH2);
|
||||
scaleLabel.setBounds(1499, labelY2, 58, labelH2);
|
||||
uiScaleBox.setBounds(1559, comboY2, 80, comboH2);
|
||||
|
||||
// Visualizer area
|
||||
int vizY = 746;
|
||||
int vizY = 754;
|
||||
int vizH = 128;
|
||||
vuMeter.setBounds(10, vizY, 40, vizH);
|
||||
waveformDisplay.setBounds(60, vizY, 790, vizH);
|
||||
|
|
@ -1384,7 +1376,7 @@ void MainContentComponent::resized() {
|
|||
}
|
||||
|
||||
// Piano roll
|
||||
pianoRoll.setBounds(10, 884, 1640, 136);
|
||||
pianoRoll.setBounds(10, 892, 1640, 136);
|
||||
}
|
||||
|
||||
// ===== PianoRollComponent =====
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue