Deluge Firmware 1.3.0
Build date: 2025.04.16
Loading...
Searching...
No Matches
deluge::modulation::params Namespace Reference

Typedefs

using ParamType = uint8_t
 

Enumerations

enum class  Kind : int32_t {
  NONE , PATCHED , UNPATCHED_SOUND , UNPATCHED_GLOBAL ,
  STATIC , MIDI , PATCH_CABLE , EXPRESSION
}
 
enum  Local : ParamType {
  LOCAL_OSC_A_VOLUME , LOCAL_OSC_B_VOLUME , LOCAL_VOLUME , LOCAL_NOISE_VOLUME ,
  LOCAL_MODULATOR_0_VOLUME , LOCAL_MODULATOR_1_VOLUME , LOCAL_FOLD , FIRST_LOCAL_NON_VOLUME ,
  LOCAL_MODULATOR_0_FEEDBACK = FIRST_LOCAL_NON_VOLUME , LOCAL_MODULATOR_1_FEEDBACK , LOCAL_CARRIER_0_FEEDBACK , LOCAL_CARRIER_1_FEEDBACK ,
  LOCAL_LPF_RESONANCE , LOCAL_HPF_RESONANCE , LOCAL_ENV_0_SUSTAIN , LOCAL_ENV_1_SUSTAIN ,
  LOCAL_ENV_2_SUSTAIN , LOCAL_ENV_3_SUSTAIN , LOCAL_LPF_MORPH , LOCAL_HPF_MORPH ,
  FIRST_LOCAL__HYBRID , LOCAL_OSC_A_PHASE_WIDTH = FIRST_LOCAL__HYBRID , LOCAL_OSC_B_PHASE_WIDTH , LOCAL_OSC_A_WAVE_INDEX ,
  LOCAL_OSC_B_WAVE_INDEX , LOCAL_PAN , FIRST_LOCAL_EXP , LOCAL_LPF_FREQ = FIRST_LOCAL_EXP ,
  LOCAL_PITCH_ADJUST , LOCAL_OSC_A_PITCH_ADJUST , LOCAL_OSC_B_PITCH_ADJUST , LOCAL_MODULATOR_0_PITCH_ADJUST ,
  LOCAL_MODULATOR_1_PITCH_ADJUST , LOCAL_HPF_FREQ , LOCAL_LFO_LOCAL_FREQ_1 , LOCAL_LFO_LOCAL_FREQ_2 ,
  LOCAL_ENV_0_ATTACK , LOCAL_ENV_1_ATTACK , LOCAL_ENV_2_ATTACK , LOCAL_ENV_3_ATTACK ,
  LOCAL_ENV_0_DECAY , LOCAL_ENV_1_DECAY , LOCAL_ENV_2_DECAY , LOCAL_ENV_3_DECAY ,
  LOCAL_ENV_0_RELEASE , LOCAL_ENV_1_RELEASE , LOCAL_ENV_2_RELEASE , LOCAL_ENV_3_RELEASE ,
  LOCAL_LAST
}
 "Local" patched params, which apply to individual voices within the sound More...
 
enum  Global : ParamType {
  FIRST_GLOBAL = LOCAL_LAST , GLOBAL_VOLUME_POST_FX = FIRST_GLOBAL , GLOBAL_VOLUME_POST_REVERB_SEND , GLOBAL_REVERB_AMOUNT ,
  GLOBAL_MOD_FX_DEPTH , FIRST_GLOBAL_NON_VOLUME , GLOBAL_DELAY_FEEDBACK = FIRST_GLOBAL_NON_VOLUME , FIRST_GLOBAL_HYBRID ,
  FIRST_GLOBAL_EXP = FIRST_GLOBAL_HYBRID , GLOBAL_DELAY_RATE = FIRST_GLOBAL_EXP , GLOBAL_MOD_FX_RATE , GLOBAL_LFO_FREQ_1 ,
  GLOBAL_LFO_FREQ_2 , GLOBAL_ARP_RATE , GLOBAL_NONE
}
 
enum  Placeholder : ParamType { PLACEHOLDER_RANGE = 89 }
 Fake param IDs for use when loading old presets. More...
 
