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;
Triangle/sawtooth oscillator.
Definition AbstractOscillator.h:33
virtual float jitter() const
Returns the randomness level in [0, 1].
Definition AbstractOscillator.cpp:71
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:158
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:162
virtual float jitteredFrequency() const
Returns the frequency actually used for the current cycle.
Definition AbstractOscillator.cpp:89
Parameter Bpm()
Returns the BPM as a parameter.
Definition AbstractOscillator.h:88
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
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:93
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:45
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
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:171
virtual bool isRunning() const
Returns true iff the wave is currently running.
Definition AbstractOscillator.h:167
virtual void setTime(float time)
Forces current time (in seconds).
Definition AbstractOscillator.cpp:164
virtual void noJitter()
Disables jittering.
Definition AbstractOscillator.h:126
Abstract class for time-based objects.
Definition Timeable.h:27