| 383 | } |
| 384 | |
| 385 | void updatePatchParameters(PatchCtrls *patchCtrls, PatchCvs *patchCvs, Ui *ui) { |
| 386 | // Faders (also act as CV attenuators when CV is patched) |
| 387 | patchCtrls->filterVol = |
| 388 | params[FILTER_VCA_PARAM].getValue() * clamp(inputs[F_VCA_INPUT].getNormalVoltage(5.f) / 5.f, 0.f, 1.f); |
| 389 | patchCtrls->resonatorVol = |
| 390 | params[RESO_DRY_WET_PARAM].getValue() * clamp(inputs[RESONATOR_INPUT].getNormalVoltage(5.f) / 5.f, 0.f, 1.f); |
| 391 | patchCtrls->echoVol = |
| 392 | params[ECHO_DRY_WET_PARAM].getValue() * clamp(inputs[ECHO_INPUT].getNormalVoltage(5.f) / 5.f, 0.f, 1.f); |
| 393 | patchCtrls->ambienceVol = |
| 394 | params[AMB_DRY_WET_PARAM].getValue() * clamp(inputs[AMBIENCE_INPUT].getNormalVoltage(5.f) / 5.f, 0.f, 1.f); |
| 395 | |
| 396 | // filter |
| 397 | ui->SetFilterCutoffMain(params[FILTER_CUTOFF_PARAM].getValue()); |
| 398 | patchCtrls->filterResonance = params[RESONANCE_PARAM].getValue(); |
| 399 | patchCtrls->filterMode = params[FILTER_MODE_PARAM].getValue() / 4.0f; |
| 400 | patchCtrls->filterPosition = (params[FILTER_POSITION_PARAM].getValue() - 1) / 3.0f; |
| 401 | |
| 402 | // resonator |
| 403 | patchCtrls->resonatorTune = params[RESONATOR_TUNE_PARAM].getValue(); |
| 404 | patchCtrls->resonatorFeedback = params[RESONATOR_FEEDBACK_PARAM].getValue(); |
| 405 | patchCtrls->resonatorDissonance = params[RESONATOR_DISSONANCE_PARAM].getValue(); |
| 406 | |
| 407 | // echo |
| 408 | patchCtrls->echoDensity = params[ECHO_DENSITY_PARAM].getValue(); |
| 409 | patchCtrls->echoRepeats = params[ECHO_REPEATS_PARAM].getValue(); |
| 410 | patchCtrls->echoFilter = params[ECHO_FILTER_PARAM].getValue(); |
| 411 | |
| 412 | // ambience |
| 413 | patchCtrls->ambienceSpacetime = params[AMBIENCE_SPACETIME_PARAM].getValue(); |
| 414 | patchCtrls->ambienceDecay = params[AMBIENCE_DECAY_PARAM].getValue(); |
| 415 | patchCtrls->ambienceAutoPan = params[AMBIENCE_AUTOPAN_PARAM].getValue(); |
| 416 | |
| 417 | // modulation |
| 418 | patchCtrls->modSpeed = params[MOD_SPEED_PARAM].getValue(); |
| 419 | patchCtrls->modLevel = params[MOD_LEVEL_PARAM].getValue(); |
| 420 | patchCtrls->modType = params[MOD_TYPE_PARAM].getValue() / 6.f; |
| 421 | |
| 422 | // MOD amounts |
| 423 | patchCtrls->filterCutoffModAmount = params[FILTER_CUTOFF_MOD_PARAM].getValue(); |
| 424 | patchCtrls->filterResonanceModAmount = params[RESONANCE_MOD_PARAM].getValue(); |
| 425 | patchCtrls->resonatorTuneModAmount = params[RESONATOR_TUNE_MOD_PARAM].getValue(); |
| 426 | patchCtrls->resonatorFeedbackModAmount = params[RESONATOR_FEEDBACK_MOD_PARAM].getValue(); |
| 427 | patchCtrls->echoDensityModAmount = params[ECHO_DENSITY_MOD_PARAM].getValue(); |
| 428 | patchCtrls->echoRepeatsModAmount = params[ECHO_REPEATS_MOD_PARAM].getValue(); |
| 429 | patchCtrls->ambienceSpacetimeModAmount = params[AMBIENCE_SPACETIME_MOD_PARAM].getValue(); |
| 430 | patchCtrls->ambienceDecayModAmount = params[AMBIENCE_DECAY_MOD_PARAM].getValue(); |
| 431 | |
| 432 | // CV amounts |
| 433 | patchCtrls->filterCutoffCvAmount = params[FILTER_CUTOFF_CV_PARAM].getValue(); |
| 434 | patchCtrls->filterResonanceCvAmount = params[RESONANCE_CV_PARAM].getValue(); |
| 435 | patchCtrls->resonatorTuneCvAmount = params[RESONATOR_TUNE_CV_PARAM].getValue(); |
| 436 | patchCtrls->resonatorFeedbackCvAmount = params[RESONATOR_FEEDBACK_CV_PARAM].getValue(); |
| 437 | patchCtrls->echoDensityCvAmount = params[ECHO_DENSITY_CV_PARAM].getValue(); |
| 438 | patchCtrls->echoRepeatsCvAmount = params[ECHO_REPEATS_CV_PARAM].getValue(); |
| 439 | patchCtrls->ambienceSpacetimeCvAmount = params[AMBIENCE_SPACETIME_CV_PARAM].getValue(); |
| 440 | patchCtrls->ambienceDecayCvAmount = params[AMBIENCE_DECAY_CV_PARAM].getValue(); |
| 441 | |
| 442 | // CV signals (-5V..+10V mapped to -0.5..1.0) |