enum  UnpatchedShared : ParamType {
  UNPATCHED_STUTTER_RATE , UNPATCHED_BASS , UNPATCHED_TREBLE , UNPATCHED_BASS_FREQ ,
  UNPATCHED_TREBLE_FREQ , UNPATCHED_SAMPLE_RATE_REDUCTION , UNPATCHED_BITCRUSHING , UNPATCHED_MOD_FX_OFFSET ,
  UNPATCHED_MOD_FX_FEEDBACK , UNPATCHED_SIDECHAIN_SHAPE , UNPATCHED_COMPRESSOR_THRESHOLD , UNPATCHED_FIRST_ARP_PARAM ,
  UNPATCHED_ARP_GATE = UNPATCHED_FIRST_ARP_PARAM , UNPATCHED_ARP_RHYTHM , UNPATCHED_ARP_SEQUENCE_LENGTH , UNPATCHED_ARP_CHORD_POLYPHONY ,
  UNPATCHED_ARP_RATCHET_AMOUNT , UNPATCHED_NOTE_PROBABILITY , UNPATCHED_REVERSE_PROBABILITY , UNPATCHED_ARP_BASS_PROBABILITY ,
  UNPATCHED_ARP_CHORD_PROBABILITY , UNPATCHED_ARP_RATCHET_PROBABILITY , UNPATCHED_ARP_SPREAD_GATE , UNPATCHED_ARP_SPREAD_OCTAVE ,
  UNPATCHED_SPREAD_VELOCITY , UNPATCHED_LAST_ARP_PARAM , UNPATCHED_NUM_SHARED = UNPATCHED_LAST_ARP_PARAM
}
 
enum  UnpatchedSound : ParamType { UNPATCHED_PORTAMENTO = UNPATCHED_NUM_SHARED , UNPATCHED_SOUND_MAX_NUM }
 Unpatched params which are only used for Sounds.
 
enum  UnpatchedGlobal : ParamType {
  UNPATCHED_MOD_FX_RATE = UNPATCHED_NUM_SHARED , UNPATCHED_MOD_FX_DEPTH , UNPATCHED_DELAY_RATE , UNPATCHED_DELAY_AMOUNT ,
  UNPATCHED_ARP_RATE , UNPATCHED_PAN , UNPATCHED_LPF_FREQ , UNPATCHED_LPF_RES ,
  UNPATCHED_LPF_MORPH , UNPATCHED_HPF_FREQ , UNPATCHED_HPF_RES , UNPATCHED_HPF_MORPH ,
  UNPATCHED_REVERB_SEND_AMOUNT , UNPATCHED_VOLUME , UNPATCHED_SIDECHAIN_VOLUME , UNPATCHED_PITCH_ADJUST ,
  UNPATCHED_TEMPO , UNPATCHED_GLOBAL_MAX_NUM
}
 Just for GlobalEffectables.
 
enum  Static : ParamType { STATIC_SIDECHAIN_ATTACK = STATIC_START , STATIC_SIDECHAIN_RELEASE , STATIC_SIDECHAIN_VOLUME }
 

Functions

bool isParamBipolar (Kind kind, int32_t paramID)
 
bool isParamPan (Kind kind, int32_t paramID)
 
bool isParamArpRhythm (Kind kind, int32_t paramID)
 
bool isParamPitch (Kind kind, int32_t paramID)
 
bool isParamPitchBend (Kind kind, int32_t paramID)
 
bool isParamStutter (Kind kind, int32_t paramID)
 
bool isParamQuantizedStutter (Kind kind, int32_t paramID, ModControllableAudio *modControllableAudio)
 
bool isVibratoPatchCableShortcut (int32_t xDisplay, int32_t yDisplay)
 
bool isSidechainPatchCableShortcut (int32_t xDisplay, int32_t yDisplay)
 
bool isPatchCableShortcut (int32_t xDisplay, int32_t yDisplay)
 
void getPatchCableFromShortcut (int32_t xDisplay, int32_t yDisplay, ParamDescriptor *paramDescriptor)
 
char const * getPatchedParamShortName (ParamType type)
 Get the short version of a param name, for use in the OLED mod matrix display (maximum 10 characters)
 
char const * getPatchedParamDisplayName (int32_t p)
 
char const * getParamDisplayName (Kind kind, int32_t p)
 
