OpenWareLaboratory
AgnesiOscillator Class Reference

Oscillator that produces an Agnesi curve (Witch of Agnesi) With a=0.5, the output is between near 0 (0.038 for N=5) and 1. More...

Inheritance diagram for AgnesiOscillator:
Collaboration diagram for AgnesiOscillator:

Public Member Functions

 AgnesiOscillator (float sr, float a, float N)
 
float generate ()
 Produce the next consecutive sample. More...
 
virtual float generate ()
 Produce the next consecutive sample. More...
 
float generate (float fm)
 Produce a sample with frequency modulation. More...
 
virtual void generate (FloatArray output)
 Produce a block of samples. More...
 
virtual void generate (FloatArray output)
 Produce a block of samples. More...
 
virtual void generate (FloatArray output, FloatArray fm)
 Produce a block of samples with frequency modulation. More...
 
float getFrequency ()
 Get oscillator frequency in Hertz. More...
 
float getNextSample ()
 
float getNextSample (float fm)
 
float getPhase ()
 Get current oscillator phase in radians. More...
 
void getSamples (FloatArray output)
 
void getSamples (FloatArray output, FloatArray fm)
 
void normalise ()
 Normalise offset and gain so that signal is between -1 and 1. More...
 
void reset ()
 Reset oscillator (typically resets phase) More...
 
void setFrequency (float freq)
 Set oscillator frequency in Hertz. More...
 
void setPhase (float phase)
 Set current oscillator phase in radians. More...
 
virtual void setSampleRate (float value)
 Set oscillator sample rate. More...
 

Static Public Member Functions

static float agnesi (float x, float a)
 
static AgnesiOscillatorcreate (float sr, float a=0.5, float N=5)
 
static void destroy (AgnesiOscillator *obj)
 

Detailed Description

Oscillator that produces an Agnesi curve (Witch of Agnesi) With a=0.5, the output is between near 0 (0.038 for N=5) and 1.

N sets the x range for one half period, which determines the y offset.

Definition at line 11 of file AgnesiOscillator.h.

Constructor & Destructor Documentation

◆ AgnesiOscillator()

AgnesiOscillator::AgnesiOscillator ( float  sr,
float  a,
float  N 
)
inline

Definition at line 21 of file AgnesiOscillator.h.

Referenced by create().

Member Function Documentation

◆ agnesi()

static float AgnesiOscillator::agnesi ( float  x,
float  a 
)
inlinestatic

Definition at line 23 of file AgnesiOscillator.h.

Referenced by generate(), and normalise().

◆ create()

static AgnesiOscillator* AgnesiOscillator::create ( float  sr,
float  a = 0.5,
float  N = 5 
)
inlinestatic

Definition at line 65 of file AgnesiOscillator.h.

References AgnesiOscillator(), and normalise().

◆ destroy()

static void AgnesiOscillator::destroy ( AgnesiOscillator obj)
inlinestatic

Definition at line 70 of file AgnesiOscillator.h.

◆ generate() [1/6]

float AgnesiOscillator::generate ( )
inlinevirtual

Produce the next consecutive sample.

Reimplemented from SignalGenerator.

Definition at line 49 of file AgnesiOscillator.h.

References agnesi(), and clamp.

◆ generate() [2/6]

virtual float SignalGenerator::generate
inlinevirtual

Produce the next consecutive sample.

Reimplemented from SignalGenerator.

Definition at line 19 of file SignalGenerator.h.

◆ generate() [3/6]

float AgnesiOscillator::generate ( float  fm)
inlinevirtual

Produce a sample with frequency modulation.

Implements Oscillator.

Definition at line 56 of file AgnesiOscillator.h.

References agnesi(), and clamp.

◆ generate() [4/6]

virtual void SignalGenerator::generate
inlinevirtual

Produce a block of samples.

Reimplemented from SignalGenerator.

Definition at line 25 of file SignalGenerator.h.

◆ generate() [5/6]

◆ generate() [6/6]

virtual void Oscillator::generate ( FloatArray  output,
FloatArray  fm 
)
inlinevirtualinherited

Produce a block of samples with frequency modulation.

Reimplemented in VosimOscillator, SineOscillator, SampleOscillator< im >, PolyBlepOscillator, and MorphingOscillator.

Definition at line 50 of file Oscillator.h.

References Oscillator::generate(), and SimpleArray< T >::getSize().

◆ getFrequency()

float AgnesiOscillator::getFrequency ( )
inlinevirtual

Get oscillator frequency in Hertz.

Implements Oscillator.

Definition at line 29 of file AgnesiOscillator.h.

◆ getNextSample() [1/2]

float Oscillator::getNextSample ( )
inlineinherited

Definition at line 55 of file Oscillator.h.

References Oscillator::generate().

◆ getNextSample() [2/2]

float Oscillator::getNextSample ( float  fm)
inlineinherited

Definition at line 57 of file Oscillator.h.

References Oscillator::generate().

◆ getPhase()

float AgnesiOscillator::getPhase ( )
inlinevirtual

Get current oscillator phase in radians.

Returns
a value between 0 and 2*pi

Implements Oscillator.

Definition at line 35 of file AgnesiOscillator.h.

References M_PI.

◆ getSamples() [1/2]

void Oscillator::getSamples ( FloatArray  output)
inlineinherited

Definition at line 59 of file Oscillator.h.

References Oscillator::generate().

◆ getSamples() [2/2]

void Oscillator::getSamples ( FloatArray  output,
FloatArray  fm 
)
inlineinherited

Definition at line 63 of file Oscillator.h.

References Oscillator::generate().

◆ normalise()

void AgnesiOscillator::normalise ( )
inline

Normalise offset and gain so that signal is between -1 and 1.

Definition at line 44 of file AgnesiOscillator.h.

References agnesi().

Referenced by create().

◆ reset()

void AgnesiOscillator::reset ( )
inlinevirtual

Reset oscillator (typically resets phase)

Implements Oscillator.

Definition at line 38 of file AgnesiOscillator.h.

◆ setFrequency()

void AgnesiOscillator::setFrequency ( float  value)
inlinevirtual

Set oscillator frequency in Hertz.

Implements Oscillator.

Definition at line 26 of file AgnesiOscillator.h.

◆ setPhase()

void AgnesiOscillator::setPhase ( float  phase)
inlinevirtual

Set current oscillator phase in radians.

Parameters
phasea value between 0 and 2*pi

Implements Oscillator.

Definition at line 32 of file AgnesiOscillator.h.

References M_PI.

◆ setSampleRate()


The documentation for this class was generated from the following file: