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

Blend true-stereo dry input with an already-processed true-stereo wet path. More...

#include <parallel_dynamics.hpp>

Public Types

using Config = ParallelDynamicsConfigT<SampleType>
using PreparedConfig = PreparedParallelDynamicsConfigT<SampleType>

Public Member Functions

 ParallelDynamicsMixerT () noexcept
bool prepare (std::size_t max_latency_samples, std::size_t max_block_size)
bool publish_config (const Config &config) noexcept
bool configure_latency_and_publish (const Config &config) noexcept
 Change alignment and publish a validated snapshot while audio is stopped.
bool process (const SampleType *const *dry, const SampleType *const *wet, SampleType *const *output, std::size_t frames) noexcept
void reset () noexcept
std::size_t latency_samples () const noexcept
std::size_t tail_samples () const noexcept
std::size_t max_block_size () const noexcept
bool prepared () const noexcept

Detailed Description

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

Blend true-stereo dry input with an already-processed true-stereo wet path.

The caller owns the compressor, expander, or upward-dynamics algorithm. This class owns only two-path latency alignment and final gain staging. A complete configuration is published by one control writer and adopted by the audio reader at a block boundary. Live publication is latency-stable. Changing latency requires configure_latency_and_publish() while audio is stopped; it resets alignment history without moving unbounded work into process().

Output channels may exactly alias their same-channel dry or wet input. Partial overlap and every cross-channel overlap are rejected. The process path is allocation-free after prepare().

Member Typedef Documentation

◆ Config

template<typename SampleType = float>
using pulp::signal::ParallelDynamicsMixerT< SampleType >::Config = ParallelDynamicsConfigT<SampleType>

◆ PreparedConfig

template<typename SampleType = float>
using pulp::signal::ParallelDynamicsMixerT< SampleType >::PreparedConfig = PreparedParallelDynamicsConfigT<SampleType>

Constructor & Destructor Documentation

◆ ParallelDynamicsMixerT()

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

Member Function Documentation

◆ configure_latency_and_publish()

template<typename SampleType = float>
bool pulp::signal::ParallelDynamicsMixerT< SampleType >::configure_latency_and_publish ( const Config & config)
inlinenoexcept

Change alignment and publish a validated snapshot while audio is stopped.

◆ latency_samples()

template<typename SampleType = float>
std::size_t pulp::signal::ParallelDynamicsMixerT< SampleType >::latency_samples ( ) const
inlinenoexcept

◆ max_block_size()

template<typename SampleType = float>
std::size_t pulp::signal::ParallelDynamicsMixerT< SampleType >::max_block_size ( ) const
inlinenoexcept

◆ prepare()

template<typename SampleType = float>
bool pulp::signal::ParallelDynamicsMixerT< SampleType >::prepare ( std::size_t max_latency_samples,
std::size_t max_block_size )
inline

◆ prepared()

template<typename SampleType = float>
bool pulp::signal::ParallelDynamicsMixerT< SampleType >::prepared ( ) const
inlinenoexcept

◆ process()

template<typename SampleType = float>
bool pulp::signal::ParallelDynamicsMixerT< SampleType >::process ( const SampleType *const * dry,
const SampleType *const * wet,
SampleType *const * output,
std::size_t frames )
inlinenoexcept

◆ publish_config()

template<typename SampleType = float>
bool pulp::signal::ParallelDynamicsMixerT< SampleType >::publish_config ( const Config & config)
inlinenoexcept

◆ reset()

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

◆ tail_samples()

template<typename SampleType = float>
std::size_t pulp::signal::ParallelDynamicsMixerT< SampleType >::tail_samples ( ) const
inlinenoexcept

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