bool paramNeedsLPF (ParamType p, bool fromAutomation)
 
constexpr char const * paramNameForFileConst (Kind const kind, ParamType const param)
 
char const * paramNameForFile (Kind const kind, ParamType const param)
 
constexpr ParamType fileStringToParamConst (Kind kind, char const *name, bool allowPatched)
 
ParamType fileStringToParam (Kind kind, char const *name, bool allowPatched)
 
uint32_t expressionParamFromShortcut (int x, int y)
 
constexpr bool validateParams ()
 

Variables

constexpr ParamType UNPATCHED_START = 90
 
constexpr ParamType STATIC_START = 162
 
constexpr ParamType PATCH_CABLE = 190
 Special case for representing patch cables.
 
constexpr ParamType kNumParams = GLOBAL_NONE
 None is the last global param, 0 indexed so it's also the number of patched params.
 
constexpr ParamType kMaxNumUnpatchedParams
 
constexpr ParamType kUnpatchedAndPatchedMaximum = kMaxNumUnpatchedParams + UNPATCHED_START
 
constexpr uint32_t kNoParamID = 0xFFFFFFFF
 Magic number which represents an invalid or missing param type.
 
const uint32_t patchedParamShortcuts [kDisplayWidth][kDisplayHeight]
 
const uint32_t unpatchedNonGlobalParamShortcuts [kDisplayWidth][kDisplayHeight]
 
const uint32_t unpatchedGlobalParamShortcuts [kDisplayWidth][kDisplayHeight]
 

Detailed Description

"Param"s are at the heart of the Deluge's modulation capabilities.

Each Param is identified by its Kind and its Type. The Kind identifies how the numeric value of the Type should be interpreted.

Params have 4 separate modes via which they can be combined:

  • Linear params have different sources multiplied together, then multiplied by the neutral value.
  • Volume params act like linear params in how they are combined, but the sum is squared at the end.
  • Hybrid params have different sources added together, then added to the neutral value
  • Exp (exponential) params have different sources added together, converted to an exponential scale, then multiplied by the neutral value

Typedef Documentation

◆ ParamType

Integer type used for all Param enumerations.

Should be as small as possible for efficiency. Some things might also depend on this being exactly uint8_t, so try to audit for that if you need to change it.

Enumeration Type Documentation

◆ Global

"Global" patched params, which apply to the whole sound. ANY TIME YOU UPDATE THIS LIST, please also update getParamDisplayName and paramNameForFile!

◆ Kind

enum class deluge::modulation::params::Kind : int32_t
strong
Enumerator
PATCHED 

Voice-local parameters which can be modulated via the mod matrix.

UNPATCHED_SOUND 

Parameters which apply to the internal sound engine specifically.

UNPATCHED_GLOBAL 

Parameters which can not be modulated and apply to the whole Output.

STATIC 

Unused.

MIDI 

Internal representation for MIDI CCs.

PATCH_CABLE 

Modulates the strength of the modulation between a mod source and another param.

EXPRESSION 

Parameter connected to an MPE expression axis.

◆ Local

"Local" patched params, which apply to individual voices within the sound

Enumerator
LOCAL_LAST 

Special value used to chain in to the Global params.

◆ Placeholder

Fake param IDs for use when loading old presets.

Enumerator
PLACEHOLDER_RANGE 

Not a real param. For the purpose of reading old files from before V3.2.0.

◆ UnpatchedShared

IDs for UNPATCHED_* params, for all ModControllables. This is the prefix of UNPATCHED params shared between Sounds and GlobalEffectables. ANY TIME YOU UPDATE THIS LIST! paramNameForFile() in param.cpp

Enumerator
UNPATCHED_NUM_SHARED 

Special value for chaining the UNPATCHED_* params.

Function Documentation

◆ fileStringToParam()

ParamType deluge::modulation::params::fileStringToParam ( Kind kind,
char const * name,
bool allowPatched )

Given a string and the expected Kind, attempts to find the ParamType value for that param.

As with paramNameForFile, the returned ParamType is offset by UNPATCHED_START for unpatched params.

◆ paramNameForFile()

char const * deluge::modulation::params::paramNameForFile ( Kind kind,
ParamType param )

Convert a ParamType (along with its Kind) in to a string suitable for use as an XML attribute name.

