Etterna 0.74.4
Loading...
Searching...
No Matches
GenericStream.h
1#pragma once
2#include "../../PatternModHelpers.h"
3
8{
9 const CalcPatternMod _pmod = GStream;
10 const std::string name = "GenericStreamMod";
11 const int _tap_size = single;
12
13#pragma region params
14 float base = 0.F;
15 float min_mod = 0.6F;
16 float max_mod = 1.0F;
17 float prop_buffer = 1.F;
18 float prop_scaler = 1.41F;
19
20 float jack_pool = 4.F;
21 float jack_comp_min = 0.5F;
22 float jack_comp_max = 1.F;
23
24 float vibro_flag = 1.F;
25
26 const std::vector<std::pair<std::string, float*>> _params{
27 { "base", &base },
28 { "min_mod", &min_mod },
29 { "max_mod", &max_mod },
30 { "prop_buffer", &prop_buffer },
31 { "prop_scaler", &prop_scaler },
32 };
33#pragma endregion params and param map
34
35 float prop_component = 0.F;
36 float jack_component = 0.F;
37 float pmod = min_mod;
38
39 void setup() {
40
41 }
42
43 void advance_sequencing(const float& ms_now, const unsigned& notes) {
44
45 }
46
47 void full_reset() {
48
49 }
50
51 auto operator()(const metaItvGenericHandInfo& mitvghi) -> float
52 {
53 // it needs more taps to bracket
54 if (mitvghi.total_taps < 2) {
55 return neutral;
56 }
57
58 // it's all chords
59 if (mitvghi.taps_by_size.at(_tap_size) == 0) {
60 return min_mod;
61 }
62
63 prop_component =
64 static_cast<float>(mitvghi.taps_by_size.at(_tap_size) + prop_buffer) /
65 static_cast<float>(static_cast<float>(mitvghi.total_taps) -
66 prop_buffer) *
67 prop_scaler;
68
69 pmod = fastsqrt(prop_component);
70
71 pmod = std::clamp(base + pmod, min_mod, max_mod);
72
73 // actual mod
74 return pmod;
75 }
76};
Definition GenericStream.h:8
Definition MetaIntervalGenericHandInfo.h:145