You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
59 lines
1.3 KiB
4 years ago
|
#pragma once
|
||
|
#ifndef DSY_CLOCKEDNOISE_H
|
||
|
#define DSY_CLOCKEDNOISE_H
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#ifdef __cplusplus
|
||
|
|
||
|
/** @file clockednoise.h */
|
||
|
|
||
|
namespace daisysp
|
||
|
{
|
||
|
/**
|
||
|
@brief Clocked Noise Module
|
||
|
@author Ported by Ben Sergentanis
|
||
|
@date Jan 2021
|
||
|
Noise processed by a sample and hold running at a target frequency. \n \n
|
||
|
Ported from pichenettes/eurorack/plaits/dsp/noise/clocked_noise.h \n
|
||
|
to an independent module. \n
|
||
|
Original code written by Emilie Gillet in 2016. \n
|
||
|
*/
|
||
|
class ClockedNoise
|
||
|
{
|
||
|
public:
|
||
|
ClockedNoise() {}
|
||
|
~ClockedNoise() {}
|
||
|
|
||
|
/** Initialize module
|
||
|
\param sample_rate Audio engine sample rate
|
||
|
*/
|
||
|
void Init(float sample_rate);
|
||
|
|
||
|
/** Get the next floating point sample */
|
||
|
float Process();
|
||
|
|
||
|
/** Set the frequency at which the next sample is generated.
|
||
|
\param freq Frequency in Hz
|
||
|
*/
|
||
|
void SetFreq(float freq);
|
||
|
|
||
|
/** Calling this forces another random float to be generated */
|
||
|
void Sync();
|
||
|
|
||
|
private:
|
||
|
// Oscillator state.
|
||
|
float phase_;
|
||
|
float sample_;
|
||
|
float next_sample_;
|
||
|
|
||
|
// For interpolation of parameters.
|
||
|
float frequency_;
|
||
|
|
||
|
float sample_rate_;
|
||
|
|
||
|
static constexpr float kRandFrac = 1.f / (float)RAND_MAX;
|
||
|
};
|
||
|
} // namespace daisysp
|
||
|
#endif
|
||
|
#endif
|