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

Fixed-capacity routing for an operator network. More...

#include <fm_operator_engine.hpp>

Public Member Functions

 FmOperatorRoutingT ()
void clear () noexcept
void set_phase_modulation_radians (std::size_t destination, std::size_t source, SampleType radians) noexcept
void set_frequency_modulation_hz (std::size_t destination, std::size_t source, SampleType deviation_hz) noexcept
void set_carrier_gain (std::size_t op, SampleType linear_gain) noexcept
SampleType phase_modulation_radians (std::size_t destination, std::size_t source) const noexcept
SampleType frequency_modulation_hz (std::size_t destination, std::size_t source) const noexcept
SampleType carrier_gain (std::size_t op) const noexcept

Static Public Attributes

static constexpr SampleType kMaxPhaseDeviationRadians
static constexpr SampleType kMaxFrequencyDeviationHz = SampleType{96000}

Detailed Description

template<typename SampleType, std::size_t MaxOperators = 8>
class pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >

Fixed-capacity routing for an operator network.

Matrix indices are [destination][source]. Phase entries are radians of phase deviation per unit source output. Frequency entries are Hz of instantaneous-frequency deviation per unit source output. Both may be active on the same edge; keeping separate matrices makes the often-blurred distinction between phase modulation and frequency modulation explicit. Carrier gains are linear. When their sum exceeds unity, the engine divides the weighted output by that sum, so adding full-scale carriers does not silently change level; a sub-unity sum remains intentional attenuation.

Constructor & Destructor Documentation

◆ FmOperatorRoutingT()

template<typename SampleType, std::size_t MaxOperators = 8>
pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::FmOperatorRoutingT ( )
inline

Member Function Documentation

◆ carrier_gain()

template<typename SampleType, std::size_t MaxOperators = 8>
SampleType pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::carrier_gain ( std::size_t op) const
inlinenoexcept

◆ clear()

template<typename SampleType, std::size_t MaxOperators = 8>
void pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::clear ( )
inlinenoexcept

◆ frequency_modulation_hz()

template<typename SampleType, std::size_t MaxOperators = 8>
SampleType pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::frequency_modulation_hz ( std::size_t destination,
std::size_t source ) const
inlinenoexcept

◆ phase_modulation_radians()

template<typename SampleType, std::size_t MaxOperators = 8>
SampleType pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::phase_modulation_radians ( std::size_t destination,
std::size_t source ) const
inlinenoexcept

◆ set_carrier_gain()

template<typename SampleType, std::size_t MaxOperators = 8>
void pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::set_carrier_gain ( std::size_t op,
SampleType linear_gain )
inlinenoexcept

◆ set_frequency_modulation_hz()

template<typename SampleType, std::size_t MaxOperators = 8>
void pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::set_frequency_modulation_hz ( std::size_t destination,
std::size_t source,
SampleType deviation_hz )
inlinenoexcept

◆ set_phase_modulation_radians()

template<typename SampleType, std::size_t MaxOperators = 8>
void pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::set_phase_modulation_radians ( std::size_t destination,
std::size_t source,
SampleType radians )
inlinenoexcept

Member Data Documentation

◆ kMaxFrequencyDeviationHz

template<typename SampleType, std::size_t MaxOperators = 8>
SampleType pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::kMaxFrequencyDeviationHz = SampleType{96000}
staticconstexpr

◆ kMaxPhaseDeviationRadians

template<typename SampleType, std::size_t MaxOperators = 8>
SampleType pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >::kMaxPhaseDeviationRadians
staticconstexpr
Initial value:
=
SampleType{8} * std::numbers::pi_v<SampleType>

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