mirror of
https://codeberg.org/armin/chromaflock.git
synced 2026-09-01 04:10:47 +02:00
Fix rotary knob fader curve mapping functions, lower highpass frequency
in DSP
This commit is contained in:
parent
0beebaa46d
commit
8c0f55f1e7
4 changed files with 9 additions and 3 deletions
|
|
@ -21,7 +21,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void setCoefficients(float cutoff, float res, FilterType type) {
|
void setCoefficients(float cutoff, float res, FilterType type) {
|
||||||
cutoff = std::clamp(cutoff, 50.0f, static_cast<float>(sampleRate * 0.49));
|
cutoff = std::clamp(cutoff, 20.0f, static_cast<float>(sampleRate * 0.49));
|
||||||
resonance = std::clamp(res, 0.0f, 1.0f);
|
resonance = std::clamp(res, 0.0f, 1.0f);
|
||||||
filterType = type;
|
filterType = type;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -139,7 +139,7 @@ public:
|
||||||
if (lfo2Depth > 0.001f && lfo2Dest == LFODest::FilterCutoff)
|
if (lfo2Depth > 0.001f && lfo2Dest == LFODest::FilterCutoff)
|
||||||
modCutoff *= std::pow(2.0f, lfo2Out * 4.0f);
|
modCutoff *= std::pow(2.0f, lfo2Out * 4.0f);
|
||||||
|
|
||||||
modCutoff = std::clamp(modCutoff, 50.0f, static_cast<float>(getSampleRate() * 0.49));
|
modCutoff = std::clamp(modCutoff, 20.0f, static_cast<float>(getSampleRate() * 0.49));
|
||||||
|
|
||||||
filter.setCoefficients(modCutoff, filterResonance, filterType);
|
filter.setCoefficients(modCutoff, filterResonance, filterType);
|
||||||
filterR.setCoefficients(modCutoff, filterResonance, filterType);
|
filterR.setCoefficients(modCutoff, filterResonance, filterType);
|
||||||
|
|
|
||||||
|
|
@ -513,6 +513,7 @@ MainContentComponent::MainContentComponent(ChromaFlockProcessor& p)
|
||||||
setupLabel(filterLabel, "FILTER");
|
setupLabel(filterLabel, "FILTER");
|
||||||
setupCB(filterTypeBox, filterTypeAttach, "filterType", {"LP 12dB", "LP 24dB", "Band Pass", "High Pass", "Notch"});
|
setupCB(filterTypeBox, filterTypeAttach, "filterType", {"LP 12dB", "LP 24dB", "Band Pass", "High Pass", "Notch"});
|
||||||
setupParam(filterCutoffKnob, filterCutoffAttach, "filterCutoff", "CUTOFF");
|
setupParam(filterCutoffKnob, filterCutoffAttach, "filterCutoff", "CUTOFF");
|
||||||
|
filterCutoffKnob.setNumDecimalPlacesToDisplay(1);
|
||||||
setupParam(filterResKnob, filterResAttach, "filterRes", "RES");
|
setupParam(filterResKnob, filterResAttach, "filterRes", "RES");
|
||||||
setupParam(filterEnvAmtKnob, filterEnvAmtAttach, "filterEnvAmt", "ENV AMT");
|
setupParam(filterEnvAmtKnob, filterEnvAmtAttach, "filterEnvAmt", "ENV AMT");
|
||||||
setupParam(keyTrackKnob, keyTrackAttach, "keyTrack", "KEY TRK");
|
setupParam(keyTrackKnob, keyTrackAttach, "keyTrack", "KEY TRK");
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,12 @@ juce::AudioProcessorValueTreeState::ParameterLayout ChromaFlockProcessor::create
|
||||||
juce::StringArray{"LP 12dB", "LP 24dB", "Band Pass", "High Pass", "Notch"}, 0));
|
juce::StringArray{"LP 12dB", "LP 24dB", "Band Pass", "High Pass", "Notch"}, 0));
|
||||||
layout.add(std::make_unique<juce::AudioParameterFloat>(
|
layout.add(std::make_unique<juce::AudioParameterFloat>(
|
||||||
juce::ParameterID{"filterCutoff", 1}, "Filter Cutoff",
|
juce::ParameterID{"filterCutoff", 1}, "Filter Cutoff",
|
||||||
juce::NormalisableRange<float>(50.0f, 20000.0f, 0.1f, 0.25f), 8000.0f));
|
juce::NormalisableRange<float>(
|
||||||
|
20.0f, 20000.0f,
|
||||||
|
[](float start, float end, float n) { return start * std::pow(end / start, n); },
|
||||||
|
[](float start, float end, float v) { return std::log(v / start) / std::log(end / start); },
|
||||||
|
[](float, float, float v) { return v; }),
|
||||||
|
8000.0f));
|
||||||
layout.add(std::make_unique<juce::AudioParameterFloat>(
|
layout.add(std::make_unique<juce::AudioParameterFloat>(
|
||||||
juce::ParameterID{"filterRes", 1}, "Filter Resonance", zeroOne, 0.2f));
|
juce::ParameterID{"filterRes", 1}, "Filter Resonance", zeroOne, 0.2f));
|
||||||
layout.add(std::make_unique<juce::AudioParameterFloat>(
|
layout.add(std::make_unique<juce::AudioParameterFloat>(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue