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

An internally carried ring modulator with ideal and diode-ring models. More...

#include <nonlinear_shaping.hpp>

Public Member Functions

 NonlinearRingModulatorT () noexcept
void prepare (double sample_rate)
void set_alias_policy (NonlinearAliasPolicy policy)
NonlinearAliasPolicy alias_policy () const noexcept
int oversample_factor () const noexcept
int latency_samples () const noexcept
int tail_samples () const noexcept
double sample_rate () const noexcept
void set_model (RingModulationModel model) noexcept
RingModulationModel model () const noexcept
void set_carrier_hz (double hz) noexcept
double carrier_hz () const noexcept
void set_index (double index01) noexcept
double index () const noexcept
void set_nonlinear_drive (double drive) noexcept
double nonlinear_drive () const noexcept
void set_carrier_waveform (RingCarrierWaveform waveform) noexcept
RingCarrierWaveform carrier_waveform () const noexcept
void set_carrier_mode (RingCarrierMode mode) noexcept
RingCarrierMode carrier_mode () const noexcept
void set_output_polarity (RingOutputPolarity polarity) noexcept
RingOutputPolarity output_polarity () const noexcept
void set_phase (double cycles) noexcept
double phase () const noexcept
void reset () noexcept
SampleType process (SampleType input) noexcept
void process_block (const SampleType *input, SampleType *output, std::size_t sample_count) noexcept
double shape (double input, double carrier) const noexcept

Static Public Member Functions

static constexpr double dc_output () noexcept

Detailed Description

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

An internally carried ring modulator with ideal and diode-ring models.

Keeping the carrier inside the oversampled callback makes the carrier and audio meet at the same rate; multiplying a host-rate carrier after the upsampler would retain the very sum sideband the policy is meant to reject.

Constructor & Destructor Documentation

◆ NonlinearRingModulatorT()

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

Member Function Documentation

◆ alias_policy()

template<typename SampleType = float>
NonlinearAliasPolicy pulp::signal::NonlinearRingModulatorT< SampleType >::alias_policy ( ) const
inlinenoexcept

◆ carrier_hz()

template<typename SampleType = float>
double pulp::signal::NonlinearRingModulatorT< SampleType >::carrier_hz ( ) const
inlinenoexcept

◆ carrier_mode()

template<typename SampleType = float>
RingCarrierMode pulp::signal::NonlinearRingModulatorT< SampleType >::carrier_mode ( ) const
inlinenoexcept

◆ carrier_waveform()

template<typename SampleType = float>
RingCarrierWaveform pulp::signal::NonlinearRingModulatorT< SampleType >::carrier_waveform ( ) const
inlinenoexcept

◆ dc_output()

template<typename SampleType = float>
constexpr double pulp::signal::NonlinearRingModulatorT< SampleType >::dc_output ( )
inlinestaticconstexprnoexcept

◆ index()

template<typename SampleType = float>
double pulp::signal::NonlinearRingModulatorT< SampleType >::index ( ) const
inlinenoexcept

◆ latency_samples()

template<typename SampleType = float>
int pulp::signal::NonlinearRingModulatorT< SampleType >::latency_samples ( ) const
inlinenoexcept

◆ model()

template<typename SampleType = float>
RingModulationModel pulp::signal::NonlinearRingModulatorT< SampleType >::model ( ) const
inlinenoexcept

◆ nonlinear_drive()

template<typename SampleType = float>
double pulp::signal::NonlinearRingModulatorT< SampleType >::nonlinear_drive ( ) const
inlinenoexcept

◆ output_polarity()

template<typename SampleType = float>
RingOutputPolarity pulp::signal::NonlinearRingModulatorT< SampleType >::output_polarity ( ) const
inlinenoexcept

◆ oversample_factor()

template<typename SampleType = float>
int pulp::signal::NonlinearRingModulatorT< SampleType >::oversample_factor ( ) const
inlinenoexcept

◆ phase()

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

◆ prepare()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::prepare ( double sample_rate)
inline

◆ process()

template<typename SampleType = float>
SampleType pulp::signal::NonlinearRingModulatorT< SampleType >::process ( SampleType input)
inlinenoexcept

◆ process_block()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::process_block ( const SampleType * input,
SampleType * output,
std::size_t sample_count )
inlinenoexcept

◆ reset()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::reset ( )
inlinenoexcept

◆ sample_rate()

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

◆ set_alias_policy()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::set_alias_policy ( NonlinearAliasPolicy policy)
inline

◆ set_carrier_hz()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::set_carrier_hz ( double hz)
inlinenoexcept

◆ set_carrier_mode()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::set_carrier_mode ( RingCarrierMode mode)
inlinenoexcept

◆ set_carrier_waveform()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::set_carrier_waveform ( RingCarrierWaveform waveform)
inlinenoexcept

◆ set_index()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::set_index ( double index01)
inlinenoexcept

◆ set_model()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::set_model ( RingModulationModel model)
inlinenoexcept

◆ set_nonlinear_drive()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::set_nonlinear_drive ( double drive)
inlinenoexcept

◆ set_output_polarity()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::set_output_polarity ( RingOutputPolarity polarity)
inlinenoexcept

◆ set_phase()

template<typename SampleType = float>
void pulp::signal::NonlinearRingModulatorT< SampleType >::set_phase ( double cycles)
inlinenoexcept

◆ shape()

template<typename SampleType = float>
double pulp::signal::NonlinearRingModulatorT< SampleType >::shape ( double input,
double carrier ) const
inlinenoexcept

◆ tail_samples()

template<typename SampleType = float>
int pulp::signal::NonlinearRingModulatorT< SampleType >::tail_samples ( ) const
inlinenoexcept

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