9 const CalcPatternMod _pmod = CJDensity;
10 const std::string name =
"CJDensityMod";
11 const int _tap_size = quad;
15 float min_mod = 0.98F;
19 float single_scaler = 1.F;
20 float jump_scaler = 1.25F;
21 float hand_scaler = 0.9F;
22 float quad_scaler = 1.15F;
24 const std::vector<std::pair<std::string, float*>> _params{
25 {
"min_mod", &min_mod },
26 {
"max_mod", &max_mod },
29 {
"single_scaler", &single_scaler },
30 {
"jump_scaler", &jump_scaler },
31 {
"hand_scaler", &hand_scaler },
32 {
"quad_scaler", &quad_scaler },
34#pragma endregion params and param map
40 const auto& itvi = mitvi._itvi;
41 if (itvi.total_taps == 0) {
45 const auto& t_taps =
static_cast<float>(itvi.total_taps);
47 static_cast<float>(
static_cast<float>(itvi.taps_by_size[single]) *
50 auto a1 =
static_cast<float>(
51 static_cast<float>(itvi.taps_by_size[jump]) * jump_scaler) /
53 auto a2 =
static_cast<float>(
54 static_cast<float>(itvi.taps_by_size[hand]) * hand_scaler) /
56 auto a3 =
static_cast<float>(
57 static_cast<float>(itvi.taps_by_size[quad]) * quad_scaler) /
60 auto aaa = a0 + a1 + a2 + a3;
62 pmod = std::clamp(base + fastsqrt(aaa), min_mod, max_mod);