This handles Param::Local and Param::Unpatched. If an Param::Unpatched is passed for param, it must be offset by UNPATCHED_START. The Kind is used to distinguish between UNPATCHED_Sound (when kind == UNPATCHED_SOUND) and UNPATCHED_GlobalEffectable (when kind == UNPATCHED_GLOBAL) as these two sub-ranges would otherwise overlap.

Variable Documentation

◆ kMaxNumUnpatchedParams

ParamType deluge::modulation::params::kMaxNumUnpatchedParams
constexpr
Initial value:
=
std::max<ParamType>(util::to_underlying(UNPATCHED_GLOBAL_MAX_NUM), util::to_underlying(UNPATCHED_SOUND_MAX_NUM))

◆ kUnpatchedAndPatchedMaximum

ParamType deluge::modulation::params::kUnpatchedAndPatchedMaximum = kMaxNumUnpatchedParams + UNPATCHED_START
constexpr

The absolute highest param number used by patched or unpatched params

fileStrongToParam uses this to iterate over all known parameters.

◆ patchedParamShortcuts

const uint32_t deluge::modulation::params::patchedParamShortcuts[kDisplayWidth][kDisplayHeight]
Initial value:
= {
{LOCAL_OSC_A_VOLUME , LOCAL_OSC_A_PITCH_ADJUST , kNoParamID , LOCAL_OSC_A_PHASE_WIDTH, kNoParamID , LOCAL_CARRIER_0_FEEDBACK , LOCAL_OSC_A_WAVE_INDEX, LOCAL_NOISE_VOLUME},
{LOCAL_OSC_B_VOLUME , LOCAL_OSC_B_PITCH_ADJUST , kNoParamID , LOCAL_OSC_B_PHASE_WIDTH, kNoParamID , LOCAL_CARRIER_1_FEEDBACK , LOCAL_OSC_B_WAVE_INDEX, kNoParamID},
{LOCAL_MODULATOR_0_VOLUME, LOCAL_MODULATOR_0_PITCH_ADJUST, kNoParamID , kNoParamID , kNoParamID , LOCAL_MODULATOR_0_FEEDBACK, kNoParamID , kNoParamID},
{LOCAL_MODULATOR_1_VOLUME, LOCAL_MODULATOR_1_PITCH_ADJUST, kNoParamID , kNoParamID , kNoParamID , LOCAL_MODULATOR_1_FEEDBACK, kNoParamID , kNoParamID},
{GLOBAL_VOLUME_POST_FX , LOCAL_PITCH_ADJUST , kNoParamID , LOCAL_PAN , kNoParamID , kNoParamID , kNoParamID , kNoParamID},
{LOCAL_ENV_0_RELEASE , LOCAL_ENV_0_SUSTAIN , LOCAL_ENV_0_DECAY , LOCAL_ENV_0_ATTACK , LOCAL_LPF_MORPH, kNoParamID , LOCAL_LPF_RESONANCE , LOCAL_LPF_FREQ},
{LOCAL_ENV_1_RELEASE , LOCAL_ENV_1_SUSTAIN , LOCAL_ENV_1_DECAY , LOCAL_ENV_1_ATTACK , LOCAL_HPF_MORPH, kNoParamID , LOCAL_HPF_RESONANCE , LOCAL_HPF_FREQ},
{GLOBAL_LFO_FREQ_1 , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , GLOBAL_MOD_FX_DEPTH , GLOBAL_MOD_FX_RATE},
{LOCAL_LFO_LOCAL_FREQ_1 , kNoParamID , kNoParamID , GLOBAL_REVERB_AMOUNT , kNoParamID , kNoParamID , kNoParamID , kNoParamID},
{GLOBAL_DELAY_RATE , kNoParamID , kNoParamID , GLOBAL_DELAY_FEEDBACK , kNoParamID , kNoParamID , kNoParamID , kNoParamID},
}
constexpr uint32_t kNoParamID
Magic number which represents an invalid or missing param type.
Definition param.h:296

Grid sized array (patched param version) to assign automatable parameters to the grid used in automation view and in midi follow

◆ UNPATCHED_START

ParamType deluge::modulation::params::UNPATCHED_START = 90
constexpr

