25#ifndef LMMS_GRANULAR_PITCH_SHIFTER_EFFECT_H
26#define LMMS_GRANULAR_PITCH_SHIFTER_EFFECT_H
63 const auto index_floor =
static_cast<std::size_t
>(index);
64 const double fraction = index - index_floor;
69 else { v0 =
m_ringBuf[index_floor - 1][ch]; }
91 float A =
x * (1 -
x);
92 float B =
A * (1 +
k *
A);
99 return -6.0026608f +
p * (6.8773512f - 1.5838104f *
p);
105 float absInput = std::abs(input);
122 using namespace std::numbers;
123 const float g = std::tan(pi_v<float> * cutoff / sampleRate);
124 const float ginv =
g / (1.f +
g * (
g + sqrt2_v<float>));
126 m_g2 = 2 * (
g + sqrt2_v<float>) * ginv;
133 const float v1z =
m_v1;
134 const float v3 = input +
m_v0z - 2.f *
m_v2;
144 Grain(
double grainSpeedL,
double grainSpeedR,
double phaseSpeedL,
double phaseSpeedR,
double readPointL,
double readPointR) :
Definition EffectControls.h:44
Effect(const Plugin::Descriptor *_desc, Model *_parent, const Descriptor::SubPluginFeatures::Key *_key)
Definition Effect.cpp:41
ProcessStatus
Definition Effect.h:147
ProcessStatus processImpl(SampleFrame *buf, const f_cnt_t frames) override
Definition GranularPitchShifterEffect.cpp:64
friend class GranularPitchShifterControls
Definition GranularPitchShifterEffect.h:182
int m_writePoint
Definition GranularPitchShifterEffect.h:172
float getHermiteSample(double index, int ch)
Definition GranularPitchShifterEffect.h:61
std::array< double, 2 > m_truePitch
Definition GranularPitchShifterEffect.h:163
int m_ringBufLength
Definition GranularPitchShifterEffect.h:171
std::array< PrefilterLowpass, 2 > m_prefilter
Definition GranularPitchShifterEffect.h:161
float m_dcCoeff
Definition GranularPitchShifterEffect.h:169
float safetySaturate(float input)
Definition GranularPitchShifterEffect.h:103
void changeSampleRate()
Definition GranularPitchShifterEffect.cpp:247
std::array< float, 2 > m_dcVal
Definition GranularPitchShifterEffect.h:164
GranularPitchShifterEffect(Model *parent, const Descriptor::SubPluginFeatures::Key *key)
Definition GranularPitchShifterEffect.cpp:53
std::array< double, 2 > m_speed
Definition GranularPitchShifterEffect.h:162
float cosWindowApproxK(float p)
Definition GranularPitchShifterEffect.h:97
int m_grainCount
Definition GranularPitchShifterEffect.h:173
std::vector< Grain > m_grains
Definition GranularPitchShifterEffect.h:159
EffectControls * controls() override
Definition GranularPitchShifterEffect.h:55
bool m_updatePitches
Definition GranularPitchShifterEffect.h:180
float cosHalfWindowApprox(float x, float k)
Definition GranularPitchShifterEffect.h:89
int m_timeSinceLastGrain
Definition GranularPitchShifterEffect.h:174
std::vector< std::array< float, 2 > > m_ringBuf
Definition GranularPitchShifterEffect.h:158
float m_nextWaitRandomization
Definition GranularPitchShifterEffect.h:168
void sampleRateNeedsUpdate()
Definition GranularPitchShifterEffect.h:110
double m_oldGlide
Definition GranularPitchShifterEffect.h:176
bool m_sampleRateNeedsUpdate
Definition GranularPitchShifterEffect.h:179
float m_sampleRate
Definition GranularPitchShifterEffect.h:166
GranularPitchShifterControls m_granularpitchshifterControls
Definition GranularPitchShifterEffect.h:156
float m_nyquist
Definition GranularPitchShifterEffect.h:167
~GranularPitchShifterEffect() override=default
double m_glideCoef
Definition GranularPitchShifterEffect.h:177
const Descriptor::SubPluginFeatures::Key & key() const
Definition Plugin.h:266
Definition SampleFrame.h:41
register unsigned k
Definition inflate.c:946
int g
Definition inflate.c:1573
unsigned x[BMAX+1]
Definition inflate.c:1586
static void v2(register WDL_FFT_REAL *a)
Definition fft.c:1099
static uintptr_t parent
Definition pugl.h:1644
#define A(x)
Definition lice_arc.cpp:13
Definition AudioAlsa.cpp:35
constexpr float PrefilterBandwidth
Definition GranularPitchShifterEffect.h:38
constexpr float DcRemovalHz
Definition GranularPitchShifterEffect.h:42
float hermiteInterpolate(float x0, float x1, float x2, float x3, float frac_pos)
Definition interpolation.h:34
constexpr float SatuStrength
Definition GranularPitchShifterEffect.h:44
constexpr float SatuSafeVol
Definition GranularPitchShifterEffect.h:43
constexpr double GlideSnagRadius
Definition GranularPitchShifterEffect.h:39
constexpr int SafetyLatency
Definition GranularPitchShifterEffect.h:40
constexpr float RangeSeconds[5]
Definition GranularPitchShifterEffect.h:41
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
auto fraction(std::floating_point auto x) noexcept
Returns the fractional part of a float, a value between -1.0f and 1.0f.
Definition lmms_math.h:63
std::array< double, 2 > readPoint
Definition GranularPitchShifterEffect.h:150
double phase
Definition GranularPitchShifterEffect.h:153
std::array< double, 2 > phaseSpeed
Definition GranularPitchShifterEffect.h:151
std::array< double, 2 > grainSpeed
Definition GranularPitchShifterEffect.h:152
Grain(double grainSpeedL, double grainSpeedR, double phaseSpeedL, double phaseSpeedR, double readPointL, double readPointR)
Definition GranularPitchShifterEffect.h:144
Definition GranularPitchShifterEffect.h:116
float process(float input)
Definition GranularPitchShifterEffect.h:131
float m_g4
Definition GranularPitchShifterEffect.h:118
float m_v0z
Definition GranularPitchShifterEffect.h:117
float m_g2
Definition GranularPitchShifterEffect.h:118
float m_v2
Definition GranularPitchShifterEffect.h:117
void setCoefs(float sampleRate, float cutoff)
Definition GranularPitchShifterEffect.h:120
float m_v1
Definition GranularPitchShifterEffect.h:117
float m_g1
Definition GranularPitchShifterEffect.h:118
float m_g3
Definition GranularPitchShifterEffect.h:118
uch * p
Definition crypt.c:594