dasp_rs/lib.rs
1//! # DASP-RS: Digital Audio Signal Processing in Rust
2//!
3//! DASP-RS provides a collection of tools and utilities for audio signal processing,
4//! analysis, and generation. It includes functionality for handling audio input/output,
5//! performing signal transformations, generating synthetic signals, extracting audio features,
6//! working with magnitude spectra, and pitch-related operations. The library is designed
7//! to be modular and extensible, leveraging Rust's performance and safety features.
8//!
9//! ## Key Features
10//! - Audio I/O: Loading and saving audio files with flexible options.
11//! - Signal Processing: Time-frequency transforms (e.g., STFT, CQT) and filtering.
12//! - Signal Generation: Creating synthetic waveforms and noise.
13//! - Feature Extraction: Computing audio features like tempo, pitch, and spectral properties.
14//! - Magnitude Operations: Manipulating and analyzing magnitude spectra.
15//! - Pitch Utilities: Converting between frequency, MIDI, and musical notations.
16//! - Utilities: General-purpose functions for audio analysis and conversion.
17//!
18//! ## Usage
19//! To use this library, add it to your `Cargo.toml` and import the desired modules or items:
20//!
21//! ```toml
22//! [dependencies]
23//! dasp-rs = "0.1.0"
24//! ```
25//!
26//! ```rust
27//! use dasp-rs::get_duration;
28//! let audio = dasp-rs::audio_io::load("example.wav", None, None, None, None).unwrap();
29//! let duration = get_duration(&audio);
30//! println!("Duration: {} seconds", duration);
31//! ```
32//!
33//! ## Modules
34//! See the individual module documentation for detailed information on available functionality.
35
36#![warn(clippy::all, clippy::pedantic, clippy::nursery)]
37
38/// Audio input/output module.
39///
40/// Provides functions for loading and saving audio files, as well as handling audio data structures.
41pub mod core;
42
43/// Signal processing module.
44///
45/// Contains implementations of signal transformations such as STFT, CQT, and filtering operations.
46pub mod signal_processing;
47
48/// Signal generation module.
49///
50/// Offers tools for generating synthetic audio signals, including waveforms and noise.
51pub mod signal_generation;
52
53/// Feature extraction module.
54///
55/// Includes functions for extracting audio features like pitch, tempo, and spectral characteristics.
56pub mod features;
57
58/// Magnitude spectrum module.
59///
60/// Provides utilities for manipulating and analyzing magnitude spectra from audio signals.
61pub mod magnitude;
62
63/// Utility module.
64///
65/// General-purpose functions and helpers for audio processing and analysis.
66pub mod utils;
67
68/// Pitch processing module.
69///
70/// Tools for pitch detection, conversion between frequency/MIDI/notes, and musical notation systems.
71pub mod pitch;
72
73// Re-export all public items from the modules for convenient access at the crate root.
74pub use core::*;
75pub use signal_processing::*;
76pub use signal_generation::*;
77pub use features::*;
78pub use magnitude::*;
79pub use utils::*;
80pub use pitch::*;