8 const CalcPatternMod _pmod = CJ;
10 const std::string name =
"CJMod";
16 float mod_base = 0.4F;
17 float prop_buffer = 1.F;
19 float total_prop_min = min_mod;
20 float total_prop_max = max_mod;
21 float total_prop_scaler = 5.428F;
23 float jack_base = 2.F;
24 float jack_min = 0.625F;
26 float jack_scaler = 1.F;
28 float not_jack_pool = 1.2F;
29 float not_jack_min = 0.4F;
30 float not_jack_max = 1.F;
31 float not_jack_scaler = 1.F;
33 float vibro_flag = 1.F;
34 float decay_factor = 0.1F;
36 const std::vector<std::pair<std::string, float*>> _params{
37 {
"min_mod", &min_mod },
38 {
"max_mod", &max_mod },
39 {
"mod_base", &mod_base },
40 {
"prop_buffer", &prop_buffer },
42 {
"total_prop_min", &total_prop_min },
43 {
"total_prop_max", &total_prop_max },
44 {
"total_prop_scaler", &total_prop_scaler },
46 {
"jack_base", &jack_base },
47 {
"jack_min", &jack_min },
48 {
"jack_max", &jack_max },
49 {
"jack_scaler", &jack_scaler },
51 {
"not_jack_pool", ¬_jack_pool },
52 {
"not_jack_min", ¬_jack_min },
53 {
"not_jack_max", ¬_jack_max },
54 {
"not_jack_scaler", ¬_jack_scaler },
56 {
"vibro_flag", &vibro_flag },
57 {
"decay_factor", &decay_factor },
59#pragma endregion params and param map
61 float total_prop = 0.F;
62 float jack_prop = 0.F;
63 float not_jack_prop = 0.F;
75 pmod = std::clamp(last_mod - decay_factor, min_mod, max_mod);
87 const auto& itvi = mitvi._itvi;
89 if (itvi.total_taps == 0) {
94 if (itvi.chord_taps == 0) {
99 t_taps =
static_cast<float>(itvi.total_taps);
107 total_prop =
static_cast<float>(
static_cast<float>(itvi.chord_taps) +
109 (t_taps - prop_buffer) * total_prop_scaler;
111 std::clamp(fastsqrt(total_prop), total_prop_min, total_prop_max);
115 std::clamp(
static_cast<float>(mitvi.actual_jacks_cj) - jack_base,
121 not_jack_prop = std::clamp(
123 (
static_cast<float>(
static_cast<float>(mitvi.definitely_not_jacks) *
130 std::clamp(total_prop * jack_prop * not_jack_prop, min_mod, max_mod);
134 if (mitvi.basically_vibro) {
135 if (mitvi.num_var == 1) {
136 pmod *= 0.5F * vibro_flag;
137 }
else if (mitvi.num_var == 2) {
138 pmod *= 0.9F * vibro_flag;
139 }
else if (mitvi.num_var == 3) {
140 pmod *= 0.95F * vibro_flag;