rmx-19/Source/Params.h

51 lines
1.4 KiB
C
Raw Normal View History

#pragma once
#include <juce_audio_processors/juce_audio_processors.h>
namespace prm {
enum class Id : int {
osc1Wave, osc2Wave, detune, oscMix,
fltType, fltCutoff, fltRes, fltEnv, fltKey,
ampA, ampD, ampS, ampR,
fenvA, fenvD, fenvS, fenvR,
lfoRate, lfoShape, lfoDepth, lfoTarget,
fxType, fxAmt, fxTime,
vol, pan, poly, glide, tune,
2026-09-08 21:57:34 +02:00
hq,
arpOn, arpRate, arpPattern, arpOct, arpGate
};
2026-09-08 21:57:34 +02:00
constexpr int num = 35;
struct Desc {
const char* id;
const char* name;
const char* shortName;
float min, max, def;
bool discrete;
float fine, coarse;
};
const Desc& desc (Id id);
bool validId (int i);
juce::AudioProcessorValueTreeState::ParameterLayout createLayout();
juce::String formatParam (Id id, float v);
float changeParam (Id id, float cur, int dir, bool coarse);
const char* waveName (int w);
const char* fltTypeName (int t);
const char* lfoShapeName (int s);
const char* lfoTargetName (int t);
const char* fxTypeName (int t);
2026-09-08 21:57:34 +02:00
const char* arpRateName (int r);
const char* arpPatternName (int p);
constexpr int delaySyncCount = 11;
const char* delaySyncName (int s); // "OFF", "1/16", ...
double delaySyncBeats (int s); // beat multiple for sync delay
float delaySyncMaxTime(); // max delay seconds needed for slow sync
} // namespace prm