Expand description
Music Information Retrieval (MIR) system for OxiMedia.
This crate provides comprehensive music analysis capabilities for audio content:
§Tempo and Beat Analysis
- Tempo Detection - BPM detection using autocorrelation and comb filtering
- Beat Tracking - Beat and downbeat detection with dynamic programming
- Onset Detection - Transient detection using spectral flux and HFC
§Tonal Analysis
- Key Detection - Musical key detection (Krumhansl-Schmuckler algorithm)
- Chord Recognition - Chord progression analysis using chroma features
- Melody Extraction - Dominant melody line extraction
- Harmonic Analysis - Harmonic-percussive separation
§Structure Analysis
- Structural Segmentation - Section boundary detection
- Self-Similarity Analysis - Pattern and repetition detection
- Section Labeling - Intro, verse, chorus, bridge identification
§High-Level Features
- Genre Classification - Genre detection from audio features
- Mood Detection - Valence and arousal estimation
- Loudness Analysis - Integrated loudness and dynamics
§Low-Level Features
- Spectral Features - Centroid, rolloff, flux, contrast
- Rhythm Features - Rhythm patterns and complexity
- Pitch Features - Pitch class profiles and chromagrams
§Usage
use oximedia_mir::{MirAnalyzer, MirConfig, FeatureSet};
// Create analyzer with default configuration
let config = MirConfig::default();
let analyzer = MirAnalyzer::new(config);
// Analyze audio samples (f32, mono or stereo)
let samples = vec![0.0_f32; 44100]; // 1 second of silence
let sample_rate = 44100.0;
// Perform analysis
let result = analyzer.analyze(&samples, sample_rate)?;
// Access results
if let Some(ref tempo) = result.tempo {
println!("Tempo: {:.1} BPM (confidence: {:.2})", tempo.bpm, tempo.confidence);
}
if let Some(ref key) = result.key {
println!("Key: {} (confidence: {:.2})", key.key, key.confidence);
}
if let Some(ref genre) = result.genre {
println!("Genre: {} (confidence: {:.2})", genre.top_genre().0, genre.top_genre().1);
}
§Patent-Free Implementation
All algorithms are implemented using patent-free methods:
- Autocorrelation-based tempo detection
- Chroma-based chord recognition
- Spectral-based onset detection
- Krumhansl-Schmuckler key detection
§Real-Time Capable
Many features support frame-by-frame processing for real-time applications.
Re-exports§
pub use midi::AudioToMidi;pub use midi::AudioToMidiConfig;pub use midi::MidiNote;pub use midi::MidiTempo;pub use midi::MidiTranscription;pub use streaming::StreamingAnalysisSummary;pub use streaming::StreamingAnalyzer;pub use streaming::StreamingConfig;pub use streaming::StreamingFrameFeatures;
Modules§
- audio_
events - Audio event detection (silence, speech, music, applause transitions).
- audio_
features - Audio feature extraction for Music Information Retrieval.
- audio_
similarity - Cosine, Earth-mover, and multi-modal audio similarity measures. Audio similarity metrics for Music Information Retrieval.
- beat
- Beat tracking and downbeat detection.
- beat_
tracker - Beat tracking and tempo hypothesis scoring.
- beat_
tracking - Beat tracking using auto-correlation and onset detection.
- chord
- Chord recognition and progression analysis.
- chord_
recognition - Chord recognition using chromagram template matching.
- chorus_
detect - Chorus and refrain detection in musical audio.
- chroma_
cache - Cached chromagram that amortises FFT cost across multiple consumers. Cached chromagram computation shared between chord recognition and key detection.
- chromagram
- 12-bin chroma vector computation (pitch-class profiling, chord/key analysis). Chromagram computation and analysis for pitch-class profiling.
- cover_
art_ features - Visual cover-art feature extraction (dominant colours, edge histograms). Cover art visual feature extraction for Music Information Retrieval.
- cover_
detect - Cover version detection for music information retrieval.
- dj_
features - DJ workflow features: Camelot wheel, beat-matching, compatibility scoring. Real-time DJ features: beat-matching and compatible key detection.
- dynamic_
range - Dynamic range analysis — LRA (Loudness Range), crest factor, compression detection.
- energy_
contour - Short-time energy contour extraction and analysis.
- fade_
detect - Fade-in and fade-out detection in audio tracks.
- fingerprint
- Audio fingerprinting module for
oximedia-mir. - genre
- Genre classification, hierarchy, similarity, and blend detection.
- genre_
classifier - Gaussian Naïve Bayes genre classifier operating on pre-extracted audio features.
- genre_
classify - Genre classification for music information retrieval.
- genre_
classify_ new - Neural-network-free rule-based genre classification (spectral features). Fine-grained genre sub-classification from spectral audio features.
- harmonic
- Harmonic analysis and separation.
- harmonic_
analysis - Chord recognition and harmonic analysis for Music Information Retrieval.
- harmonic_
percussive - Harmonic-percussive source separation (median-filter HPSS). Harmonic-percussive source separation (HPSS) for music analysis.
- harmonic_
spectral - Inharmonicity, HNR, and THD from the harmonic series. Fine-grained harmonic spectral analysis for Music Information Retrieval.
- instrument
- Fine-grained instrument recognition from MFCC and spectral features.
- instrument_
classifier - Instrument family and voice classification. Advanced instrument classification from spectral audio features.
- instrument_
detection - Musical instrument detection from spectral audio features.
- key
- Key detection using Krumhansl-Schmuckler algorithm.
- key_
detection - Musical key detection using the Krumhansl-Kessler profile method.
- loudness
- Loudness analysis and dynamics.
- lsh_
similarity - Locality-sensitive hashing for fast approximate audio nearest-neighbour. Locality-Sensitive Hashing (LSH) for fast approximate music similarity search.
- lyrics_
align - Forced alignment of lyrics text to detected onset timestamps. Lyrics timing alignment stub.
- melody
- Melody extraction and contour analysis.
- melody_
extract - Energy/zero-crossing melody extraction and contour shape analysis. Melody extraction and contour analysis.
- melody_
extractor - Harmonic-salience Viterbi melody extractor with vibrato detection. Predominant melody extraction using harmonic summation salience.
- midi
- Audio-to-MIDI basic transcription.
- mir_
feature - Generic feature vector utilities for Music Information Retrieval.
- mood
- Mood and emotion detection.
- mood_
detection - Music mood and emotion detection using the Russell circumplex model.
- multitrack
- Multi-stem analysis with per-stem feature extraction. Multi-track / stem-based music information retrieval.
- music_
summary - High-level music summary — intro/verse/chorus markers derived from structure analysis.
- onset_
peak - Onset peak picking with configurable threshold and minimum interval. Onset peak detection with adaptive thresholds for music information retrieval.
- onset_
strength - Onset strength envelope computation for Music Information Retrieval.
- pitch_
key - Musical key detection using the Krumhansl-Schmuckler algorithm.
- pitch_
track - Frame-by-frame fundamental-frequency (F0) tracking.
- playlist
- Music playlist intelligence for
oximedia-mir. - playlist_
gen - Music playlist generation using musical constraints.
- rhythm
- Rhythm feature extraction.
- rhythm_
pattern - Rhythm pattern analysis and drum-pattern recognition.
- section_
segmenter - Structural section segmentation via novelty-curve self-similarity. Music section segmentation via self-similarity matrix and novelty curves.
- segmentation
- Music structure segmentation.
- similarity
- Music similarity and distance metrics.
- similarity_
search - Brute-force and LSH similarity search over fingerprint indices. Music similarity search using fingerprints and Locality-Sensitive Hashing (LSH).
- source_
separation - Source separation — vocal / drum / bass / other stem splitting.
- spectral
- Spectral feature extraction.
- spectral_
contrast - Spectral contrast feature extraction for music analysis.
- spectral_
features - Audio feature extraction for Music Information Retrieval.
- streaming
- Streaming / incremental MIR analysis for real-time use.
- structure
- Structural segmentation and similarity analysis.
- structure_
analysis - Music structure analysis: verse, chorus, bridge detection and segment boundaries.
- subgenre
- Sub-genre tagging within broad genre families. Sub-genre classification extending the top-level genre system.
- tempo
- Tempo detection and BPM estimation.
- tempo_
map - Tempo map for music information retrieval.
- tempo_
stability - Tempo stability analysis (variance, drift, class). Tempo stability analysis module.
- thumbnail
- Waveform thumbnail generation for audio browsers. Audio thumbnailing — extract the most representative 15–30 second clip.
- tuning_
detect - Musical tuning detection for audio content.
- vocal_
detect - Vocal presence detection and vocal/instrumental classification.
- watermark
- Audio watermark embedding (spread-spectrum LSB steganography). Audio watermark detection using spectral analysis.
- watermark_
detect - Audio watermark detection and extraction. Simplified spread-spectrum audio watermark detection.
Structs§
- Analysis
Result - Complete analysis result.
- Beat
Result - Beat tracking result.
- Chord
Result - Chord recognition result.
- Feature
Set - Feature set flags for selective feature extraction.
- Genre
Result - Genre classification result.
- Harmonic
Result - Harmonic analysis result.
- KeyResult
- Key detection result.
- Loudness
Result - Loudness analysis result.
- Melody
Result - Melody extraction result.
- MirAnalyzer
- Main MIR analyzer.
- MirConfig
- Configuration for MIR analysis.
- Mood
Result - Mood detection result.
- Rhythm
Result - Rhythm features result.
- Spectral
Result - Spectral features result.
- Structure
Result - Structure analysis result.
- Tempo
Result - Tempo detection result.
Enums§
- MirError
- MIR error type.
Type Aliases§
- MirResult
- Result type for MIR operations.