#![doc = include_str!("../README.md")]
#[macro_export]
macro_rules! qa_println {
($fmt:literal) => {
log::debug!($fmt);
};
($fmt:literal, $($arg:expr),* $(,)?) => {
log::debug!($fmt, $($arg),*);
};
($args:expr, $fmt:literal) => {
if $args.qa.is_none() {
log::debug!($fmt);
}
};
($args:expr, $fmt:literal, $($arg:expr),* $(,)?) => {
if $args.qa.is_none() {
log::debug!($fmt, $($arg),*);
}
};
}
pub use math_audio_iir_fir as iir;
pub use math_audio_optimisation as de;
pub mod cea2034;
pub use cea2034::{Curve, DirectivityCurve, DirectivityData};
pub mod error;
pub use error::{AutoeqError, Result};
pub mod cli;
pub mod constraints;
pub mod fir;
pub mod initial_guess;
pub mod loss;
pub mod optim;
pub mod optim_callback;
pub mod optim_de;
pub mod optim_mh;
#[cfg(feature = "nlopt")]
pub mod optim_nlopt;
pub mod param_utils;
pub mod plot;
pub mod read;
pub mod response;
pub mod signal;
pub mod workflow;
pub mod x2peq;
pub mod roomeq;
pub mod epa;
pub use cli::*;
pub use loss::{CrossoverType, HeadphoneLossData, LossType, SpeakerLossData};
pub use optim::*;
pub use plot::*;
pub use read::*;
pub use workflow::*;
pub use workflow::{
HeadphoneOptResult, OptimizationOutput, ProgressCallbackConfig, ProgressUpdate,
SpeakerOptResult, VisualizationCurves, compute_visualization_curves, optimize_headphone,
optimize_speaker, perform_optimization_with_progress,
};
pub use x2peq::x2peq;
pub use roomeq::{
DspChainOutput, OptimizerConfig, RecordingConfiguration, RoomConfig, RoomOptimizationProgress,
RoomOptimizationResult, SpeakerConfig, optimize_room,
optimize_speaker as optimize_room_speaker,
};