Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::signal::BlitOscillatorT< SampleType > Class Template Reference

Band-limited impulse train evaluated by discrete summation. More...

#include <blit_oscillator.hpp>

Public Member Functions

bool prepare (SampleType sample_rate) noexcept
 Set the sample rate in Hz.
bool prepare (SampleType sample_rate, SampleType frequency_hz) noexcept
 Atomically set sample rate and fundamental.
bool set_frequency (SampleType frequency_hz) noexcept
 Set the fundamental in Hz.
SampleType sample_rate () const noexcept
SampleType frequency () const noexcept
int harmonic_count () const noexcept
bool reset_phase (SampleType phase=SampleType{0}) noexcept
 Set normalized phase in [0, 1). Failure leaves state unchanged.
double phase () const noexcept
SampleType next () noexcept
 Render the current phase and advance one sample.

Detailed Description

template<typename SampleType = float>
class pulp::signal::BlitOscillatorT< SampleType >

Band-limited impulse train evaluated by discrete summation.

With H = floor(Nyquist / frequency), the output is

(1 + 2 sum(k=1..H, cos(2 pi k phase))) / (2 H + 1)

evaluated in its closed Dirichlet-kernel form. The normalization gives a unit impulse limit while retaining only DC and the positive/negative partial pairs whose positive member does not exceed Nyquist. The phase path owns fixed scalar state only; prepare, control, reset, and render operations are allocation-free, lock-free, deterministic, and noexcept.

Member Function Documentation

◆ frequency()

template<typename SampleType = float>
SampleType pulp::signal::BlitOscillatorT< SampleType >::frequency ( ) const
inlinenoexcept

◆ harmonic_count()

template<typename SampleType = float>
int pulp::signal::BlitOscillatorT< SampleType >::harmonic_count ( ) const
inlinenoexcept

◆ next()

template<typename SampleType = float>
SampleType pulp::signal::BlitOscillatorT< SampleType >::next ( )
inlinenoexcept

Render the current phase and advance one sample.

◆ phase()

template<typename SampleType = float>
double pulp::signal::BlitOscillatorT< SampleType >::phase ( ) const
inlinenoexcept

◆ prepare() [1/2]

template<typename SampleType = float>
bool pulp::signal::BlitOscillatorT< SampleType >::prepare ( SampleType sample_rate)
inlinenodiscardnoexcept

Set the sample rate in Hz.

Failure leaves the complete prior configuration unchanged.

◆ prepare() [2/2]

template<typename SampleType = float>
bool pulp::signal::BlitOscillatorT< SampleType >::prepare ( SampleType sample_rate,
SampleType frequency_hz )
inlinenodiscardnoexcept

Atomically set sample rate and fundamental.

Use this overload when a valid pair cannot be reached through either default-backed setter first.

◆ reset_phase()

template<typename SampleType = float>
bool pulp::signal::BlitOscillatorT< SampleType >::reset_phase ( SampleType phase = SampleType{0})
inlinenodiscardnoexcept

Set normalized phase in [0, 1). Failure leaves state unchanged.

◆ sample_rate()

template<typename SampleType = float>
SampleType pulp::signal::BlitOscillatorT< SampleType >::sample_rate ( ) const
inlinenoexcept

◆ set_frequency()

template<typename SampleType = float>
bool pulp::signal::BlitOscillatorT< SampleType >::set_frequency ( SampleType frequency_hz)
inlinenodiscardnoexcept

Set the fundamental in Hz.

The open Nyquist bound guarantees at least one representable positive harmonic. Failure is transactional.


The documentation for this class was generated from the following file: