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

Phase-vocoder phase propagation for coherent channel groups. More...

#include <pulp/signal/checked_allocation.hpp>
#include <algorithm>
#include <cassert>
#include <cmath>
#include <complex>
#include <vector>

Go to the source code of this file.

Classes

class  pulp::signal::MultichannelPhaseCoordinatorT< SampleType >
 RT contract: prepare() allocates internal phase/magnitude storage and must run off the audio thread. More...

Namespaces

namespace  pulp
namespace  pulp::signal

Typedefs

using pulp::signal::MultichannelPhaseCoordinator = MultichannelPhaseCoordinatorT<float>
using pulp::signal::MultichannelPhaseCoordinator64 = MultichannelPhaseCoordinatorT<double>

Detailed Description

Phase-vocoder phase propagation for coherent channel groups.

Computes ONE phase decision per bin per frame from an energy-weighted reference (the channel sum) and applies the same phase rotation to every channel. Per-channel phase differences — the stereo image, the surround field — are preserved exactly by construction, and identical channels remain bitwise identical.

Phase propagation follows Laroche & Dolson, "Improved Phase Vocoder Time-Scale Modification of Audio" (IEEE TSAP 7(3), 1999): per-peak heterodyned phase increments with identity phase locking of each peak's region. A reset control supports transient handling (Röbel, DAFx 2003): 1 snaps synthesis phases to analysis phases, fractional values blend toward them.

Phase state is kept in double precision — neutrality at unity stretch depends on the synthesis phase tracking the analysis phase exactly over arbitrarily long streams.