11 const CalcPatternMod _pmod = CJOHJump;
12 const std::string name =
"CJOHJumpMod";
16 float min_mod = 0.57F;
19 float prop_pool = 1.F;
20 float prop_scaler = 0.63F;
22 const std::vector<std::pair<std::string, float*>> _params{
23 {
"min_mod", &min_mod },
24 {
"max_mod", &max_mod },
26 {
"prop_pool", &prop_pool },
27 {
"prop_scaler", &prop_scaler },
29#pragma endregion params and param map
32 int max_ohjump_seq_taps = 0;
35 float base_seq_prop = 0.F;
37 float base_jump_prop = 0.F;
39 float prop_component = neutral;
42#pragma region generic functions
48 max_ohjump_seq_taps = 0;
53 prop_component = neutral;
59 void advance_sequencing(
const col_type& ct,
const base_type& bt)
67 prop_component = prop_pool - (base_jump_prop * prop_scaler);
68 prop_component = prop_component < 0.1F ? 0.1F : prop_component;
73 const auto& itvhi = mitvhi._itvhi;
76 max_ohjump_seq_taps = ohj.cur_seq_taps > ohj.max_seq_taps
83 if (itvhi.get_taps_nowi() == 0 ||
84 itvhi.get_col_taps_nowi(col_ohjump) == 0) {
90 if (max_ohjump_seq_taps >= itvhi.get_taps_nowi()) {
97 const auto ohjcount = itvhi.get_col_taps_nowf(col_ohjump) / 2.f;
98 const auto tapcount = (itvhi.get_col_taps_nowf(col_left) - ohjcount) +
99 (itvhi.get_col_taps_nowf(col_right) - ohjcount);
100 const auto rows = ohjcount + tapcount;
102 base_jump_prop = ohjcount / rows;
104 prop_component = std::clamp(prop_component, 0.1F, max_mod);
106 pmod = prop_component;
107 pmod = std::clamp(pmod, min_mod, max_mod);
121 ohj.max_seq_taps = 0;
122 max_ohjump_seq_taps = 0;