OpenWareLaboratory
ComplexOscillator.h
Go to the documentation of this file.
1 #ifndef __COMPLEX_OSCILLATOR_H__
2 #define __COMPLEX_OSCILLATOR_H__
3 
4 #include "SignalGenerator.h"
5 #include "Oscillator.h"
6 
15 public:
16  ComplexOscillator() = default;
17  virtual ~ComplexOscillator() = default;
22  virtual void setSampleRate(float value){}
26  virtual void setFrequency(float value) = 0;
30  virtual float getFrequency() = 0;
35  virtual void setPhase(float phase) = 0;
40  virtual float getPhase() = 0;
44  virtual void reset() = 0;
48  virtual ComplexFloat generate(float fm) = 0;
52  virtual void generate(ComplexFloatArray output, FloatArray fm){
53  for(size_t i=0; i<output.getSize(); ++i)
54  output[i] = generate(fm[i]);
55  }
56 
57 };
58 
59 template<typename OscillatorClass>
61 #endif
A complex oscillator is a MultiSignalGenerator with 2 channels that operates at a given frequency and...
ComplexOscillator()=default
virtual void setSampleRate(float value)
Set oscillator sample rate.
virtual float getPhase()=0
Get current oscillator phase in radians.
virtual void setFrequency(float value)=0
Set oscillator frequency in Hertz.
virtual void setPhase(float phase)=0
Set current oscillator phase in radians.
virtual ~ComplexOscillator()=default
virtual float getFrequency()=0
Get oscillator frequency in Hertz.
virtual ComplexFloat generate()=0
Produce the next consecutive sample.
virtual void reset()=0
Reset oscillator (typically resets phase)
virtual void generate(ComplexFloatArray output, FloatArray fm)
Produce a block of samples with frequency modulation.
virtual ComplexFloat generate(float fm)=0
Produce a sample with frequency modulation.
Base class for stereo signal generators such as Oscillators.
virtual ComplexFloat generate()=0
Produce the next consecutive sample.
This class contains useful methods for manipulating arrays of floats.
Definition: FloatArray.h:12
size_t getSize() const
Definition: SimpleArray.h:31
A structure defining a floating point complex number as two members of type float.