Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
fm_operator_engine.hpp File Reference
#include <pulp/signal/denormal.hpp>
#include <pulp/signal/envelope.hpp>
#include <pulp/signal/fast_math.hpp>
#include <algorithm>
#include <array>
#include <cmath>
#include <cstddef>
#include <cstdint>
#include <limits>
#include <numbers>
#include <type_traits>

Go to the source code of this file.

Classes

class  pulp::signal::FmOperatorRoutingT< SampleType, MaxOperators >
 Fixed-capacity routing for an operator network. More...
class  pulp::signal::FmOperatorEngineT< SampleType, MaxOperators >
 Bounded melodic FM/PM operator engine. More...
struct  pulp::signal::FmOperatorEngineT< SampleType, MaxOperators >::Envelope

Namespaces

namespace  pulp
namespace  pulp::signal
namespace  pulp::signal::detail
 Round-2 effect-wave vocabulary.

Typedefs

using pulp::signal::FmOperatorRouting = FmOperatorRoutingT<float>
using pulp::signal::FmOperatorRouting64 = FmOperatorRoutingT<double>
using pulp::signal::FmOperatorEngine = FmOperatorEngineT<float>
using pulp::signal::FmOperatorEngine64 = FmOperatorEngineT<double>

Enumerations

enum class  pulp::signal::FmOperatorFrequencyMode : std::uint8_t { pulp::signal::ratio , pulp::signal::fixed_hz }
 How an operator derives its unmodulated frequency. More...
enum class  pulp::signal::FmOperatorAliasPolicy : std::uint8_t { pulp::signal::bounded , pulp::signal::bright_band_safe }
 Alias behavior for the modulation network. More...

Functions

template<typename SampleType>
SampleType pulp::signal::detail::fm_bright_band_gain (SampleType base_hz, SampleType sample_rate, FmOperatorAliasPolicy policy) noexcept
template<typename SampleType, std::size_t MaxOperators, typename FrequencyFn, typename PhaseRouteFn, typename FrequencyRouteFn, typename CarrierGainFn, typename OscillatorFn>
SampleType pulp::signal::detail::render_fm_operator_sample (std::size_t operator_count, SampleType sample_rate, FmOperatorAliasPolicy alias_policy, std::array< SampleType, MaxOperators > &phases, std::array< SampleType, MaxOperators > &previous, const std::array< SampleType, MaxOperators > &amplitudes, const std::array< SampleType, MaxOperators > &feedback_radians, FrequencyFn &&base_frequency, PhaseRouteFn &&phase_route, FrequencyRouteFn &&frequency_route, CarrierGainFn &&carrier_gain, OscillatorFn &&oscillator) noexcept
 Canonical one-sample-delayed operator evaluator shared by melodic and drum engines.