1 #ifndef __VosimOscillator_h
2 #define __VosimOscillator_h
17 formant1(osc1), formant2(osc2) {}
23 float square =
phase < 0 ? 0.0f : 1.0f;
25 float sample = saw + (square - saw) *
waveshape;
48 sample = (s1*s1 + s2*s2)*sample - 1;
74 *out++ = (s1*s1 + s2*s2)*sample;
92 *out++ = (s1*s1 + s2*s2)*sample;
This class contains useful methods for manipulating arrays of floats.
void setFrequency(float freq)
Set oscillator frequency in Hertz.
void setPhase(float ph)
Set current oscillator phase in radians.
float getFrequency()
Get oscillator frequency in Hertz.
void reset()
Reset oscillator (typically resets phase)
static SineOscillator * create(float sr)
void setSampleRate(float sr)
Set oscillator sample rate.
static void destroy(SineOscillator *osc)
T * getData()
Get the data stored in the Array.
void generate(FloatArray output)
Produce a block of samples.
VOSIM-type oscillator based on Rob Hordijk's Nord Modular patch.
void generate(FloatArray output)
Produce a block of samples.
static VosimOscillator * create(float sr)
VosimOscillator(SineOscillator *osc2, SineOscillator *osc1)
static void destroy(VosimOscillator *obj)
float generate()
Produce the next consecutive sample.
void setFormant1(float frequency)
void setFormant2(float frequency)
static constexpr float begin_phase
void setWaveshape(float value)
float generate(float fm)
Produce a sample with frequency modulation.
void generate(FloatArray output, FloatArray input)
Produce a block of samples with frequency modulation.
static constexpr float end_phase