21#ifndef ABSTRACT_OSCILLATOR_H_
22#define ABSTRACT_OSCILLATOR_H_
26#include "pq_phase_utils.h"
50 virtual float period()
const {
return _period; }
60#if PQ_OPTIMIZE_FOR_CPU
63 return periodToFrequency(_period);
71 virtual void bpm(
float bpm);
83 virtual float phase()
const {
return pq::fixed32ToFloat(_phase32); }
110 virtual void setTime(
float time);
116 virtual void addTime(
float time);
134 virtual void reverse() { _isForward =
false; }
150 void _stepPhase(
float deltaTimeSecondsTimesFixed32Max);
153 virtual void _setPhase32(q0_32u_t phase32);
156 virtual void _setRunning(
bool isRunning);
159 void _randomPickNext();
164#if PQ_OPTIMIZE_FOR_CPU
171 float _phaseShiftOrRandomFrequencyRatio = 0;
177 bool _overflowed : 1;
186 bool _valueNeedsUpdate : 1;
189 uint8_t _randomness : 4;
Triangle/sawtooth oscillator.
Definition AbstractOscillator.h:33
virtual float randomness() const
Returns the randomness level in [0, 1].
Definition AbstractOscillator.cpp:63
virtual float period() const
Returns the period (in seconds).
Definition AbstractOscillator.h:50
virtual void toggleReverse()
Toggles the direction of oscillation.
Definition AbstractOscillator.h:137
virtual float phaseShift() const
Returns the phase shift (ie.
Definition AbstractOscillator.cpp:166
virtual void setForward(bool isForward)
Sets the direction of oscillation.
Definition AbstractOscillator.h:128
virtual float timeToPhase(float time) const
Utility function to convert time to phase.
Definition AbstractOscillator.cpp:170
virtual float phase() const
Returns the phase (in % of period).
Definition AbstractOscillator.h:83
virtual bool isForward() const
Returns true iff the wave is moving forward in time.
Definition AbstractOscillator.h:122
virtual void randomize(float randomness=1.0f)
Sets the randomness level in [0, 1] (0: no randomness, 1: full randomness).
Definition AbstractOscillator.cpp:67
virtual void forward()
Sets the direction of oscillation to move forward in time.
Definition AbstractOscillator.h:131
virtual float frequency() const
Returns the frequency (in Hz).
Definition AbstractOscillator.h:59
virtual float bpm() const
Returns the frequency (in BPM).
Definition AbstractOscillator.h:74
virtual void reverse()
Sets the direction of oscillation to move backward in time.
Definition AbstractOscillator.h:134
virtual void addTime(float time)
Adds time to current time (in seconds).
Definition AbstractOscillator.cpp:179
virtual void noRandomize()
Disables randomness.
Definition AbstractOscillator.h:146
virtual bool isRunning() const
Returns true iff the wave is currently running.
Definition AbstractOscillator.h:119
virtual void setTime(float time)
Forces current time (in seconds).
Definition AbstractOscillator.cpp:172
Abstract class for time-based objects.
Definition Timeable.h:27