Offset to use for the start of unpatched params when patched and unpatched params need to be compressed in to a single array.

◆ unpatchedGlobalParamShortcuts

const uint32_t deluge::modulation::params::unpatchedGlobalParamShortcuts[kDisplayWidth][kDisplayHeight]
Initial value:
= {
{kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID},
{kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID},
{kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID},
{kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , kNoParamID , UNPATCHED_STUTTER_RATE},
{UNPATCHED_VOLUME , UNPATCHED_PITCH_ADJUST, kNoParamID , UNPATCHED_PAN , kNoParamID , UNPATCHED_SAMPLE_RATE_REDUCTION, UNPATCHED_BITCRUSHING , kNoParamID},
{kNoParamID , kNoParamID , kNoParamID , kNoParamID , UNPATCHED_LPF_MORPH , kNoParamID , UNPATCHED_LPF_RES , UNPATCHED_LPF_FREQ},
{kNoParamID , kNoParamID , kNoParamID , kNoParamID , UNPATCHED_HPF_MORPH , kNoParamID , UNPATCHED_HPF_RES , UNPATCHED_HPF_FREQ},
{kNoParamID , kNoParamID , UNPATCHED_SIDECHAIN_VOLUME, kNoParamID , UNPATCHED_SIDECHAIN_SHAPE , kNoParamID , UNPATCHED_BASS , UNPATCHED_BASS_FREQ},
{UNPATCHED_ARP_RATE , kNoParamID , UNPATCHED_ARP_GATE , kNoParamID , kNoParamID , kNoParamID , UNPATCHED_TREBLE , UNPATCHED_TREBLE_FREQ},
{kNoParamID , kNoParamID , kNoParamID , kNoParamID , UNPATCHED_MOD_FX_OFFSET , UNPATCHED_MOD_FX_FEEDBACK , UNPATCHED_MOD_FX_DEPTH, UNPATCHED_MOD_FX_RATE},
{kNoParamID , kNoParamID , kNoParamID , UNPATCHED_REVERB_SEND_AMOUNT, kNoParamID , kNoParamID , kNoParamID , kNoParamID},
{UNPATCHED_DELAY_RATE, kNoParamID , kNoParamID , UNPATCHED_DELAY_AMOUNT , kNoParamID , kNoParamID , kNoParamID , kNoParamID},

Grid sized array (unpatched, global) to assign automatable parameters to the grid used in automation view and in midi follow

◆ unpatchedNonGlobalParamShortcuts

const uint32_t deluge::modulation::params::unpatchedNonGlobalParamShortcuts[kDisplayWidth][kDisplayHeight]
Initial value:
= {
{kNoParamID , kNoParamID, kNoParamID , kNoParamID, kNoParamID , kNoParamID , kNoParamID , kNoParamID},
{kNoParamID , kNoParamID, kNoParamID , kNoParamID, kNoParamID , kNoParamID , kNoParamID , kNoParamID},
{kNoParamID , kNoParamID, kNoParamID , kNoParamID, kNoParamID , kNoParamID , kNoParamID , kNoParamID},
{kNoParamID , kNoParamID, kNoParamID , kNoParamID, kNoParamID , UNPATCHED_SAMPLE_RATE_REDUCTION, UNPATCHED_BITCRUSHING, kNoParamID},
{kNoParamID , kNoParamID, kNoParamID , kNoParamID, UNPATCHED_SIDECHAIN_SHAPE , kNoParamID , UNPATCHED_BASS , UNPATCHED_BASS_FREQ},
{kNoParamID , kNoParamID, UNPATCHED_ARP_GATE, kNoParamID, kNoParamID , kNoParamID , UNPATCHED_TREBLE , UNPATCHED_TREBLE_FREQ},
{kNoParamID , kNoParamID, kNoParamID , kNoParamID, UNPATCHED_MOD_FX_OFFSET , UNPATCHED_MOD_FX_FEEDBACK , kNoParamID , kNoParamID},
{kNoParamID , UNPATCHED_SPREAD_VELOCITY, kNoParamID , kNoParamID, kNoParamID , kNoParamID , kNoParamID , kNoParamID}
}

Grid sized array (unpatched, non-global) to assign automatable parameters to the grid used in automation view and in midi follow