OpenWareLaboratory
SampleOscillator< im > Class Template Reference
Inheritance diagram for SampleOscillator< im >:
Collaboration diagram for SampleOscillator< im >:

Public Types

enum  RepeatMode { REPEAT_REVERSE = -1 , REPEAT_NONE = 0 , REPEAT_FORWARD = 1 }
 

Public Member Functions

size_t findZeroCrossing (size_t index)
 
float generate ()
 Produce the next consecutive sample. More...
 
float generate (float fm)
 Produce a sample with frequency modulation. More...
 
void generate (FloatArray output)
 Produce a block of samples. More...
 
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...
 
FloatArray getSample ()
 
size_t getSampleLength ()
 
void getSamples (FloatArray output)
 
void getSamples (FloatArray output, FloatArray fm)
 
float interpolate (float index, FloatArray data)
 
float interpolate (float index, FloatArray data)
 
float interpolate (float index, FloatArray data)
 
void reset ()
 Reset oscillator (typically resets phase) More...
 
 SampleOscillator (float sr, FloatArray sample)
 
void setDuration (float duration)
 
void setFrequency (float freq)
 Set oscillator frequency in Hertz. More...
 
void setPhase (float phase)
 Set current oscillator phase in radians. More...
 
void setRepeatMode (RepeatMode mode)
 
void setSample (FloatArray sample)
 
virtual void setSampleRate (float value)
 Set oscillator sample rate. More...
 

Static Public Member Functions

static SampleOscillatorcreate (float sr, FloatArray buf)
 
static void destroy (SampleOscillator *obj)
 

Detailed Description

template<InterpolationMethod im>
class SampleOscillator< im >

Definition at line 7 of file SampleOscillator.h.

Member Enumeration Documentation

◆ RepeatMode

template<InterpolationMethod im>
enum SampleOscillator::RepeatMode
Enumerator
REPEAT_REVERSE 
REPEAT_NONE 
REPEAT_FORWARD 

Definition at line 9 of file SampleOscillator.h.

Constructor & Destructor Documentation

◆ SampleOscillator()

template<InterpolationMethod im>
SampleOscillator< im >::SampleOscillator ( float  sr,
FloatArray  sample 
)
inline

Definition at line 24 of file SampleOscillator.h.

Referenced by SampleOscillator< im >::create().

Member Function Documentation

◆ create()

template<InterpolationMethod im>
static SampleOscillator* SampleOscillator< im >::create ( float  sr,
FloatArray  buf 
)
inlinestatic

Definition at line 144 of file SampleOscillator.h.

References SampleOscillator< im >::SampleOscillator().

◆ destroy()

template<InterpolationMethod im>
static void SampleOscillator< im >::destroy ( SampleOscillator< im > *  obj)
inlinestatic

Definition at line 147 of file SampleOscillator.h.

◆ findZeroCrossing()

template<InterpolationMethod im>
size_t SampleOscillator< im >::findZeroCrossing ( size_t  index)
inline

Definition at line 125 of file SampleOscillator.h.

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

Referenced by SampleOscillator< im >::setDuration().

◆ generate() [1/4]

template<InterpolationMethod im>
float SampleOscillator< im >::generate ( )
inlinevirtual

Produce the next consecutive sample.

Reimplemented from SignalGenerator.

Definition at line 57 of file SampleOscillator.h.

References SampleOscillator< im >::interpolate(), SampleOscillator< im >::REPEAT_FORWARD, and SampleOscillator< im >::REPEAT_REVERSE.

Referenced by SampleOscillator< im >::generate().

◆ generate() [2/4]

template<InterpolationMethod im>
float SampleOscillator< im >::generate ( float  fm)
inlinevirtual

Produce a sample with frequency modulation.

Implements Oscillator.

Definition at line 54 of file SampleOscillator.h.

References SampleOscillator< im >::generate().

◆ generate() [3/4]

template<InterpolationMethod im>
void SampleOscillator< im >::generate ( FloatArray  output)
inlinevirtual

◆ generate() [4/4]

template<InterpolationMethod im>
void SampleOscillator< im >::generate ( FloatArray  output,
FloatArray  fm 
)
inlinevirtual

Produce a block of samples with frequency modulation.

Reimplemented from Oscillator.

Definition at line 122 of file SampleOscillator.h.

References SampleOscillator< im >::generate().

◆ getFrequency()

template<InterpolationMethod im>
float SampleOscillator< im >::getFrequency ( )
inlinevirtual

Get oscillator frequency in Hertz.

Implements Oscillator.

Definition at line 30 of file SampleOscillator.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()

template<InterpolationMethod im>
float SampleOscillator< im >::getPhase ( )
inlinevirtual

Get current oscillator phase in radians.

Returns
a value between 0 and 2*pi

Implements Oscillator.

Definition at line 51 of file SampleOscillator.h.

References M_PI.

◆ getSample()

template<InterpolationMethod im>
FloatArray SampleOscillator< im >::getSample ( )
inline

Definition at line 38 of file SampleOscillator.h.

◆ getSampleLength()

template<InterpolationMethod im>
size_t SampleOscillator< im >::getSampleLength ( )
inline

Definition at line 141 of file SampleOscillator.h.

References SimpleArray< T >::getSize().

Referenced by SampleOscillator< im >::setDuration().

◆ 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().

◆ interpolate() [1/3]

template<InterpolationMethod im>
float SampleOscillator< im >::interpolate ( float  index,
FloatArray  data 
)

◆ interpolate() [2/3]

float SampleOscillator< LINEAR_INTERPOLATION >::interpolate ( float  index,
FloatArray  data 
)

Definition at line 153 of file SampleOscillator.h.

References Interpolator::linear().

◆ interpolate() [3/3]

float SampleOscillator< COSINE_INTERPOLATION >::interpolate ( float  index,
FloatArray  data 
)

Definition at line 162 of file SampleOscillator.h.

References Interpolator::cosine().

◆ reset()

template<InterpolationMethod im>
void SampleOscillator< im >::reset ( )
inlinevirtual

Reset oscillator (typically resets phase)

Implements Oscillator.

Definition at line 44 of file SampleOscillator.h.

◆ setDuration()

template<InterpolationMethod im>
void SampleOscillator< im >::setDuration ( float  duration)
inline

◆ setFrequency()

template<InterpolationMethod im>
void SampleOscillator< im >::setFrequency ( float  value)
inlinevirtual

Set oscillator frequency in Hertz.

Implements Oscillator.

Definition at line 27 of file SampleOscillator.h.

◆ setPhase()

template<InterpolationMethod im>
void SampleOscillator< im >::setPhase ( float  phase)
inlinevirtual

Set current oscillator phase in radians.

Parameters
phasea value between 0 and 2*pi

Implements Oscillator.

Definition at line 48 of file SampleOscillator.h.

References M_PI.

◆ setRepeatMode()

template<InterpolationMethod im>
void SampleOscillator< im >::setRepeatMode ( RepeatMode  mode)
inline

Definition at line 41 of file SampleOscillator.h.

◆ setSample()

template<InterpolationMethod im>
void SampleOscillator< im >::setSample ( FloatArray  sample)
inline

Definition at line 33 of file SampleOscillator.h.

References SimpleArray< T >::getSize().

◆ setSampleRate()


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