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

Chain multiple DSP processors in series. More...

#include <processor_chain.hpp>

Public Member Functions

 ProcessorChainT ()=default
template<std::size_t Index>
auto & get ()
 Access a processor by index.
template<std::size_t Index>
const auto & get () const
SampleType process (SampleType input)
 Process a single sample through the entire chain.
void process (SampleType *data, int num_samples)
 Process a buffer in-place through the entire chain.
void reset ()
 Reset all processors in the chain.

Static Public Member Functions

static constexpr std::size_t size ()
 Number of processors in the chain.

Detailed Description

template<typename SampleType, typename... Processors>
class pulp::signal::ProcessorChainT< SampleType, Processors >

Chain multiple DSP processors in series.

Each processor must have a float process(float) method.

RT contract: ProcessorChain owns processors in a fixed tuple. Its process/reset paths allocate no memory when the contained processors do not.

auto& gain = chain.get<0>();
auto& eq = chain.get<1>();
auto& comp = chain.get<2>();
gain.set_gain_db(-3.0f);
float out = chain.process(in);
auto & get()
Access a processor by index.
Definition processor_chain.hpp:32
SampleType process(SampleType input)
Process a single sample through the entire chain.
Definition processor_chain.hpp:38
ProcessorChainT< float, Processors... > ProcessorChain
Definition processor_chain.hpp:81

Constructor & Destructor Documentation

◆ ProcessorChainT()

template<typename SampleType, typename... Processors>
pulp::signal::ProcessorChainT< SampleType, Processors >::ProcessorChainT ( )
default

Member Function Documentation

◆ get() [1/2]

template<typename SampleType, typename... Processors>
template<std::size_t Index>
auto & pulp::signal::ProcessorChainT< SampleType, Processors >::get ( )
inline

Access a processor by index.

◆ get() [2/2]

template<typename SampleType, typename... Processors>
template<std::size_t Index>
const auto & pulp::signal::ProcessorChainT< SampleType, Processors >::get ( ) const
inline

◆ process() [1/2]

template<typename SampleType, typename... Processors>
void pulp::signal::ProcessorChainT< SampleType, Processors >::process ( SampleType * data,
int num_samples )
inline

Process a buffer in-place through the entire chain.

◆ process() [2/2]

template<typename SampleType, typename... Processors>
SampleType pulp::signal::ProcessorChainT< SampleType, Processors >::process ( SampleType input)
inline

Process a single sample through the entire chain.

◆ reset()

template<typename SampleType, typename... Processors>
void pulp::signal::ProcessorChainT< SampleType, Processors >::reset ( )
inline

Reset all processors in the chain.

◆ size()

template<typename SampleType, typename... Processors>
constexpr std::size_t pulp::signal::ProcessorChainT< SampleType, Processors >::size ( )
inlinestaticconstexpr

Number of processors in the chain.


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