-
Notifications
You must be signed in to change notification settings - Fork 1
/
ComPressure.h
169 lines (141 loc) · 2.98 KB
/
ComPressure.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#pragma once
#include "IPlug_include_in_plug_hdr.h"
#include "IControls.h"
#include "SvfLinearTrapOptimised2.hpp"
const int kNumPresets = 1;
bool flip;
struct pressureVars {
double muVary;
double muAttack;
double muNewSpeed;
double muSpeedA;
double muSpeedB;
double muCoefficientA;
double muCoefficientB;
double slewMax;
double mewiness;
double pawClaw;
double threshold;
double release;
double fastest;
};
struct pressureVars pressureSettings[2];
//Pressure
enum {
fix_freq,
fix_reso,
fix_a0,
fix_a1,
fix_a2,
fix_b1,
fix_b2,
fix_sL1,
fix_sL2,
fix_sR1,
fix_sR2,
fix_lastSampleL,
fix_lastSampleR,
fix_total
};
double fixA[fix_total];
double fixB[fix_total]; //fixed frequency biquad filter for ultrasonics, stereo
double lastSampleL;
double intermediateL[16];
bool wasPosClipL;
bool wasNegClipL;
double lastSampleR;
double intermediateR[16];
bool wasPosClipR;
bool wasNegClipR; //Stereo ClipOnly2
struct clipOnly2Vars {
double lastSample;
double intermediate[16];
bool wasPosClip;
bool wasNegClip;
};
struct clipOnly2Vars clipOnly2Settings[2];
uint32_t fpdL;
uint32_t fpdR;
//default stuff
enum EParams
{
//kGain = 0,
kPressureL = 0,
kSpeedL,
kMewinessL,
kPawClawL,
kMakeupGainL,
kMaxGainReductL,
kPressureR,
kSpeedR,
kMewinessR,
kPawClawR,
kMakeupGainR,
kMaxGainReductR,
kDryWet,
kSidechainOn,
kHighpassSC,
kMidSideMode,
kOutputMeter,
kInMeter,
kGRMeter,
kSideDisableL,
kSideDisableR,
kLinkSides,
kBypass,
kLimiter,
kMainOutput,
kTextCtrl,
kNumParams
};
enum EControlTags {
kLimiterLED = 0,
kClipIndicatorLED,
kBypassIndicatorLED,
kSidechainLED,
kMidSideLED,
kLinkModeLED,
kSideEnableLLED,
kSideEnableRLED,
kGRLEnableLLED,
kGRLEnableRLED,
kNumCtrlTags
};
double debug1 = 6.66 ;
double debug2 = 6.66 ;
double debug3 = 6.66 ;
using namespace iplug;
using namespace igraphics;
class ComPressure final : public Plugin
{
public:
ComPressure(const InstanceInfo& info);
double calcGainRedCoeff(double inputSense, struct pressureVars& ps);
void ultrasonicFilter(double& spL, double& spR, double* fix);
bool clipOnly2(double& spl, struct clipOnly2Vars& cov, int spacing);
void updateLED();
void ResetMainSettings();
void OnReset() override;
void OnActivate(bool active) override;
void OnIdle() override;
void OnParamChange(int paramIdx) override;
void ProcessBlock(sample** inputs, sample** outputs, int nFrames) override;
private:
IPeakAvgSender<2> mInMeterSender;
IPeakAvgSender<2> mOutMeterSender;
IPeakAvgSender<2> mGRMeterSender;
double m_ParamValues[kNumParams];
bool clipIndicator;
bool clipperIsOn;
bool sideEnabledL;
bool sideEnabledR;
bool sidesLinked;
bool bypassed;
bool sideChainOn;
bool sideChainHPFOn;
bool GRLimitedL;
bool GRLimitedR;
bool mInputChansConnected[4] = {};
SvfLinearTrapOptimised2 filter;
};
void MessageBox(const char * str, const char * msg, IGraphics* pGraphics);