This commit is contained in:
Legaeli 2025-11-27 14:33:46 +01:00
parent 8a1db5f2f5
commit 5337ce85c3
4 changed files with 65 additions and 2 deletions

View File

@ -711,6 +711,58 @@ void CrystalizerEQAudioProcessorEditor::initPresetSystem() {
presetBox.setLookAndFeel(presetComboBoxLookAndFeel.get());
}
void CrystalizerEQAudioProcessorEditor::syncPresetBox() {
const auto currentPresetName = audioProcessor.getPresetName();
// Durch alle Items in der ComboBox gehen
for (int i = 0; i < presetBox.getNumItems(); ++i) {
if (presetBox.getItemText(i) == currentPresetName) {
presetBox.setSelectedId(i + 1, juce::dontSendNotification);
return;
}
}
presetBox.setSelectedId(1, juce::dontSendNotification);
}
void CrystalizerEQAudioProcessorEditor::syncAllButtonStates() {
// Peak Bypass Buttons
const bool peak1Bypassed = audioProcessor.apvts.getRawParameterValue("Peak1Bypass")->load() > 0.5f;
if (peak1Bypassed) {
disableLowMidBand(1.0f);
}
const bool peak2Bypassed = audioProcessor.apvts.getRawParameterValue("Peak2Bypass")->load() > 0.5f;
if (peak2Bypassed) {
disableMidBand(1.0f);
}
const bool peak3Bypassed = audioProcessor.apvts.getRawParameterValue("Peak3Bypass")->load() > 0.5f;
if (peak3Bypassed) {
disableHighMidBand(1.0f);
}
// Master Bypass
const bool masterBypassed = audioProcessor.apvts.getRawParameterValue("MasterBypass")->load() > 0.5f;
if (masterBypassed) {
disableEverything(1.0f);
}
// Crystalize Button - Icon-Opacity setzen
const bool crystalized = audioProcessor.apvts.getRawParameterValue("CrystalizeButton")->load() > 0.5f;
if (crystalized) {
svgToggleButtonLookAndFeel->activeIconOpacity = 1.0f;
svgToggleButtonLookAndFeel->passiveIconOpacity = 0.0f;
} else {
svgToggleButtonLookAndFeel->activeIconOpacity = 0.0f;
svgToggleButtonLookAndFeel->passiveIconOpacity = 1.0f;
}
crystalizeButton.repaint();
syncPresetBox();
}
//==============================================================================
CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor(CrystalizerEQAudioProcessor &p)
: AudioProcessorEditor(&p), audioProcessor(p), spectrumAnalyzer(p.audioFIFO, p) {
@ -736,6 +788,7 @@ CrystalizerEQAudioProcessorEditor::CrystalizerEQAudioProcessorEditor(Crystalizer
audioProcessor.apvts.addParameterListener("HighBandModes", this);
updateModeButtons();
syncAllButtonStates();
}
CrystalizerEQAudioProcessorEditor::~CrystalizerEQAudioProcessorEditor() {

View File

@ -382,5 +382,9 @@ private:
void parameterChanged(const juce::String& parameterID, float newValue) override;
void syncAllButtonStates();
void syncPresetBox();
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CrystalizerEQAudioProcessorEditor)
};

View File

@ -572,6 +572,7 @@ void CrystalizerEQAudioProcessor::loadPreset(const juce::String &preset) {
}
}
}
presetName = f.getFileNameWithoutExtension();
}
}
@ -595,7 +596,7 @@ void CrystalizerEQAudioProcessor::deletePreset(const juce::String &preset) const
}
}
void CrystalizerEQAudioProcessor::resetAllParameters() const {
void CrystalizerEQAudioProcessor::resetAllParameters() {
for (auto *p: getParameters()) {
if (p == nullptr) continue;
@ -606,6 +607,7 @@ void CrystalizerEQAudioProcessor::resetAllParameters() const {
ranged->endChangeGesture();
}
}
presetName = "Init";
}
void CrystalizerEQAudioProcessor::parameterChanged(const juce::String &id, float v) {
@ -808,6 +810,8 @@ juce::AudioProcessorEditor *CrystalizerEQAudioProcessor::createEditor() {
void CrystalizerEQAudioProcessor::getStateInformation(juce::MemoryBlock &destData) {
auto state = apvts.copyState();
std::unique_ptr<juce::XmlElement> xml(state.createXml());
xml->setAttribute("currentPreset", presetName);
copyXmlToBinary(*xml, destData);
}
@ -817,6 +821,8 @@ void CrystalizerEQAudioProcessor::setStateInformation(const void *data, int size
if (xmlState != nullptr) {
if (xmlState->hasTagName(apvts.state.getType())) {
apvts.replaceState(juce::ValueTree::fromXml(*xmlState));
presetName = xmlState->getStringAttribute("currentPreset", "Init");
}
}
}

View File

@ -103,7 +103,7 @@ public:
void deletePreset(const juce::String &preset) const;
void resetAllParameters() const;
void resetAllParameters();
bool lowCutActive = false;
bool highCutActive = false;