23template <
int Z,
int O>
32 float impulse[2 * Z][O];
37 for (
int o = 0; o < O; o++) {
41 for (
int z = 0; z < 2 * Z; z++) {
45 for (
int z = 2 * Z; z < 2 * Z + 4; z++) {
64 template <
typename T =
float>
78 if (!(0 < p && p <= 1))
82 float subsample = (1 - p) * O;
83 int o = (int) subsample;
84 float t = subsample - o;
87 for (
int z = 0; z < 2 * Z; z += 4) {
95 for (
int zi = 0; zi < 4; zi++) {
102 template <
typename T>
109 std::memcpy(s.
buffer, s.
buffer + 2 * Z, 2 * Z *
sizeof(T));
110 std::memset(s.
buffer + 2 * Z, 0, 2 * Z *
sizeof(T));
119template <
int Z,
int O,
typename T =
float>
Digital signal processing routines and classes.
Definition approx.hpp:6
T catmullRomInterpolate(T y0, T y1, T y2, T y3, T t)
Catmull-Rom cubic interpolation t is the fractional position between y1 and y2.
Definition common.hpp:94
void minBlepImpulse(int Z, int O, float *output)
Computes the minimum-phase bandlimited step (MinBLEP) Z: number of zero-crossings on each side of the...
Vector< float, 4 > float_4
Definition Vector.hpp:340
Root namespace for the Rack API.
Definition AudioDisplay.hpp:9
Deprecated.
Definition minblep.hpp:120
T process()
Definition minblep.hpp:132
MinBlep< Z, O > minBlep
Definition minblep.hpp:121
MinBlep< Z, O >::template State< T > state
Definition minblep.hpp:122
void insertDiscontinuity(float p, T x)
In this class, p uses the range (-1, 0] to represent a subsample position.
Definition minblep.hpp:128
Definition minblep.hpp:65
int32_t bufferIndex
Definition minblep.hpp:68
T buffer[4 *Z]
Definition minblep.hpp:67
Holds a precomputed minBLEP impulse response, reordered to efficiently insert into an audio buffer.
Definition minblep.hpp:24
const float * getImpulse(int o, int z) const
Get pointer to impulse data, handling o wrapping and z offset.
Definition minblep.hpp:52
T process(State< T > &s) const
Should be called every frame after inserting any discontinuities.
Definition minblep.hpp:103
float impulseReordered[O][1+2 *Z+4]
Reordered impulse response for cubic interpolation, minus 1.0.
Definition minblep.hpp:29
void insertDiscontinuity(State< T > &s, float p, T x) const
Places a discontinuity with magnitude x at 0 < p <= 1 relative to the current frame.
Definition minblep.hpp:77
MinBlep()
Definition minblep.hpp:31
static Vector load(const float *x)
Reads an array of 4 values.
Definition Vector.hpp:74