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> |
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.