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/// Audio input/output module.
37///
38/// Provides functions for loading and saving audio files, as well as handling audio data structures.
39pub mod audio_io;
40
41/// Signal processing module.
42///
43/// Contains implementations of signal transformations such as STFT, CQT, and filtering operations.
44pub mod signal_processing;
45
46/// Signal generation module.
47///
48/// Offers tools for generating synthetic audio signals, including waveforms and noise.
49pub mod signal_generation;
50
51/// Feature extraction module.
52///
53/// Includes functions for extracting audio features like pitch, tempo, and spectral characteristics.
54pub mod features;
55
56/// Magnitude spectrum module.
57///
58/// Provides utilities for manipulating and analyzing magnitude spectra from audio signals.
59pub mod magnitude;
60
61/// Utility module.
62///
63/// General-purpose functions and helpers for audio processing and analysis.
64pub mod utils;
65
66/// Pitch processing module.
67///
68/// Tools for pitch detection, conversion between frequency/MIDI/notes, and musical notation systems.
69pub mod pitch;
70
71// Re-export all public items from the modules for convenient access at the crate root.
72pub use audio_io::*;
73pub use signal_processing::*;
74pub use signal_generation::*;
75pub use features::*;
76pub use magnitude::*;
77pub use utils::*;
78pub use pitch::*;