lasprs 0.14.1

Library for Acoustic Signal Processing (Rust edition, with optional Python bindings via pyo3)
//! Sound Level Meter (SLM) module.
//!
//! Provides structs and helpers (SLMBuilder) for creating configurated Sound
//! Level Meters.
//!
//! # Usage examples
//!
//! ## Simple over-all level SLM
//!
//! This example creates a simple SLM that processes at 48kHz, uses fast time
//! weighting and A frequency weighting:
//!
//! ```
//! # use anyhow::Result;
//! use lasprs::slm::*;
//! use lasprs::filter::StandardFilterDescriptor;
//! use lasprs::{FreqWeighting, TimeWeighting};
//! use lasprs::StrictlyPositive;
//! use ndarray::Array1;
//! # fn main() -> Result<()> {
//!
//! // Generate an overall filter (no filter at all)
//! let desc = StandardFilterDescriptor::Overall().unwrap();
//!
//! // Generate settings
//! let fs = StrictlyPositive::new(48e3)?;
//! let Lref = StrictlyPositive::new(20e-6)?; // Reference level for sound pressure in air
//! let settings = SLMSettingsBuilder::default()
//!     .fs(fs)
//!     .Lref(Lref)
//!     .freqWeighting(FreqWeighting::A)
//!     .timeWeighting(TimeWeighting::Fast{})
//!     .filterDescriptors(vec![desc]).build().unwrap();
//!
//! let mut slm = SLM::new(settings, None);
//! // Generate some data. Yes, this is not the most spectacular set
//! let mut data = Array1::zeros(48000);
//! data[0] = 1.;
//!
//! // Now apply some data. This is a kind of the SLM-s impulse response
//! let res = slm.run(data.as_slice().unwrap(), true).unwrap();
//!
//! // Get the equivalent level:
//! let Leq = res.Leq[&desc];
//!
//! # Ok::<() , anyhow::Error>(())
//! # }
//! ```
//!
//! ## One-third octave band, plus overall
//!
//! ```
//! use lasprs::filter::StandardFilterDescriptor;
//! // Generate the default set of one-third octave band filters
//! let mut desc = StandardFilterDescriptor::fullThirdOctaveFilterSet();
//! desc.push(StandardFilterDescriptor::Overall().unwrap());
//!
//! // Rest of code is the same as in previous example
//!
//! ```
//!
mod slm;
mod slmresult;
use crate::*;
mod slmsettings;
pub use slm::SLM;
pub use slmresult::SLMResult;
pub use slmsettings::{SLMSettings, SLMSettingsBuilder};

/// Reference level, in units of measured quantity. For sound pressure in
/// air, this is 20 μPa. This is also the default value.
pub const Lref_default: Flt = 20e-6;