21#ifndef ABSTRACT_OSCILLATOR_H_
22#define ABSTRACT_OSCILLATOR_H_
26#include "pq_phase_utils.h"
55 virtual float period()
const {
return _period; }
68#if PQ_OPTIMIZE_FOR_CPU
71 return periodToFrequency(_period);
82 virtual void bpm(
float bpm);
97 virtual float phase()
const {
return pq::fixed32ToFloat(_phase32); }
123 virtual float jitter()
const;
158 virtual void setTime(
float time);
164 virtual void addTime(
float time);
182 virtual void reverse() { _isForward =
false; }
189 bool _hasJitter()
const {
return bool(_jitter); }
192 void _stepPhase(
float deltaTimeSecondsTimesFixed32Max);
195 virtual void _setPhase32(q0_32u_t phase32);
198 virtual void _setRunning(
bool isRunning);
201 void _randomPickNext();
206#if PQ_OPTIMIZE_FOR_CPU
213 float _phaseShiftOrRandomFrequencyRatio;
219 bool _overflowed : 1;
228 bool _valueNeedsUpdate : 1;
232 bool _passedSkew : 1;
virtual float jitter() const
Returns the randomness level in [0, 1].
Definition AbstractOscillator.cpp:78
Parameter Jitter()
Returns the jitter as a parameter.
Definition AbstractOscillator.h:129
virtual float period() const
Returns the period (in seconds).
Definition AbstractOscillator.h:55
virtual void toggleReverse()
Toggles the direction of oscillation.
Definition AbstractOscillator.h:185
virtual float phaseShift() const
Returns the phase shift (ie.
Definition AbstractOscillator.cpp:165
virtual void setForward(bool isForward)
Sets the direction of oscillation.
Definition AbstractOscillator.h:176
Parameter Phase()
Returns the phase as a parameter.
Definition AbstractOscillator.h:100
Parameter PhaseShift()
Returns the phase shift as a parameter.
Definition AbstractOscillator.h:117
virtual float timeToPhase(float time) const
Utility function to convert time to phase.
Definition AbstractOscillator.cpp:169
virtual float jitteredFrequency() const
Returns the frequency actually used for the current cycle.
Definition AbstractOscillator.cpp:96
Parameter Bpm()
Returns the BPM as a parameter.
Definition AbstractOscillator.h:88
virtual void frequency(float frequency)
Sets the frequency (in Hz).
Definition AbstractOscillator.cpp:135
virtual float phase() const
Returns the phase (in % of period).
Definition AbstractOscillator.h:97
virtual bool isForward() const
Returns true iff the wave is moving forward in time.
Definition AbstractOscillator.h:170
virtual void jitter(float jitter)
Sets the jittering level in [0, 1] (0: no jitter, 1: max jitter).
Definition AbstractOscillator.cpp:82
AbstractOscillator(float period)
Constructor.
Definition AbstractOscillator.cpp:30
virtual void bpm(float bpm)
Sets the frequency in beats-per-minute.
Definition AbstractOscillator.cpp:149
Parameter Frequency()
Returns the frequency as a parameter.
Definition AbstractOscillator.h:76
virtual float jitteredPeriod() const
Returns the period actually used for the current cycle.
Definition AbstractOscillator.cpp:100
virtual void forward()
Sets the direction of oscillation to move forward in time.
Definition AbstractOscillator.h:179
virtual void start()
Starts/restarts the oscillator.
Definition AbstractOscillator.cpp:46
virtual float frequency() const
Returns the frequency (in Hz).
Definition AbstractOscillator.h:67
virtual float bpm() const
Returns the frequency (in BPM).
Definition AbstractOscillator.h:85
virtual void phaseShift(float phaseShift)
Sets the phase shift (ie.
Definition AbstractOscillator.cpp:157
virtual void phase(float phase)
Sets the phase at % of period.
Definition AbstractOscillator.cpp:153
Parameter Period()
Returns the period as a parameter.
Definition AbstractOscillator.h:58
virtual void reverse()
Sets the direction of oscillation to move backward in time.
Definition AbstractOscillator.h:182
virtual void addTime(float time)
Adds time to current time (in seconds).
Definition AbstractOscillator.cpp:178
virtual bool isRunning() const
Returns true iff the wave is currently running.
Definition AbstractOscillator.h:167
virtual void period(float period)
Sets the period (in seconds).
Definition AbstractOscillator.cpp:123
virtual void setTime(float time)
Forces current time (in seconds).
Definition AbstractOscillator.cpp:171
virtual void noJitter()
Disables jittering.
Definition AbstractOscillator.h:126