10 const CalcPatternMod _pmod = OHJumpMod;
11 const std::string name =
"OHJumpMod";
15 float min_mod = 0.75F;
18 float max_seq_weight = 0.65F;
19 float max_seq_pool = 1.2F;
20 float max_seq_scaler = 2.F;
22 float prop_pool = 1.5F;
23 float prop_scaler = 1.F;
25 const std::vector<std::pair<std::string, float*>> _params{
26 {
"min_mod", &min_mod },
27 {
"max_mod", &max_mod },
29 {
"max_seq_weight", &max_seq_weight },
30 {
"max_seq_pool", &max_seq_pool },
31 {
"max_seq_scaler", &max_seq_scaler },
33 {
"prop_pool", &prop_pool },
34 {
"prop_scaler", &prop_scaler },
36#pragma endregion params and param map
39 int max_ohjump_seq_taps = 0;
42 float floatymcfloatface = 0.F;
44 float base_seq_prop = 0.F;
46 float base_jump_prop = 0.F;
48 float max_seq_component = neutral;
49 float prop_component = neutral;
52#pragma region generic functions
58 max_ohjump_seq_taps = 0;
61 floatymcfloatface = 0.F;
65 max_seq_component = neutral;
66 prop_component = neutral;
72 void advance_sequencing(
const col_type& ct,
const base_type& bt)
78 void set_max_seq_comp()
80 max_seq_component = max_seq_pool - (base_seq_prop * max_seq_scaler);
81 max_seq_component = max_seq_component < 0.1F ? 0.1F : max_seq_component;
82 max_seq_component = fastsqrt(max_seq_component);
88 prop_component = prop_pool - (base_jump_prop * prop_scaler);
89 prop_component = prop_component < 0.1F ? 0.1F : prop_component;
90 prop_component = fastsqrt(prop_component);
95 const auto& itvhi = mitvhi._itvhi;
97 cc_taps = mitvhi._base_types[base_left_right] +
98 mitvhi._base_types[base_right_left];
100 assert(cc_taps >= 0);
103 max_ohjump_seq_taps = ohj.cur_seq_taps > ohj.max_seq_taps
110 if (itvhi.get_taps_nowi() == 0 ||
111 itvhi.get_col_taps_nowi(col_ohjump) == 0) {
117 if (max_ohjump_seq_taps >= itvhi.get_taps_nowi()) {
127 if (max_ohjump_seq_taps < 3) {
131 itvhi.get_col_taps_nowf(col_ohjump) / itvhi.get_taps_nowf();
134 pmod = std::clamp(prop_component, min_mod, max_mod);
149 floatymcfloatface =
static_cast<float>(max_ohjump_seq_taps);
150 base_seq_prop = floatymcfloatface / itvhi.get_taps_nowf();
153 pmod = std::clamp(max_seq_component, min_mod, max_mod);
164 floatymcfloatface =
static_cast<float>(max_ohjump_seq_taps);
165 base_seq_prop = floatymcfloatface / mitvhi._itvhi.
get_taps_nowf();
167 max_seq_component = std::clamp(max_seq_component, 0.1F, max_mod);
170 itvhi.get_col_taps_nowf(col_ohjump) / itvhi.get_taps_nowf();
172 prop_component = std::clamp(prop_component, 0.1F, max_mod);
174 pmod = weighted_average(
175 max_seq_component, prop_component, max_seq_weight, 1.F);
176 pmod = std::clamp(pmod, min_mod, max_mod);
191 ohj.max_seq_taps = 0;
192 max_ohjump_seq_taps = 0;