///|
fn main {
println("==================================================")
println(" MoonMel Audio Pipeline Demonstration ")
println("==================================================")
let sr = 16000
let durations = [1, 10]
for dur in durations {
let num_samples = sr * dur
let samples : Array[Double] = Array::make(num_samples, 0.0)
let pi = 3.14159265358979323846264338327950288
// Generate multi-tone synthetic test audio (440Hz + 1000Hz + 2500Hz)
for i in 0..
println(
" [STFT] Spectrum shape: [\{spec.n_rows} bins, \{spec.n_cols} frames]",
)
Err(e) => println(" [STFT] Error: \{e}")
}
// 2. Mel Spectrogram
match @moonmel.mel_spectrogram(samples, config=cfg) {
Ok(mel) =>
println(
" [Mel] Filterbank shape: [\{mel.n_rows} mels, \{mel.n_cols} frames]",
)
Err(e) => println(" [Mel] Error: \{e}")
}
// 3. Log-Mel
match @moonmel.log_mel_spectrogram(samples, config=cfg) {
Ok(logmel) =>
println(
" [Log-Mel] Matrix shape: [\{logmel.n_rows} mels, \{logmel.n_cols} frames]",
)
Err(e) => println(" [Log-Mel] Error: \{e}")
}
// 4. MFCC
match @moonmel.mfcc(samples, config=cfg) {
Ok(mfccs) =>
println(
" [MFCC] Cepstrum shape: [\{mfccs.n_rows} mfccs, \{mfccs.n_cols} frames]",
)
Err(e) => println(" [MFCC] Error: \{e}")
}
}
println("==================================================")
println(" Demonstration complete.")
println("==================================================")
}