Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
nonlinear_shaping.hpp File Reference

Alias-controlled wavefolding, harmonic shaping, and ring modulation. More...

#include <pulp/signal/osc/va.hpp>
#include <pulp/signal/oversampling.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::detail::NonlinearOversamplingT< SampleType >
class  pulp::signal::MultistageWavefolderT< SampleType >
 A sequential wavefolder whose stage drive increases through the chain. More...
class  pulp::signal::ChebyshevHarmonicShaperT< SampleType >
 A fixed-storage Chebyshev-series transfer function. More...
class  pulp::signal::NonlinearRingModulatorT< SampleType >
 An internally carried ring modulator with ideal and diode-ring models. More...

Namespaces

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

Typedefs

using pulp::signal::MultistageWavefolder = MultistageWavefolderT<float>
using pulp::signal::MultistageWavefolder64 = MultistageWavefolderT<double>
using pulp::signal::ChebyshevHarmonicShaper = ChebyshevHarmonicShaperT<float>
using pulp::signal::ChebyshevHarmonicShaper64 = ChebyshevHarmonicShaperT<double>
using pulp::signal::NonlinearRingModulator = NonlinearRingModulatorT<float>
using pulp::signal::NonlinearRingModulator64 = NonlinearRingModulatorT<double>

Enumerations

enum class  pulp::signal::NonlinearAliasPolicy : std::uint8_t { pulp::signal::oversample_4x , pulp::signal::oversample_2x , pulp::signal::off }
 Antialiasing choices shared by the nonlinear-shaping processors. More...
enum class  pulp::signal::RingModulationModel : std::uint8_t { pulp::signal::ideal_multiplier , pulp::signal::diode_ring }
enum class  pulp::signal::RingCarrierWaveform : std::uint8_t { pulp::signal::sine , pulp::signal::triangle , pulp::signal::square }
enum class  pulp::signal::RingCarrierMode : std::uint8_t { pulp::signal::bipolar , pulp::signal::unipolar }
enum class  pulp::signal::RingOutputPolarity : std::uint8_t { pulp::signal::normal , pulp::signal::inverted }

Functions

bool pulp::signal::detail::valid_alias_policy (NonlinearAliasPolicy policy) noexcept
double pulp::signal::detail::triangle_fold (double input) noexcept
double pulp::signal::detail::triangle_fold_slope (double input) noexcept

Variables

constexpr double pulp::signal::detail::kNonlinearMinimumSampleRate = 1000.0
constexpr double pulp::signal::detail::kNonlinearMaximumSampleRate = 768000.0

Detailed Description

Alias-controlled wavefolding, harmonic shaping, and ring modulation.