Expand description
§DASP-RS: Digital Audio Signal Processing in Rust
DASP-RS provides a collection of tools and utilities for audio signal processing, analysis, and generation. It includes functionality for handling audio input/output, performing signal transformations, generating synthetic signals, extracting audio features, working with magnitude spectra, and pitch-related operations. The library is designed to be modular and extensible, leveraging Rust’s performance and safety features.
§Key Features
- Audio I/O: Loading and saving audio files with flexible options.
- Signal Processing: Time-frequency transforms (e.g., STFT, CQT) and filtering.
- Signal Generation: Creating synthetic waveforms and noise.
- Feature Extraction: Computing audio features like tempo, pitch, and spectral properties.
- Magnitude Operations: Manipulating and analyzing magnitude spectra.
- Pitch Utilities: Converting between frequency, MIDI, and musical notations.
- Utilities: General-purpose functions for audio analysis and conversion.
§Usage
To use this library, add it to your Cargo.toml and import the desired modules:
[dependencies]
dasp-rs = "0.2.0"// Option 1: Use prelude for convenience
use dasp_rs::prelude::*;
let audio = Decoder::from("example.wav")
.sample_rate(22050)
.mono()
.load()?;
let duration = get_duration(&audio);
println!("Duration: {} seconds", duration);// Option 2: Explicit imports for clarity
use dasp_rs::{types::AudioData, io::{Decoder, export}, util::get_duration};
let audio = Decoder::from("example.wav")
.sample_rate(22050)
.mono()
.load()?;
let duration = get_duration(&audio);
println!("Duration: {} seconds", duration);§API Structure
The API is organized by concern for clarity and discoverability:
prelude- Convenient imports for common use casestypes- Core audio data types (AudioData, AudioError)io- Audio input/output operationsproc- Signal processing algorithmsfeat- Audio feature extractionutil- Utility functionspitch- Pitch detection and conversionmag- Magnitude spectrum operationsgenerate- Signal generation