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

Multi-channel metering: sample peak, RMS, K-weighted momentary and gated integrated loudness, stereo correlation, clip detection. More...

#include <pulp/signal/detail/simd_lanes.hpp>
#include <array>
#include <cmath>
#include <algorithm>
#include <cstdint>
#include <limits>
#include <numbers>
#include <numeric>
#include <type_traits>
#include <utility>
#include <vector>

Go to the source code of this file.

Classes

struct  pulp::signal::LoudnessBiquadCoefficients
struct  pulp::signal::KWeightingCoefficients
struct  pulp::signal::ChannelLevels
 Per-channel level measurements computed on the audio thread. More...
struct  pulp::signal::MultiChannelMeterData
 Complete metering snapshot for all channels, published lock-free. More...
struct  pulp::signal::MultiChannelBallistics
 Configurable ballistics for multi-channel meter display (UI thread). More...
struct  pulp::signal::MultiChannelBallistics::Channel
class  pulp::signal::MultiChannelMeterT< SampleType >
 Audio-thread metering processor. More...

Namespaces

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

Typedefs

using pulp::signal::MultiChannelMeter = MultiChannelMeterT<float>
using pulp::signal::MultiChannelMeter64 = MultiChannelMeterT<double>

Enumerations

enum class  pulp::signal::MeterFeatures : std::uint8_t { pulp::signal::levels = 0 , pulp::signal::correlation = 1u << 0 , pulp::signal::loudness = 1u << 1 , pulp::signal::all = correlation | loudness }
 What a MultiChannelMeter computes. More...
enum class  pulp::signal::LoudnessChannelRole : std::uint8_t {
  pulp::signal::left , pulp::signal::right , pulp::signal::center , pulp::signal::lfe ,
  pulp::signal::left_surround , pulp::signal::right_surround , pulp::signal::left_rear_surround , pulp::signal::right_rear_surround ,
  pulp::signal::unknown
}
 Speaker roles used by the BS.1770 channel summation. More...

Functions

constexpr MeterFeatures pulp::signal::operator| (MeterFeatures a, MeterFeatures b) noexcept
constexpr bool pulp::signal::has_feature (MeterFeatures set, MeterFeatures feature) noexcept
KWeightingCoefficients pulp::signal::k_weighting_coefficients (double sample_rate)
 Return the two-stage K-weighting design for a sample rate.

Variables

static constexpr int pulp::signal::kMaxMeterChannels = 16
 Maximum supported channel count for metering.
static constexpr double pulp::signal::kMaxMeterInputMagnitude = 1.0e6
 Finite samples outside this deliberately generous audio-domain ceiling are clipped before every peak, RMS, correlation, and loudness calculation.

Detailed Description

Multi-channel metering: sample peak, RMS, K-weighted momentary and gated integrated loudness, stereo correlation, clip detection.

All computations are lock-free and suitable for the audio thread.

RT contract: prepare() initializes fixed-size accumulator state and may be called off the audio thread. After preparation, process(), snapshot(), and reset() allocate no memory for channel counts up to kMaxMeterChannels. MultiChannelBallistics::update() and clear_clips() also use fixed storage and allocate no memory.