21#ifndef CALF_PLUGIN_TOOLS_H
22#define CALF_PLUGIN_TOOLS_H
48 md.level_idx = lvls[
i];
49 md.clip_idx = clps[
i];
50 md.meter.set_reverse(lvls[
i] < -1);
51 md.meter.set_falloff(1.f, srate);
56 for (
size_t i = 0;
i <
meters.size(); ++
i) {
61 md.meter.process(values[
i]);
69 void fall(
unsigned int numsamples) {
70 for (
size_t i = 0;
i <
meters.size(); ++
i)
72 meters[
i].meter.fall(numsamples);
80 printf(
"send_configure key=%s value=%s\n",
key,
value);
106template<
class Metadata>
110 inline void process(
float *
const *params,
const float *
const *inputs,
const float *
const *outputs,
unsigned int offset,
unsigned int nsamples)
112 if (params[Metadata::param_meter_in] || params[Metadata::param_clip_in]) {
114 vumeter_in.update_stereo(inputs[0] ? inputs[0] + offset :
NULL, inputs[1] ? inputs[1] + offset :
NULL, nsamples);
117 if (params[Metadata::param_meter_in])
118 *params[Metadata::param_meter_in] =
vumeter_in.level;
119 if (params[Metadata::param_clip_in])
120 *params[Metadata::param_clip_in] =
vumeter_in.clip > 0 ? 1.f : 0.f;
122 if (params[Metadata::param_meter_out] || params[Metadata::param_clip_out]) {
124 vumeter_out.update_stereo(outputs[0] ? outputs[0] + offset :
NULL, outputs[1] ? outputs[1] + offset :
NULL, nsamples);
127 if (params[Metadata::param_meter_out])
128 *params[Metadata::param_meter_out] =
vumeter_out.level;
129 if (params[Metadata::param_clip_out])
130 *params[Metadata::param_clip_out] =
vumeter_out.clip > 0 ? 1.f : 0.f;
133 void bypassed(
float *
const *params,
unsigned int nsamples)
141template<
class Metadata>
145 inline void process(
float *
const *params,
const float *
const *inputs,
const float *
const *outputs,
unsigned int offset,
unsigned int nsamples)
147 if (params[Metadata::param_meter_in] || params[Metadata::param_clip_in]) {
152 if (params[Metadata::param_meter_in])
153 *params[Metadata::param_meter_in] =
vumeter_in.level;
154 if (params[Metadata::param_clip_in])
155 *params[Metadata::param_clip_in] =
vumeter_in.clip > 0 ? 1.f : 0.f;
157 if (params[Metadata::param_meter_out] || params[Metadata::param_clip_out]) {
162 if (params[Metadata::param_meter_out])
163 *params[Metadata::param_meter_out] =
vumeter_out.level;
164 if (params[Metadata::param_clip_out])
165 *params[Metadata::param_clip_out] =
vumeter_out.clip > 0 ? 1.f : 0.f;
168 void bypassed(
float *
const *params,
unsigned int nsamples)
177template<
class Metadata>
181 inline void process(
float *
const *params,
const float *
const *inputs,
const float *
const *outputs,
unsigned int offset,
unsigned int nsamples)
183 if (params[Metadata::param_meter_inL] || params[Metadata::param_clip_inL] || params[Metadata::param_meter_inR] || params[Metadata::param_clip_inR]) {
185 vumeter_in.update_stereo(inputs[0] ? inputs[0] + offset :
NULL, inputs[1] ? inputs[1] + offset :
NULL, nsamples);
188 if (params[Metadata::param_meter_inL])
189 *params[Metadata::param_meter_inL] =
vumeter_in.left.level;
190 if (params[Metadata::param_meter_inR])
191 *params[Metadata::param_meter_inR] =
vumeter_in.right.level;
192 if (params[Metadata::param_clip_inL])
193 *params[Metadata::param_clip_inL] =
vumeter_in.left.clip > 0 ? 1.f : 0.f;
194 if (params[Metadata::param_clip_inR])
195 *params[Metadata::param_clip_inR] =
vumeter_in.right.clip > 0 ? 1.f : 0.f;
197 if (params[Metadata::param_meter_outL] || params[Metadata::param_clip_outL] || params[Metadata::param_meter_outR] || params[Metadata::param_clip_outR]) {
199 vumeter_out.update_stereo(outputs[0] ? outputs[0] + offset :
NULL, outputs[1] ? outputs[1] + offset :
NULL, nsamples);
202 if (params[Metadata::param_meter_outL])
203 *params[Metadata::param_meter_outL] =
vumeter_out.left.level;
204 if (params[Metadata::param_meter_outR])
205 *params[Metadata::param_meter_outR] =
vumeter_out.right.level;
206 if (params[Metadata::param_clip_outL])
207 *params[Metadata::param_clip_outL] =
vumeter_out.left.clip > 0 ? 1.f : 0.f;
208 if (params[Metadata::param_clip_outR])
209 *params[Metadata::param_clip_outR] =
vumeter_out.right.clip > 0 ? 1.f : 0.f;
212 void bypassed(
float *
const *params,
unsigned int nsamples)
float abs(const fft_t *freqs, off_t x)
Definition OscilGen.cpp:52
Universal dual level metering for a specific plugin.
Definition plugin_tools.h:179
void bypassed(float *const *params, unsigned int nsamples)
Definition plugin_tools.h:212
void process(float *const *params, const float *const *inputs, const float *const *outputs, unsigned int offset, unsigned int nsamples)
Definition plugin_tools.h:181
Universal single stereo level metering for a specific plugin.
Definition plugin_tools.h:143
void bypassed(float *const *params, unsigned int nsamples)
Definition plugin_tools.h:168
void process(float *const *params, const float *const *inputs, const float *const *outputs, unsigned int offset, unsigned int nsamples)
Definition plugin_tools.h:145
Universal single stereo level metering for a specific plugin.
Definition plugin_tools.h:108
void process(float *const *params, const float *const *inputs, const float *const *outputs, unsigned int offset, unsigned int nsamples)
Definition plugin_tools.h:110
void bypassed(float *const *params, unsigned int nsamples)
Definition plugin_tools.h:133
Definition plugin_tools.h:32
std::vector< meter_data > meters
Definition plugin_tools.h:41
void init(float *const *prms, int *lvls, int *clps, int length, uint32_t srate)
Definition plugin_tools.h:44
void fall(unsigned int numsamples)
Definition plugin_tools.h:69
float *const * params
Definition plugin_tools.h:42
void process(float *values)
Definition plugin_tools.h:55
unsigned md
Definition inflate.c:944
register unsigned i
Definition inflate.c:1575
static PuglViewHint int value
Definition pugl.h:1708
unsigned int uint32_t
Definition mid.cpp:100
Definition benchmark.cpp:53
png_uint_32 length
Definition png.c:2247
meter vumeter_in
Definition plugin_tools.h:88
void set_sample_rate(double sample_rate)
Definition plugin_tools.h:98
Meter meter
Definition plugin_tools.h:87
in_out_metering_base()
Definition plugin_tools.h:89
void reset()
Definition plugin_tools.h:93
meter vumeter_out
Definition plugin_tools.h:88
Definition plugin_tools.h:35
dsp::vumeter meter
Definition plugin_tools.h:38
int level_idx
Definition plugin_tools.h:36
int clip_idx
Definition plugin_tools.h:37
Peak meter class.
Definition vumeter.h:30
ZCONST char * key
Definition crypt.c:587
typedef int(UZ_EXP MsgFn)()