fixes, changes to gitignore

This commit is contained in:
Armin 2026-07-24 18:03:15 +02:00
commit 11d81cf1fd
17 changed files with 1160 additions and 16 deletions

View file

@ -187,6 +187,32 @@ inline static const String CHORUS_CENTER_DELAY{ "Chorus Center Delay" };
inline static constexpr Range CHORUS_CENTER_DELAY_RANGE{ 0.f, 100.f }; // in ms
inline static const String CHORUS_MIX{ "Chorus Mix" };
// Modulation section parameters
inline static const String MOD_FILTER_TYPE{ "Mod Filter Type" };
inline static const StringArray MOD_FILTER_TYPE_LABELS{ "LP12", "LP24", "HP", "BP", "Notch" };
inline static const String MOD_FILTER_CUTOFF{ "Mod Filter Cutoff" };
inline static constexpr Range MOD_FILTER_CUTOFF_RANGE{ 20.f, 20000.f };
inline static const String MOD_FILTER_RESONANCE{ "Mod Filter Resonance" };
inline static const String MOD_LFO_RATE{ "Mod LFO Rate" };
inline static constexpr Range MOD_LFO_RATE_RANGE{ 0.05f, 30.f };
inline static const String MOD_LFO_SYNC{ "Mod LFO Sync" };
inline static const String MOD_LFO_SYNC_DIV{ "Mod LFO Sync Division" };
inline static const StringArray MOD_LFO_SYNC_DIV_LABELS{ "1/2", "1/3", "1/4" };
inline static const String MOD_LFO_WAVEFORM{ "Mod LFO Waveform" };
inline static const StringArray MOD_LFO_WAVEFORM_LABELS{ "Sine", "Tri", "Saw", "Sqr" };
inline static const String MOD_LFO_FILTER_DEPTH{ "Mod LFO Filter Depth" };
inline static const String MOD_LFO_SPEED_DEPTH{ "Mod LFO Speed Depth" };
inline static const String MOD_PHASER_ENABLED{ "Mod Phaser Enabled" };
inline static const String MOD_PHASER_DEPTH{ "Mod Phaser Depth" };
inline static const String MOD_PHASER_FEEDBACK{ "Mod Phaser Feedback" };
inline static const String MOD_PHASER_STAGES{ "Mod Phaser Stages" };
inline static const String MOD_RINGMOD_ENABLED{ "Mod Ring Mod Enabled" };
inline static const String MOD_RINGMOD_MIX{ "Mod Ring Mod Mix" };
inline static const String FX_PERM{ "FX Ordering" };
enum FxTypes : std::uint8_t
@ -210,9 +236,9 @@ inline std::array<FxTypes, 4> paramToPerm(int fxParam)
for (int i = 0; i < 4; i++)
{
int index = fxParam / factorial;
perm[i] = types[index];
perm[static_cast<size_t>(i)] = types[static_cast<size_t>(index)];
for (int j = index; j < 3; j++)
types[j] = types[j + 1];
types[static_cast<size_t>(j)] = types[static_cast<size_t>(j + 1)];
fxParam %= factorial;
if (i < 3)
factorial /= 3 - i;
@ -229,12 +255,12 @@ static int permToParam(std::array<FxTypes, 4> fxPerm)
for (int i = 0; i < 3; i++)
{
int type = fxPerm[i];
int index;
size_t index;
for (index = 0; index < types.size(); index++)
if (type == types[index])
break;
result += factorial * index;
for (int j = index; j < 3 - i; j++)
result += factorial * static_cast<int>(index);
for (size_t j = static_cast<size_t>(index); j < static_cast<size_t>(3 - i); j++)
types[j] = types[j + 1];
if (i < 3)
factorial /= 3 - i;
@ -286,7 +312,7 @@ inline void addBool(juce::AudioProcessorValueTreeState::ParameterLayout& layout,
layout.add(std::make_unique<juce::AudioParameterBool>(
juce::ParameterID{ identifier, versionNum }, identifier, defaultValue, juce::AudioParameterBoolAttributes{}.withStringFromValueFunction(formatFunc)
));
};
}
/** Utility to add a choice parameter to the layout */
inline void addChoice(juce::AudioProcessorValueTreeState::ParameterLayout& layout, const juce::String& identifier, int defaultIndex,
@ -432,6 +458,26 @@ inline juce::AudioProcessorValueTreeState::ParameterLayout createParameterLayout
addFloat(layout, CHORUS_CENTER_DELAY, 7.f, { CHORUS_CENTER_DELAY_RANGE, 1.f }, Version::V1, suffixF(" " + TIME_UNIT, 1.f));
addFloat(layout, CHORUS_MIX, 0.5f, { 0.f, 1.f, 0.01f }, Version::V1);
// Modulation section parameters
addChoice(layout, MOD_FILTER_TYPE, 0, MOD_FILTER_TYPE_LABELS, Version::V1_3_2);
addFloat(layout, MOD_FILTER_CUTOFF, 1000.f, addSkew({ 20.f, 20000.f, 1.f }, 1000.f), Version::V1_3_2, suffixF(" " + FREQUENCY_UNIT, 1.f));
addFloat(layout, MOD_FILTER_RESONANCE, 0.f, { 0.f, 1.f, 0.01f }, Version::V1_3_2);
addFloat(layout, MOD_LFO_RATE, 1.f, addSkew({ 0.05f, 30.f, 0.01f }, 1.f), Version::V1_3_2, suffixF(" " + FREQUENCY_UNIT, 0.01f));
addBool(layout, MOD_LFO_SYNC, false, Version::V1_3_2);
addChoice(layout, MOD_LFO_SYNC_DIV, 2, MOD_LFO_SYNC_DIV_LABELS, Version::V1_3_2);
addChoice(layout, MOD_LFO_WAVEFORM, 0, MOD_LFO_WAVEFORM_LABELS, Version::V1_3_2);
addFloat(layout, MOD_LFO_FILTER_DEPTH, 0.f, { 0.f, 1.f, 0.01f }, Version::V1_3_2);
addFloat(layout, MOD_LFO_SPEED_DEPTH, 0.f, { 0.f, 1.f, 0.01f }, Version::V1_3_2);
addBool(layout, MOD_PHASER_ENABLED, false, Version::V1_3_2);
addFloat(layout, MOD_PHASER_DEPTH, 0.5f, { 0.f, 1.f, 0.01f }, Version::V1_3_2);
addFloat(layout, MOD_PHASER_FEEDBACK, 0.f, { -0.95f, 0.95f, 0.01f }, Version::V1_3_2);
addInt(layout, MOD_PHASER_STAGES, 3, { 1, 6 }, Version::V1_3_2, suffixI(" stg"));
addBool(layout, MOD_RINGMOD_ENABLED, false, Version::V1_3_2);
addFloat(layout, MOD_RINGMOD_MIX, 0.5f, { 0.f, 1.f, 0.01f }, Version::V1_3_2);
// This is a dummy parameter to notify the host of state changes
addBool(layout, State::UI_DUMMY_PARAM, true, Version::V1, [](bool, int) -> String { return "Dummy Param"; });