Mozzi  version v1.1.0
sound synthesis library for Arduino
Phasor< UPDATE_RATE > Class Template Reference

Phasor repeatedly generates a high resolution ramp at a variable frequency. More...

#include <Phasor.h>

Public Member Functions

 Phasor ()
 Constructor. More...
 
uint32_t next ()
 Increments one step along the phase. More...
 
void set (uint32_t value)
 Set the current value of the phasor. More...
 
void setFreq (int frequency)
 Set the Phasor frequency with an unsigned int. More...
 
void setFreq (float frequency)
 Set the Phasor frequency with a float. More...
 
uint32_t phaseIncFromFreq (int frequency)
 phaseIncFromFreq() and setPhaseInc() are for saving processor time when sliding between frequencies. More...
 
void setPhaseInc (uint32_t stepsize)
 Set a specific phase increment. More...
 

Detailed Description

template<unsigned int UPDATE_RATE>
class Phasor< UPDATE_RATE >

Phasor repeatedly generates a high resolution ramp at a variable frequency.

The output of Phasor.next() is an unsigned number between 0 and 4294967295, the maximum that can be expressed by an unsigned 32 bit integer.

Template Parameters
UPDATE_RATEthe rate at which the Phasor will be updated, usually CONTROL_RATE or AUDIO_RATE.

Definition at line 32 of file Phasor.h.

Constructor & Destructor Documentation

◆ Phasor()

template<unsigned int UPDATE_RATE>
Phasor< UPDATE_RATE >::Phasor ( )
inline

Constructor.

"Phasor <AUDIO_RATE> myphasor;" makes a Phasor which updates at AUDIO_RATE.

Definition at line 42 of file Phasor.h.

Member Function Documentation

◆ next()

template<unsigned int UPDATE_RATE>
uint32_t Phasor< UPDATE_RATE >::next ( )
inline

Increments one step along the phase.

Returns
the next value.

Definition at line 50 of file Phasor.h.

◆ phaseIncFromFreq()

template<unsigned int UPDATE_RATE>
uint32_t Phasor< UPDATE_RATE >::phaseIncFromFreq ( int  frequency)
inline

phaseIncFromFreq() and setPhaseInc() are for saving processor time when sliding between frequencies.

Instead of recalculating the phase increment for each frequency in between, you can just calculate the phase increment for each end frequency with phaseIncFromFreq(), then use a Line to interpolate on the fly and use setPhaseInc() to set the phase increment at each step. (Note: I should really profile this with the oscilloscope to see if it's worth the extra confusion!)

Parameters
frequencyfor which you want to calculate a phase increment value.
Returns
the phase increment value which will produce a given frequency.

Definition at line 98 of file Phasor.h.

◆ set()

template<unsigned int UPDATE_RATE>
void Phasor< UPDATE_RATE >::set ( uint32_t  value)
inline

Set the current value of the phasor.

The Phasor will continue incrementing from this value using any previously calculated step size.

Definition at line 60 of file Phasor.h.

◆ setFreq() [1/2]

template<unsigned int UPDATE_RATE>
void Phasor< UPDATE_RATE >::setFreq ( int  frequency)
inline

Set the Phasor frequency with an unsigned int.

Parameters
frequencyis how many times per second to count from 0 to the maximum uint32_t value 4294967295.
Note
Timing 8us

Definition at line 72 of file Phasor.h.

◆ setFreq() [2/2]

template<unsigned int UPDATE_RATE>
void Phasor< UPDATE_RATE >::setFreq ( float  frequency)
inline

Set the Phasor frequency with a float.

Parameters
frequencyis how many times per second to count from 0 to the maximum uint32_t value 4294967295.

Definition at line 83 of file Phasor.h.

◆ setPhaseInc()

template<unsigned int UPDATE_RATE>
void Phasor< UPDATE_RATE >::setPhaseInc ( uint32_t  stepsize)
inline

Set a specific phase increment.

See phaseIncFromFreq().

Parameters
stepsizea phase increment value as calculated by phaseIncFromFreq().

Definition at line 108 of file Phasor.h.