Skip to content

Commit

Permalink
Change parameter range for most continuous params to 0..10 (#6)
Browse files Browse the repository at this point in the history
Instead of having 0.0 .. 1.0 as the range for continuous parameters,
change to using 0 .. 10 which looks better in the GUI.

Exceptions:
- Filter tracking is still 0..1 (and should be increased to
  a maximum of 1.5 perhaps)?
- Osc detune is still 0..1 (because it is in semitones, just like
  pitch).
  - However, it has been changed to be linear rather than log,
    so that the indicated value is in actual semitones.
    In Zynthian, the resolution is good enough, and means
    that the top end of the range is usable too (for negative
    detune, with pitch set one semitone lower).
- Tune is -1..1 (because it is +/-1 one semitone).

Also leave the unused1 and unused2 parameters at 0..1 .

In conjunction with this, change the proc/process function name
prefix to set for all parameter setting functions.
  • Loading branch information
Ricard Wanderlof committed Apr 7, 2024
1 parent fbb7117 commit ec2de6a
Show file tree
Hide file tree
Showing 5 changed files with 214 additions and 211 deletions.
5 changes: 3 additions & 2 deletions plugins/mimid/Engine/AudioUtils.h
Expand Up @@ -113,16 +113,17 @@ inline static float tptlpc(float &state, float inp, float lpc)

inline static float linsc(float param,const float min,const float max)
{
return (param) * (max - min) + min;
return (param * 0.1) * (max - min) + min;
}

inline static float logsc(float param, const float min,const float max,const float rolloff = 19.0f)
{
return ((expf(param * logf(rolloff+1)) - 1.0f) / (rolloff)) * (max-min) + min;
return ((expf(param * 0.1 * logf(rolloff+1)) - 1.0f) / (rolloff)) * (max-min) + min;
}

inline static float timesc(float param, const float min, const float max)
{
param *= 0.1;
param *= param * param * param * param; // param ** 5
return param * (max - min) + min;
}
2 changes: 1 addition & 1 deletion plugins/mimid/Engine/Lfo.h
Expand Up @@ -241,7 +241,7 @@ class Lfo
void recalcRate(float param)
{
const int ratesCount = 9;
int parval = (int)(param*(ratesCount-1));
int parval = (int)(param * (ratesCount - 1) / 10);
float rt = 1;
switch(parval)
{
Expand Down
164 changes: 82 additions & 82 deletions plugins/mimid/Engine/ParamDefs.h
Expand Up @@ -40,7 +40,7 @@
// ParamsEnum.h extracts the symbol (first parameter) in the macros
// in order to create enums, like the Parameters enum (order is
// important),
// MiMi-d.cpp sets up the process callbacks, and names and symbols
// MiMi-d.cpp sets up the set callbacks, and names and symbols
// of the parameters (and in this case the order is not important).

// Parameter groups
Expand Down Expand Up @@ -93,136 +93,136 @@
// Parameters

// Main
PARAM(VOLUME, PG_MAIN, SP_NONE, "Volume", "volume", 0.0, 1.0, 0.5, processVolume)
PARAM(PORTAMENTO, PG_MAIN, SP_NONE, "Portamento", "portamento", 0.0, 1.0, 0.0, processPortamento)
PARAM(TUNE, PG_MAIN, SP_NONE, "Tune", "tune", 0.0, 1.0, 0.5, processTune)
PARAM(OCTAVE, PG_MAIN, SP_OCTAVE, "Octave", "octave", 0.0, SP_MAX, 2, processOctave)
PARAM(VOLUME, PG_MAIN, SP_NONE, "Volume", "volume", 0, 10, 5, setVolume)
PARAM(PORTAMENTO, PG_MAIN, SP_NONE, "Portamento", "portamento", 0, 10, 0, setPortamento)
PARAM(TUNE, PG_MAIN, SP_NONE, "Tune", "tune", -1.0, 1.0, 0.0, setTune)
PARAM(OCTAVE, PG_MAIN, SP_OCTAVE, "Octave", "octave", 0, SP_MAX, 2, setOctave)

// Key assignment #1 (general)
PARAM(VOICE_COUNT, PG_KEYASGN, SP_VOICECOUNT, "VoiceCount", "voicecount", 0.0, SP_MAX, 5, setVoiceCount)
PARAM(ASGN_MODE, PG_KEYASGN, SP_ASGNMODE, "Assign Mode", "keyasgnmode", 0.0, SP_MAX, 0.0, processKeyAsgnMode)
PARAM(VOICE_COUNT, PG_KEYASGN, SP_VOICECOUNT, "VoiceCount", "voicecount", 0, SP_MAX, 5, setVoiceCount)
PARAM(ASGN_MODE, PG_KEYASGN, SP_ASGNMODE, "Assign Mode", "keyasgnmode", 0, SP_MAX, 0, setKeyAsgnMode)
// Envelope reset
PARAM(ENV_RST, PG_KEYASGN, SP_ENVRST, "Envelope Attack", "envrst", 0.0, SP_MAX, 0.0, procEnvRst)
PARAM(ENV_RST, PG_KEYASGN, SP_ENVRST, "Envelope Attack", "envrst", 0, SP_MAX, 0, setEnvRst)
// Single trig: behavior during rob and restore
PARAM(ASGN_STRG, PG_KEYASGN, SP_ASGNSTRG, "Single Trig", "keyassignstrg", 0.0, SP_MAX, 0.0, procKeyAsgnStrg)
PARAM(ASGN_STRG, PG_KEYASGN, SP_ASGNSTRG, "Single Trig", "keyassignstrg", 0, SP_MAX, 0, setKeyAsgnStrg)

// Key assignment #2 (modes)
// ReSet to Zero (lowest) voice (default cyclic)
PARAM(ASGN_RSZ, PG_KEYASGN, SP_CYCRSZ, "Assign Order", "keyassignrsz", 0.0, SP_MAX, 0.0, procKeyAsgnRsz)
PARAM(ASGN_RSZ, PG_KEYASGN, SP_CYCRSZ, "Assign Order", "keyassignrsz", 0, SP_MAX, 0, setKeyAsgnRsz)
// Prefer assign to voice previously with same note
PARAM(ASGN_MEM, PG_KEYASGN, SP_ASGNMEM, "Assign Memory", "keyassignmem", 0.0, SP_MAX, 0.0, procKeyAsgnMem)
PARAM(ASGN_MEM, PG_KEYASGN, SP_ASGNMEM, "Assign Memory", "keyassignmem", 0, SP_MAX, 0, setKeyAsgnMem)
// Rob a playing voice if no unplaying available
// two modes: oldest (O) and next-to-lowest (NL)
PARAM(ASGN_ROB, PG_KEYASGN, SP_ASGNROB, "Voice Rob", "keyassignrob", 0.0, SP_MAX, 0.0, procKeyAsgnRob)
PARAM(ASGN_ROB, PG_KEYASGN, SP_ASGNROB, "Voice Rob", "keyassignrob", 0, SP_MAX, 0, setKeyAsgnRob)
// Restore mode: Store notes until voice available
PARAM(ASGN_RES, PG_KEYASGN, SP_ASGNRES, "Voice Restore", "keyassignres", 0.0, SP_MAX, 0.0, procKeyAsgnRes)
PARAM(ASGN_RES, PG_KEYASGN, SP_ASGNRES, "Voice Restore", "keyassignres", 0, SP_MAX, 0, setKeyAsgnRes)

// Bend
PARAM(BENDRANGE, PG_BEND, SP_BENDRANGE, "Range", "bendrange", 0.0, SP_MAX, 0.0, procPitchWheelAmount)
PARAM(BENDDEST, PG_BEND, SP_BENDDEST, "Dest", "benddest", 0.0, SP_MAX, 0.0, procPitchWheelDest)
PARAM(BENDRANGE, PG_BEND, SP_BENDRANGE, "Range", "bendrange", 0, SP_MAX, 0, setPitchWheelAmount)
PARAM(BENDDEST, PG_BEND, SP_BENDDEST, "Dest", "benddest", 0, SP_MAX, 0, setPitchWheelDest)

// LFO1 #1 (main: freq, wave, basic amount)
PARAM(LFO1FREQ, PG_LFO1, SP_NONE, "Rate", "lfo1rate", 0.0, 1.0, 0.0, processLfo1Frequency)
PARAM(LFO1WAVE, PG_LFO1, SP_LFOWAVE, "Wave", "lfo1wave", 0.0, SP_MAX, 0.0, processLfo1Wave)
PARAM(LFO1AMT, PG_LFO1, SP_NONE, "Iniital Amount", "lfo1amount", 0.0, 1.0, 0.0, processLfo1Amt)
PARAM(LFO1DEST, PG_LFO1, SP_LFODEST, "Dest", "lfo1dest", 0.0, SP_MAX, 0.0, processLfo1Dest)
PARAM(LFO1FREQ, PG_LFO1, SP_NONE, "Rate", "lfo1rate", 0, 10, 0, setLfo1Frequency)
PARAM(LFO1WAVE, PG_LFO1, SP_LFOWAVE, "Wave", "lfo1wave", 0, SP_MAX, 0, setLfo1Wave)
PARAM(LFO1AMT, PG_LFO1, SP_NONE, "Iniital Amount", "lfo1amount", 0, 10, 0, setLfo1Amt)
PARAM(LFO1DEST, PG_LFO1, SP_LFODEST, "Dest", "lfo1dest", 0, SP_MAX, 0, setLfo1Dest)
// LFO1 #2 (secondary: sync, controllers, polarity)
PARAM(LFO1_CONTRAMT, PG_LFO1, SP_NONE, "Controller Amount", "lfo1contramt", 0.0, 1.0, 0.0, procLfo1ControllerAmt)
PARAM(LFO1_AMT_CTRL, PG_LFO1, SP_LFOCONTR, "Controller", "lfo1amtcont", 0.0, SP_MAX, 0.0, procLfo1Controller)
PARAM(LFO1_POLARITY, PG_LFO1, SP_POLARITY, "Polarity", "lfo1polarity", 0.0, SP_MAX, 0.0, procLfo1Polarity)
PARAM(LFO1SYNC, PG_LFO1, SP_LFOSYNC, "Sync", "lfo1sync", 0.0, SP_MAX, 0.0, procLfo1Sync)
PARAM(LFO1_CONTRAMT, PG_LFO1, SP_NONE, "Controller Amount", "lfo1contramt", 0, 10, 0, setLfo1ControllerAmt)
PARAM(LFO1_AMT_CTRL, PG_LFO1, SP_LFOCONTR, "Controller", "lfo1amtcont", 0, SP_MAX, 0, setLfo1Controller)
PARAM(LFO1_POLARITY, PG_LFO1, SP_POLARITY, "Polarity", "lfo1polarity", 0, SP_MAX, 0, setLfo1Polarity)
PARAM(LFO1SYNC, PG_LFO1, SP_LFOSYNC, "Sync", "lfo1sync", 0, SP_MAX, 0, setLfo1Sync)

// LFO2 #1 (main: freq, wave, basic amount)
PARAM(LFO2FREQ, PG_LFO2, SP_NONE, "Rate", "lfo2frequency", 0.0, 1.0, 0.6, processLfo2Frequency)
PARAM(LFO2WAVE, PG_LFO2, SP_LFOWAVE, "Wave", "lfo2wave", 0.0, SP_MAX, 0.0, processLfo2Wave)
PARAM(LFO2AMT, PG_LFO2, SP_NONE, "Iniital Amount", "lfo2amount", 0.0, 1.0, 0.0, processLfo2Amt)
PARAM(LFO2DEST, PG_LFO2, SP_LFODEST, "Dest", "lfo2dest", 0.0, SP_MAX, 0.0, processLfo2Dest)
PARAM(LFO2FREQ, PG_LFO2, SP_NONE, "Rate", "lfo2frequency", 0, 10, 6, setLfo2Frequency)
PARAM(LFO2WAVE, PG_LFO2, SP_LFOWAVE, "Wave", "lfo2wave", 0, SP_MAX, 0, setLfo2Wave)
PARAM(LFO2AMT, PG_LFO2, SP_NONE, "Iniital Amount", "lfo2amount", 0, 10, 0, setLfo2Amt)
PARAM(LFO2DEST, PG_LFO2, SP_LFODEST, "Dest", "lfo2dest", 0, SP_MAX, 0, setLfo2Dest)
// LFO2 #2 (secondary: sync, controllers, polarity)
PARAM(LFO2_CONTRAMT, PG_LFO2, SP_NONE, "Controller Amount", "lfo2contramt", 0.0, 1.0, 0.0, procLfo2ControllerAmt)
PARAM(LFO2_AMT_CTRL, PG_LFO2, SP_LFOCONTR, "Controller", "lfo2amtcont", 0.0, SP_MAX, 0.0, procLfo2Controller)
PARAM(LFO2_POLARITY, PG_LFO2, SP_POLARITY, "Polarity", "lfo2polarity", 0.0, SP_MAX, 0.0, procLfo2Polarity)
PARAM(LFO2SYNC, PG_LFO2, SP_LFOSYNC, "Sync", "lfo2sync", 0.0, SP_MAX, 0.0, procLfo2Sync)
PARAM(LFO2_CONTRAMT, PG_LFO2, SP_NONE, "Controller Amount", "lfo2contramt", 0, 10, 0, setLfo2ControllerAmt)
PARAM(LFO2_AMT_CTRL, PG_LFO2, SP_LFOCONTR, "Controller", "lfo2amtcont", 0, SP_MAX, 0, setLfo2Controller)
PARAM(LFO2_POLARITY, PG_LFO2, SP_POLARITY, "Polarity", "lfo2polarity", 0, SP_MAX, 0, setLfo2Polarity)
PARAM(LFO2SYNC, PG_LFO2, SP_LFOSYNC, "Sync", "lfo2sync", 0, SP_MAX, 0, setLfo2Sync)

// Osc 1
PARAM(OSC1_DET, PG_OSC1, SP_NONE, "Detune", "osc1detune", 0.0, 1.0, 0.0, processOsc1Det)
PARAM(OSC1P, PG_OSC1, SP_OSCFREQ, "Pitch", "osc1pitch", 0.0, SP_MAX, 0.0, processOsc1Pitch)
PARAM(OSC1PW, PG_OSC1, SP_NONE, "PulseWidth", "osc1pw", 0.0, 1.0, 0.0, processOsc1PulseWidth)
PARAM(OSC1WAVE, PG_OSC1, SP_OSCWAVE, "Wave", "osc1wave", 0.0, SP_MAX, 1.0, processOsc1Wave)
PARAM(OSC1_DET, PG_OSC1, SP_NONE, "Detune", "osc1detune", 0.0, 1.0, 0.0, setOsc1Det)
PARAM(OSC1P, PG_OSC1, SP_OSCFREQ, "Pitch", "osc1pitch", 0, SP_MAX, 0, setOsc1Pitch)
PARAM(OSC1PW, PG_OSC1, SP_NONE, "PulseWidth", "osc1pw", 0, 10, 0, setOsc1PulseWidth)
PARAM(OSC1WAVE, PG_OSC1, SP_OSCWAVE, "Wave", "osc1wave", 0, SP_MAX, 0, setOsc1Wave)

// Osc 2
PARAM(OSC2_DET, PG_OSC2, SP_NONE, "Detune", "osc2detune", 0.0, 1.0, 0.0, processOsc2Det)
PARAM(OSC2P, PG_OSC2, SP_OSCFREQ, "Pitch", "osc2pitch", 0.0, SP_MAX, 0.0, processOsc2Pitch)
PARAM(OSC2PW, PG_OSC2, SP_NONE, "PulseWidth", "osc2pw", 0.0, 1.0, 0.0, processOsc2PulseWidth)
PARAM(OSC2WAVE, PG_OSC2, SP_OSCWAVE, "Wave", "osc2wave", 0.0, SP_MAX, 1.0, processOsc2Wave)
PARAM(OSC2_DET, PG_OSC2, SP_NONE, "Detune", "osc2detune", 0.0, 1.0, 0.0, setOsc2Det)
PARAM(OSC2P, PG_OSC2, SP_OSCFREQ, "Pitch", "osc2pitch", 0, SP_MAX, 0, setOsc2Pitch)
PARAM(OSC2PW, PG_OSC2, SP_NONE, "PulseWidth", "osc2pw", 0, 10, 0, setOsc2PulseWidth)
PARAM(OSC2WAVE, PG_OSC2, SP_OSCWAVE, "Wave", "osc2wave", 0, SP_MAX, 1, setOsc2Wave)

// Osc common (osc modulation and key sync)
PARAM(XMOD, PG_OSC_COM, SP_NONE, "Xmod", "xmod", 0.0, 1.0, 0.0, processOsc2Xmod)
PARAM(OSC2FLTMOD, PG_OSC_COM, SP_NONE, "Osc2FilterMod", "osc2filtermod", 0.0, 1.0, 0.0, processOsc2FltMod)
PARAM(OSCSYNC_LEVEL, PG_OSC_COM, SP_NONE, "SyncLevel", "synclevel", 0.0, 1.0, 0.0, processOsc2SyncLevel)
PARAM(OSC_KEY_SYNC, PG_OSC_COM, SP_KEYSYNC, "Waveform Reset", "osckeysync", 0.0, SP_MAX, 0.0, procOscKeySync)
PARAM(XMOD, PG_OSC_COM, SP_NONE, "Xmod", "xmod", 0, 10, 0, setOsc2Xmod)
PARAM(OSC2FLTMOD, PG_OSC_COM, SP_NONE, "Osc2FilterMod", "osc2filtermod", 0, 10, 0, setOsc2FltMod)
PARAM(OSCSYNC_LEVEL, PG_OSC_COM, SP_NONE, "SyncLevel", "synclevel", 0, 10, 0, setOsc2SyncLevel)
PARAM(OSC_KEY_SYNC, PG_OSC_COM, SP_KEYSYNC, "Waveform Reset", "osckeysync", 0, SP_MAX, 0, setOscKeySync)

// Mixer and osc 3
PARAM(OSC1MIX, PG_MIXER, SP_NONE, "Osc1Mix", "osc1mix", 0.0, 1.0, 0.0, processOsc1Mix)
PARAM(OSC2MIX, PG_MIXER, SP_NONE, "Osc2Mix", "osc2mix", 0.0, 1.0, 1.0, processOsc2Mix)
PARAM(OSC3MIX, PG_MIXER, SP_NONE, "Osc3Mix", "osc3mix", 0.0, 1.0, 0.0, processOsc3Mix)
PARAM(OSC3WAVE, PG_MIXER, SP_OSC3WAVE, "Osc3Wave", "osc3wave",0.0, SP_MAX, 0.0, processOsc3Wave)
PARAM(OSC1MIX, PG_MIXER, SP_NONE, "Osc1Mix", "osc1mix", 0, 10, 0, setOsc1Mix)
PARAM(OSC2MIX, PG_MIXER, SP_NONE, "Osc2Mix", "osc2mix", 0, 10, 10, setOsc2Mix)
PARAM(OSC3MIX, PG_MIXER, SP_NONE, "Osc3Mix", "osc3mix", 0, 10, 0, setOsc3Mix)
PARAM(OSC3WAVE, PG_MIXER, SP_OSC3WAVE, "Osc3Wave", "osc3wave", 0, SP_MAX, 0, setOsc3Wave)

// Filter
PARAM(CUTOFF, PG_FILTER, SP_NONE, "Cutoff", "cutoff", 0.0, 1.0, 1.0, processCutoff)
PARAM(RESONANCE, PG_FILTER, SP_NONE, "Resonance", "resonance", 0.0, 1.0, 0.0, processResonance)
PARAM(FLT_KF, PG_FILTER, SP_NONE, "KeyTrack", "keytrack", 0.0, 1.0, 0.0, processFilterKeyFollow)
PARAM(ENVELOPE_AMT, PG_FILTER, SP_NONE, "EnvAmount", "filterenvamount", 0.0, 1.0, 0.0, processFilterEnvelopeAmt)
PARAM(CUTOFF, PG_FILTER, SP_NONE, "Cutoff", "cutoff", 0, 10, 10, setCutoff)
PARAM(RESONANCE, PG_FILTER, SP_NONE, "Resonance", "resonance", 0, 10, 0, setResonance)
PARAM(FLT_KF, PG_FILTER, SP_NONE, "KeyTrack", "keytrack", 0.0, 1.0, 0.0, setFilterKeyFollow)
PARAM(ENVELOPE_AMT, PG_FILTER, SP_NONE, "EnvAmount", "filterenvamount", 0, 10, 0, setFilterEnvelopeAmt)

// Filter configuration
PARAM(RESPONSE, PG_FILTERCFG, SP_NONE, "Pole Count", "response", 1.0, 4.0, 4.0, processResponse)
PARAM(FENV_INVERT, PG_FILTERCFG, SP_ONOFF, "Env Invert", "fenvinvert", 0.0, SP_MAX, 0.0, processInvertFenv)
PARAM(FENV_LINEAR, PG_FILTERCFG, SP_ONOFF, "Linear Env", "fenvlinear", 0.0, SP_MAX, 0.0, procFenvLinear)
PARAM(RESPONSE, PG_FILTERCFG, SP_NONE, "Pole Count", "response", 1, 4, 4, setResponse)
PARAM(FENV_INVERT, PG_FILTERCFG, SP_ONOFF, "Env Invert", "fenvinvert", 0, SP_MAX, 0, setInvertFenv)
PARAM(FENV_LINEAR, PG_FILTERCFG, SP_ONOFF, "Linear Env", "fenvlinear", 0, SP_MAX, 0, setFenvLinear)

// FENV
PARAM(FATK, PG_FENV, SP_NONE, "Attack", "filterattack", 0.0, 1.0, 0.0, processFilterEnvelopeAttack)
PARAM(FDEC, PG_FENV, SP_NONE, "Decay", "filterdecay", 0.0, 1.0, 0.0, processFilterEnvelopeDecay)
PARAM(FSUS, PG_FENV, SP_NONE, "Sustain", "filtersustain", 0.0, 1.0, 1.0, processFilterEnvelopeSustain)
PARAM(FSUST, PG_FENV, SP_NONE, "SustainTime", "filtersustaintime", 0.0, 1.0, 1.0, processFilterEnvelopeSustainTime)
PARAM(FATK, PG_FENV, SP_NONE, "Attack", "filterattack", 0, 10, 0, setFilterEnvelopeAttack)
PARAM(FDEC, PG_FENV, SP_NONE, "Decay", "filterdecay", 0, 10, 0, setFilterEnvelopeDecay)
PARAM(FSUS, PG_FENV, SP_NONE, "Sustain", "filtersustain", 0, 10, 10, setFilterEnvelopeSustain)
PARAM(FSUST, PG_FENV, SP_NONE, "SustainTime", "filtersustaintime", 0, 10, 10, setFilterEnvelopeSustainTime)

// LENV
PARAM(LATK, PG_LENV, SP_NONE, "Attack", "attack", 0.0, 1.0, 0.0, processLoudnessEnvelopeAttack)
PARAM(LDEC, PG_LENV, SP_NONE, "Decay", "decay", 0.0, 1.0, 0.0, processLoudnessEnvelopeDecay)
PARAM(LSUS, PG_LENV, SP_NONE, "Sustain", "sustain", 0.0, 1.0, 1.0, processLoudnessEnvelopeSustain)
PARAM(LSUST, PG_LENV, SP_NONE, "SustainTime", "sustaintime", 0.0, 1.0, 1.0, processLoudnessEnvelopeSustainTime)
PARAM(LATK, PG_LENV, SP_NONE, "Attack", "attack", 0, 10, 0, setLoudnessEnvelopeAttack)
PARAM(LDEC, PG_LENV, SP_NONE, "Decay", "decay", 0, 10, 0, setLoudnessEnvelopeDecay)
PARAM(LSUS, PG_LENV, SP_NONE, "Sustain", "sustain", 0, 10, 10, setLoudnessEnvelopeSustain)
PARAM(LSUST, PG_LENV, SP_NONE, "SustainTime", "sustaintime", 0, 10, 10, setLoudnessEnvelopeSustainTime)

// Env release
PARAM(FREL, PG_REL, SP_NONE, "Filter Release", "filterrelease", 0.0, 1.0, 0.0, processFilterEnvelopeRelease)
PARAM(LREL, PG_REL, SP_NONE, "Loudness Release", "release", 0.0, 1.0, 0.0, processLoudnessEnvelopeRelease)
PARAM(FREL, PG_REL, SP_NONE, "Filter Release", "filterrelease", 0, 10, 0, setFilterEnvelopeRelease)
PARAM(LREL, PG_REL, SP_NONE, "Loudness Release", "release", 0, 10, 0, setLoudnessEnvelopeRelease)

// VCA (+ Loudness envelope control)
PARAM(HPFFREQ, PG_VCA, SP_NONE, "HPFfreq", "hpffreq", 0.0, 1.0, 0.0, processHPFfreq)
PARAM(VCADRIVE, PG_VCA, SP_NONE, "VCADrive", "vcadrive", 0.0, 1.0, 0.0, processVCADrive)
PARAM(ENV_MODE, PG_VCA, SP_ENVMODE, "EnvMode", "envmode", 0.0, SP_MAX, 0.0, procEnvMode)
PARAM(HPFFREQ, PG_VCA, SP_NONE, "HPFfreq", "hpffreq", 0, 10, 0, setHPFfreq)
PARAM(VCADRIVE, PG_VCA, SP_NONE, "VCADrive", "vcadrive", 0, 10, 0, setVCADrive)
PARAM(ENV_MODE, PG_VCA, SP_ENVMODE, "EnvMode", "envmode", 0, SP_MAX, 0, setEnvMode)

// Controller sensitivity and control (velocity and aftertouch)
PARAM(VEL_SCALE, PG_CONTR, SP_NONE, "Velocity Scale", "velocityscale", 0.0, 1.0, 0.0, procVelocityScale)
PARAM(AT_SCALE, PG_CONTR, SP_NONE, "AfterTouch Scale", "aftertouchscale", 0.0, 1.0, 0.0, procAfterTouchScale)
PARAM(VFLTENV, PG_CONTR, SP_NONE, "FilterEnv Velocity", "vfltfactor", 0.0, 1.0, 0.0, procFltVelocityAmount)
PARAM(VAMPENV, PG_CONTR, SP_NONE, "Amp Velocity", "vampfactor", 0.0, 1.0, 0.0, procAmpVelocityAmount)
PARAM(VEL_SCALE, PG_CONTR, SP_NONE, "Velocity Scale", "velocityscale", 0, 10, 5, setVelocityScale)
PARAM(AT_SCALE, PG_CONTR, SP_NONE, "AfterTouch Scale", "aftertouchscale", 0, 10, 5, setAfterTouchScale)
PARAM(VFLTENV, PG_CONTR, SP_NONE, "FilterEnv Velocity", "vfltfactor", 0, 10, 0, setFltVelocityAmount)
PARAM(VAMPENV, PG_CONTR, SP_NONE, "Amp Velocity", "vampfactor", 0, 10, 0, setAmpVelocityAmount)

// Spread control
// #1 (freqs and levels)
PARAM(UDET, PG_SPREAD, SP_NONE, "OscSpread", "oscspread", 0.0, 1.0, 0.2, processOscSpread)
PARAM(FILTERDER, PG_SPREAD, SP_NONE, "FilterSpread", "filtespread", 0.0, 1.0, 0.3, processFilterSpread)
PARAM(LEVEL_DIF, PG_SPREAD, SP_NONE, "LevelSpread", "levelspread", 0.0, 1.0, 0.3, processLoudnessSpread)
PARAM(PANSPREAD, PG_SPREAD, SP_NONE, "PanSpread", "panspread", 0.0, 1.0, 0.1, processPanSpread)
PARAM(UDET, PG_SPREAD, SP_NONE, "OscSpread", "oscspread", 0, 10, 2, setOscSpread)
PARAM(FILTERDER, PG_SPREAD, SP_NONE, "FilterSpread", "filtespread", 0, 10, 3, setFilterSpread)
PARAM(LEVEL_DIF, PG_SPREAD, SP_NONE, "LevelSpread", "levelspread", 0, 10, 3, setLoudnessSpread)
PARAM(PANSPREAD, PG_SPREAD, SP_NONE, "PanSpread", "panspread", 0, 10, 1, setPanSpread)
// #2 (times and speeds)
PARAM(ENVDER, PG_SPREAD, SP_NONE, "EnvelopeSpread", "envelopspread", 0.0, 1.0, 0.0, processEnvelopeSpread)
PARAM(PORTADER, PG_SPREAD, SP_NONE, "PortamentoSpread", "portamentospread", 0.0, 1.0, 0.3, processPortamentoSpread)
PARAM(LFOSPREAD, PG_SPREAD, SP_NONE, "LfoSpread", "lfospread", 0.0, 1.0, 0.0, processLfoSpread)
PARAM(ENVDER, PG_SPREAD, SP_NONE, "EnvelopeSpread", "envelopspread", 0, 10, 0, setEnvelopeSpread)
PARAM(PORTADER, PG_SPREAD, SP_NONE, "PortamentoSpread", "portamentospread", 0, 10, 3, setPortamentoSpread)
PARAM(LFOSPREAD, PG_SPREAD, SP_NONE, "LfoSpread", "lfospread", 0, 10, 0, setLfoSpread)

// DSP control
PARAM(OVERSAMPLE, PG_DSP, SP_ONOFF, "Oversample", "oversample", 0.0, SP_MAX, 1.0, processOversampling)
PARAM(ECONOMY_MODE, PG_DSP, SP_ONOFF, "Economy Mode", "economymode", 0.0, SP_MAX, 1.0, procEconomyMode)
PARAM(OVERSAMPLE, PG_DSP, SP_ONOFF, "Oversample", "oversample", 0, SP_MAX, 10, setOversampling)
PARAM(ECONOMY_MODE, PG_DSP, SP_ONOFF, "Economy Mode", "economymode", 0, SP_MAX, 10, setEconomyMode)

// Misc/Debug
PARAM(UNUSED_1, PG_MISC, SP_NONE, "Debug 1", "unused_1", 0.0, 1.0, 0.0, procUnused1)
PARAM(UNUSED_2, PG_MISC, SP_NONE, "Debug 2", "unused_2", 0.0, 1.0, 0.0, procUnused2)
PARAM(UNUSED_1, PG_MISC, SP_NONE, "Debug 1", "unused_1", 0, 1.0, 0, procUnused1)
PARAM(UNUSED_2, PG_MISC, SP_NONE, "Debug 2", "unused_2", 0, 1.0, 0, procUnused2)

// Clean up for potential re-inclusion of file with new definitions
#undef PARAMPOINTS
Expand Down

0 comments on commit ec2de6a

Please sign in to comment.