rosa 0.1.0

Audio feature extraction library matching librosa output
Documentation
//! # Rosa
//!
//! Audio feature extraction library matching [librosa](https://librosa.org/) output.
//!
//! Rosa ports librosa's core functionality to Rust with numerical accuracy
//! validated against Python reference data.
//!
//! ```no_run
//! use rosa::{load, stft, mel_spectrogram, StftParams, MelSpectrogramParams};
//!
//! let (samples, sr) = load("audio.wav", None, true).unwrap();
//!
//! // Compute STFT (returns real and imaginary matrices)
//! let (re, im) = stft(&samples, &StftParams::default());
//!
//! // Compute mel spectrogram
//! let mel = mel_spectrogram(&samples, &MelSpectrogramParams::new(sr as f64));
//! ```

pub mod audio;
pub mod autocorrelate;
pub mod beat;
pub mod buffer;
pub mod convert;
pub mod cqt;
pub mod dsp;
pub mod effects;
pub mod matrix;
pub mod onset;
pub mod pitch;
pub mod segment;
pub mod sequence;
pub mod spectral;
pub mod stft;
pub mod windows;

// --- STFT & Mel ---

pub use stft::{
    IstftParams, MelFilterParams, MelNorm, MelSpectrogramParams, StftParams, fft_frequencies,
    hz_to_mel, istft, magphase, mel_filter, mel_frequencies, mel_spectrogram, mel_to_hz,
    spectrogram, stft, stft_as_real_imag,
};

// --- Conversions ---

pub use convert::{
    MidiToNoteParams, NoteToMidiParams, a_weighting, b_weighting, c_weighting, cqt_frequencies,
    d_weighting, frames_to_samples, frames_to_time, frequency_weighting, hz_to_midi, hz_to_note,
    hz_to_octs, hz_to_octs_tuned, key_to_notes, midi_to_hz, midi_to_note, note_to_hz, note_to_midi,
    octs_to_hz, samples_to_frames, samples_to_time, time_to_frames, time_to_samples, z_weighting,
};

// --- Autocorrelation ---

pub use autocorrelate::autocorrelate;

// --- Audio I/O & Signal Generators ---

pub use audio::{
    AudioError, chirp, clicks, get_duration, get_samplerate, load, mu_compress, mu_expand,
    resample, to_mono, tone, zero_crossings,
};

// --- Matrix utilities ---

pub use matrix::{Aggregate, Matrix, stack_memory, sync};

// --- Spectral Features ---

pub use spectral::{
    DeltaParams, MfccParams, dct_matrix, delta, mfcc, perceptual_weighting, rms,
    spectral_bandwidth, spectral_centroid, spectral_contrast, spectral_flatness, spectral_rolloff,
    zero_crossing_rate,
};

// --- Window Functions ---

pub use windows::get_window;

// --- DSP Utilities (dB, normalization, helpers) ---

pub use dsp::complex::{abs2, phasor};
pub use dsp::db::{amplitude_to_db, db_to_amplitude, db_to_power, power_to_db};
pub use dsp::util::{
    Norm, fix_length, localmax, localmin, normalize, pad_center, peak_pick, softmask,
};

// --- Onset Detection ---

pub use onset::{OnsetStrengthParams, onset_backtrack, onset_detect, onset_strength};

// --- Beat Tracking & Tempo ---

pub use beat::{
    BeatTrackParams, FourierTempogramParams, PlpParams, TempoParams, TempogramParams,
    TempogramRatioParams, beat_track, fourier_tempo_frequencies, fourier_tempogram, plp, tempo,
    tempo_frequencies, tempogram, tempogram_ratio,
};

// --- Audio Effects ---

pub use effects::{deemphasis, preemphasis, split, trim};

// --- Pitch Tracking ---

pub use pitch::{
    PiptrackParams, PyinParams, PyinResult, YinParams, estimate_tuning, lpc, piptrack,
    pitch_tuning, pyin, yin,
};

// --- Sequence Analysis (Viterbi) ---

pub use sequence::{
    transition_local, transition_loop, transition_uniform, viterbi, viterbi_binary,
    viterbi_discriminative,
};

// --- Segmentation & Self-similarity ---

pub use segment::{
    DistanceMetric, PathEnhanceParams, RecurrenceMode, RecurrenceParams, path_enhance,
    recurrence_matrix,
};

// --- CQT, Chroma & Harmonic Analysis ---

pub use cqt::{
    ChromaCensParams, ChromaCqtParams, ChromaFilterParams, ChromaStftParams, CqtMode, CqtParams,
    IcqtParams, SalienceParams, VqtParams, WaveletLengthsParams, WaveletParams, chroma_cens,
    chroma_cqt, chroma_filter, chroma_stft, complex_magnitude, cq_to_chroma, cqt, f0_harmonics,
    hybrid_cqt, icqt, interp_harmonics, pseudo_cqt, salience, tonnetz, vqt, wavelet,
    wavelet_lengths, window_bandwidth,
};