audio_engine_core/lib.rs
1//! Reusable audio-engine core.
2//!
3//! This crate owns app-agnostic decoder, DSP, and streaming pipeline building
4//! blocks. The application/server crate layers playback control, persistence,
5//! HTTP/WebSocket routes, and runtime directory handling on top.
6//!
7//! # Example
8//!
9//! Apply a 10-band graphic equalizer to a block of interleaved stereo audio:
10//!
11//! ```
12//! use audio_engine_core::Equalizer;
13//!
14//! let sample_rate = 48_000.0;
15//! let mut eq = Equalizer::new(2, sample_rate);
16//!
17//! // Boost the lowest band by +6 dB, leave the rest flat.
18//! eq.set_band_gain(0, 6.0, sample_rate);
19//! eq.set_enabled(true);
20//!
21//! // Interleaved L/R samples; `process` filters in place.
22//! let mut buffer = vec![0.1_f64; 2 * 512];
23//! eq.process(&mut buffer);
24//! ```
25//!
26//! See the `examples/` directory for runnable resampling and EQ programs.
27
28pub mod config;
29pub mod decoder;
30pub mod diagnostics;
31pub mod pipeline;
32pub mod processor;
33pub mod runtime;
34
35pub use config::{LoudnessConfig, NormalizationMode};
36pub use decoder::StreamingDecoder;
37pub use pipeline::{AudioPipeline, PipelineError};
38pub use processor::{
39 analyze_automix, AtomicLoudnessState, AutomixAnalysis, AutomixAnalysisMode,
40 AutomixAnalysisOptions, Equalizer, FFTConvolver, GainRamp, LoudnessInfo, LoudnessMeter,
41 LoudnessNormalizer, NoiseShaper, PeakLimiter, Resampler, SpectrumAnalyzer, StreamingResampler,
42 TruePeakDetector, VolumeController,
43};
44
45/// Loudness-database persistence types (requires the `loudness-db` feature).
46#[cfg(feature = "loudness-db")]
47pub use processor::{DatabaseStats, LoudnessDatabase, TrackLoudness, CURRENT_SCAN_VERSION};