A pulse oscillator, with optional BLEP, and pulsewidth control. More...
#include <marvin_Oscillator.h>
Public Member Functions | |
~PulseOscillator () noexcept override=default | |
SampleType | operator() () noexcept override |
SampleType | operator() (SampleType phase) noexcept override |
void | setPulsewidth (SampleType newPulsewidth) noexcept |
![]() | |
virtual | ~OscillatorBase () noexcept=default |
virtual void | initialise (double sampleRate) |
virtual void | reset () noexcept |
void | setFrequency (SampleType newFrequency) noexcept |
void | setPhaseOffset (SampleType newPhaseOffset) noexcept |
Additional Inherited Members | |
![]() | |
void | incrementPhase () noexcept |
![]() | |
double | m_sampleRate {} |
SampleType | m_phaseIncrement { static_cast<SampleType>(0.0) } |
SampleType | m_phase { static_cast<SampleType>(0.0) } |
SampleType | m_phaseOffset { static_cast<SampleType>(0.0) } |
A pulse oscillator, with optional BLEP, and pulsewidth control.
|
overridedefaultnoexcept |
|
nodiscardoverridevirtualnoexcept |
Processes the next sample of the wave, handling phase increments internally. Make sure to call prepareToPlay and setFrequency before calling this function!
Implements marvin::dsp::oscillators::OscillatorBase< SampleType >.
|
nodiscardoverridevirtualnoexcept |
Processes the next sample of the wave, using the provided phase - this overload will not update the internal phase of the oscillator, so the caller is entirely responsible for incrementing the phase according to frequency, etc. Does not require you to call initialise beforehand for this reason.
phase | The phase the oscillator should use, between 0 to 1. |
Implements marvin::dsp::oscillators::OscillatorBase< SampleType >.
|
noexcept |
Sets the oscillator's pulsewidth. Note that the internal pulsewidth
variable this function sets is not atomic, so ensure this function is either called on the audio thread, or that the audio thread is not running when this function is called.
newPulsewidth | The duration of an oscillation, between 0 and 1, that the pulse should be high for. |