Browse Source

Add knob descriptions

pull/120/head
hemmer 3 years ago
parent
commit
2e8baf3dfd
1 changed files with 152 additions and 0 deletions
  1. +152
    -0
      src/Peaks.cpp

+ 152
- 0
src/Peaks.cpp View File

@@ -250,6 +250,157 @@ struct Peaks : Module {
setFunction(1, function_[1]); setFunction(1, function_[1]);
} }


void updateKnobDescriptions() {

if (processors[0].function() == peaks::PROCESSOR_FUNCTION_NUMBER_STATION) {
getParamQuantity(KNOB_1_PARAM)->description = "????";
getParamQuantity(KNOB_2_PARAM)->description = "????";
getParamQuantity(KNOB_3_PARAM)->description = "????";
getParamQuantity(KNOB_4_PARAM)->description = "????";
return;
}

if (edit_mode_ == EDIT_MODE_SPLIT) {
switch (function_[0]) {
case FUNCTION_ENVELOPE: {
getParamQuantity(KNOB_1_PARAM)->description = "Ch. 1 Attack";
getParamQuantity(KNOB_2_PARAM)->description = "Ch. 1 Decay";
getParamQuantity(KNOB_3_PARAM)->description = "Ch. 2 Attack";
getParamQuantity(KNOB_4_PARAM)->description = "Ch. 2 Decay";
break;
}
case FUNCTION_LFO: {
getParamQuantity(KNOB_1_PARAM)->description = "Ch. 1 Frequency";
getParamQuantity(KNOB_2_PARAM)->description = "Ch. 1 Waveform";
getParamQuantity(KNOB_3_PARAM)->description = "Ch. 2 Frequency";
getParamQuantity(KNOB_4_PARAM)->description = "Ch. 2 Waveform";
break;
}
case FUNCTION_TAP_LFO: {
getParamQuantity(KNOB_1_PARAM)->description = "Ch. 1 Waveform";
getParamQuantity(KNOB_2_PARAM)->description = "Ch. 1 Waveform variation";
getParamQuantity(KNOB_3_PARAM)->description = "Ch. 2 Waveform";
getParamQuantity(KNOB_4_PARAM)->description = "Ch. 2 Waveform variation";
break;
}
case FUNCTION_DRUM_GENERATOR: {
getParamQuantity(KNOB_1_PARAM)->description = "Ch. 1 BD Tone";
getParamQuantity(KNOB_2_PARAM)->description = "Ch. 1 BD Decay";
getParamQuantity(KNOB_3_PARAM)->description = "Ch. 2 SD Tone";
getParamQuantity(KNOB_4_PARAM)->description = "Ch. 2 SD Snappy";
break;
}
case FUNCTION_MINI_SEQUENCER: {
getParamQuantity(KNOB_1_PARAM)->description = "Ch. 1 Step 1";
getParamQuantity(KNOB_2_PARAM)->description = "Ch. 1 Step 2";
getParamQuantity(KNOB_3_PARAM)->description = "Ch. 2 Step 1";
getParamQuantity(KNOB_4_PARAM)->description = "Ch. 2 Step 2";
break;
}
case FUNCTION_PULSE_SHAPER: {
getParamQuantity(KNOB_1_PARAM)->description = "Ch. 1 Delay";
getParamQuantity(KNOB_2_PARAM)->description = "Ch. 1 Number of repeats";
getParamQuantity(KNOB_3_PARAM)->description = "Ch. 2 Delay";
getParamQuantity(KNOB_4_PARAM)->description = "Ch. 2 Number of repeats";
break;
}
case FUNCTION_PULSE_RANDOMIZER: {
getParamQuantity(KNOB_1_PARAM)->description = "Ch. 1 Acceptance/regeneration probability";
getParamQuantity(KNOB_2_PARAM)->description = "Ch. 1 Delay";
getParamQuantity(KNOB_3_PARAM)->description = "Ch. 2 Acceptance/regeneration probability";
getParamQuantity(KNOB_4_PARAM)->description = "Ch. 2 Delay";
break;
}
case FUNCTION_FM_DRUM_GENERATOR: {
getParamQuantity(KNOB_1_PARAM)->description = "Ch. 1 BD presets morphing";
getParamQuantity(KNOB_2_PARAM)->description = "Ch. 1 BD presets variations";
getParamQuantity(KNOB_3_PARAM)->description = "Ch. 2 SD presets morphing";
getParamQuantity(KNOB_4_PARAM)->description = "Ch. 2 SD presets variations";
break;
}
default: break;
}
}
else {

int currentFunction = -1;
// same for both
if (edit_mode_ == EDIT_MODE_TWIN) {
currentFunction = function_[0]; // == function_[1]
}
// if expert, pick the active set of labels
else if (edit_mode_ == EDIT_MODE_FIRST || edit_mode_ == EDIT_MODE_SECOND) {
currentFunction = function_[edit_mode_ - EDIT_MODE_FIRST];
}
else {
return;
}

std::string channelText = (edit_mode_ == EDIT_MODE_TWIN) ? "Ch. 1&2 " : string::f("Ch. %d ", edit_mode_ - EDIT_MODE_FIRST + 1);

switch (currentFunction) {
case FUNCTION_ENVELOPE: {
getParamQuantity(KNOB_1_PARAM)->description = channelText + "Attack";
getParamQuantity(KNOB_2_PARAM)->description = channelText + "Decay";
getParamQuantity(KNOB_3_PARAM)->description = channelText + "Sustain";
getParamQuantity(KNOB_4_PARAM)->description = channelText + "Release";
break;
}
case FUNCTION_LFO: {
getParamQuantity(KNOB_1_PARAM)->description = channelText + "Frequency";
getParamQuantity(KNOB_2_PARAM)->description = channelText + "Waveform (sine, linear slope, square, steps, random)";
getParamQuantity(KNOB_3_PARAM)->description = channelText + "Waveform variation (wavefolder for sine; ascending/triangle/descending balance for slope, pulse-width for square, number of steps, and interpolation method)";
getParamQuantity(KNOB_4_PARAM)->description = channelText + "Phase on restart";
break;
}
case FUNCTION_TAP_LFO: {
getParamQuantity(KNOB_1_PARAM)->description = channelText + "Amplitude";
getParamQuantity(KNOB_2_PARAM)->description = channelText + "Waveform";
getParamQuantity(KNOB_3_PARAM)->description = channelText + "Waveform variation";
getParamQuantity(KNOB_4_PARAM)->description = channelText + "Phase on restart";
break;
}
case FUNCTION_DRUM_GENERATOR: {
getParamQuantity(KNOB_1_PARAM)->description = channelText + "Base frequency";
getParamQuantity(KNOB_2_PARAM)->description = channelText + "Frequency modulation (“Punch” for BD, “Tone” for SD)";
getParamQuantity(KNOB_3_PARAM)->description = channelText + "High-frequency content (“Tone” for BD, “Snappy” for SD)";
getParamQuantity(KNOB_4_PARAM)->description = channelText + "Decay";
break;
}
case FUNCTION_MINI_SEQUENCER: {
getParamQuantity(KNOB_1_PARAM)->description = channelText + "Step 1";
getParamQuantity(KNOB_2_PARAM)->description = channelText + "Step 2";
getParamQuantity(KNOB_3_PARAM)->description = channelText + "Step 3";
getParamQuantity(KNOB_4_PARAM)->description = channelText + "Step 4";
break;
}
case FUNCTION_PULSE_SHAPER: {
getParamQuantity(KNOB_1_PARAM)->description = channelText + "Pre-delay";
getParamQuantity(KNOB_2_PARAM)->description = channelText + "Gate duration";
getParamQuantity(KNOB_3_PARAM)->description = channelText + "Delay";
getParamQuantity(KNOB_4_PARAM)->description = channelText + "Number of repeats";
break;
}
case FUNCTION_PULSE_RANDOMIZER: {
getParamQuantity(KNOB_1_PARAM)->description = channelText + "Probability that an incoming trigger is processed";
getParamQuantity(KNOB_2_PARAM)->description = channelText + "Probability that the trigger is regenerated after the delay";
getParamQuantity(KNOB_3_PARAM)->description = channelText + "Delay time";
getParamQuantity(KNOB_4_PARAM)->description = channelText + "Jitter";
break;
}
case FUNCTION_FM_DRUM_GENERATOR: {
getParamQuantity(KNOB_1_PARAM)->description = channelText + "Frequency";
getParamQuantity(KNOB_2_PARAM)->description = channelText + "FM intensity";
getParamQuantity(KNOB_3_PARAM)->description = channelText + "FM and AM envelope decay time (the FM envelope has a shorter decay than the AM envelope, but the two values are tied to this parameter)";
getParamQuantity(KNOB_4_PARAM)->description = channelText + "Color. At 12 o'clock, no modification is brought to the oscillator signal. Turn right to increase the amount of noise (for snares). Turn left to increase the amount of distortion (for 909 style kicks).";
break;
}
default: break;
}
}

}

json_t* dataToJson() override { json_t* dataToJson() override {


saveState(); saveState();
@@ -309,6 +460,7 @@ struct Peaks : Module {
void process(const ProcessArgs& args) override { void process(const ProcessArgs& args) override {
poll(); poll();
pollPots(); pollPots();
updateKnobDescriptions();


// Initialize "secret" number station mode. // Initialize "secret" number station mode.
if (initNumberStation) { if (initNumberStation) {


Loading…
Cancel
Save