Skip to main content

audio_engine_core/processor/
mod.rs

1//! Audio Processor Module
2//!
3//! High-performance audio processing pipeline using Rayon for parallelization.
4//! Restored SoX VHQ Resampler and High-Order Noise Shaping for f64 Hi-Fi path.
5//!
6//! # Modules
7//!
8//! ## Core Processors
9//! - [`StreamingResampler`] and [`Resampler`] - SoX VHQ polyphase resampling
10//! - [`Equalizer`] and [`BiquadSection`] - 10-band parametric IIR equalizer
11//! - [`VolumeController`] and [`NoiseShaper`] - Volume control and noise shaping
12//! - [`SpectrumAnalyzer`] - FFT spectrum analyzer
13//! - [`FFTConvolver`] - FFT convolution for FIR filters
14//! - [`LoudnessNormalizer`], [`LoudnessMeter`], and [`TruePeakDetector`] - EBU R128 loudness normalization
15//! - [`DynamicLoudness`] - ISO 226 dynamic loudness compensation (Fletcher-Munson)
16//! - [`Saturation`] - Tube/tape saturation for analog warmth
17//! - [`Crossfeed`] - Bauer binaural crossfeed for headphones
18//! - [`FirEq`] - FIR EQ with linear/minimum phase options
19//!
20//! ## Unified Abstraction (Lock-Free Design)
21//! - [`AudioProcessor`] and [`ProcessResult`] - shared processor trait/result types
22//! - [`lockfree_params`] - lock-free parameter structures for thread-safe parameter passing
23//! - [`adapters`] - processor adapters implementing [`AudioProcessor`]
24//! - [`DspChain`] - composable DSP processing chain
25
26mod automix_analysis;
27mod convolver;
28mod crossfeed;
29mod dsp;
30mod dynamic_loudness;
31mod eq;
32mod fir_eq;
33mod loudness;
34#[cfg(feature = "loudness-db")]
35mod loudness_db;
36mod resampler;
37mod saturation;
38mod spectrum;
39
40// New unified abstraction modules
41pub mod adapters;
42pub mod dsp_chain;
43pub mod lockfree_params;
44pub mod traits;
45
46// Public processor API re-exports.
47pub use automix_analysis::{
48    analyze_automix, analyze_automix_with_cancel, AutomixAnalysis, AutomixAnalysisMode,
49    AutomixAnalysisOptions,
50};
51pub use convolver::FFTConvolver;
52pub use crossfeed::{Crossfeed, CrossfeedSettings};
53pub use dsp::{db_to_linear, linear_to_db, NoiseShaper, NoiseShaperCurve, VolumeController};
54pub use dynamic_loudness::{AtomicDynamicLoudnessState, DynamicLoudness, LOUDNESS_BANDS};
55pub use eq::{BiquadSection, Equalizer};
56pub use fir_eq::{FirEq, FirPhaseMode, STANDARD_BANDS};
57pub use loudness::{
58    AtomicLoudnessState, GainRamp, LoudnessInfo, LoudnessMeter, LoudnessNormalizer, PeakLimiter,
59    TruePeakDetector,
60};
61#[cfg(feature = "loudness-db")]
62pub use loudness_db::{
63    DatabaseStats, LoudnessDatabase, TrackLoudness, CURRENT_SCAN_VERSION,
64    DEFAULT_BROADCAST_TARGET_LUFS, DEFAULT_STREAMING_TARGET_LUFS,
65};
66pub use resampler::{ResampleOutput, Resampler, ResamplerError, StreamingResampler};
67pub use saturation::{Saturation, SaturationSettings, SaturationType};
68pub use spectrum::SpectrumAnalyzer;
69
70// Re-export unified abstraction types
71pub use adapters::{
72    ConvolverProcessor, CrossfeedProcessor, DynamicLoudnessProcessor, EqProcessor,
73    NoiseShaperProcessor, PeakLimiterProcessor, SaturationProcessor, VolumeProcessor,
74};
75pub use dsp_chain::DspChain;
76pub use lockfree_params::{
77    AtomicCrossfeedParams, AtomicDynamicLoudnessParams, AtomicDynamicLoudnessTelemetry,
78    AtomicEqParams, AtomicNoiseShaperParams, AtomicPeakLimiterParams, AtomicSaturationParams,
79    AtomicVolumeParams, CrossfeedParamsSnapshot, DynamicLoudnessParamsSnapshot, EqParamsSnapshot,
80    NoiseShaperParamsSnapshot, PeakLimiterParamsSnapshot, SaturationParamsSnapshot,
81    SaturationTypeValue, VolumeParamsSnapshot, EQ_BANDS,
82};
83pub use traits::{AudioProcessor, ProcessResult};