///|
fn main {
let config = match
@moonloudness.MeterConfig::new(48000, @moonloudness.ChannelLayout::mono()) {
Ok(value) => value
Err(_) => panic()
}
let analyzer = @moonloudness.Analyzer::new(config)
let samples : Array[Double] = []
let pi = 3.141592653589793
for frame in 0..<48000 {
let phase = 2.0 * pi * 1000.0 * frame.to_double() / 48000.0
samples.push(0.1 * @math.sin(phase))
}
match analyzer.push(samples) {
Ok(_) => ()
Err(_) => panic()
}
let report = analyzer.finish()
match report.integrated_lufs() {
Some(value) => println("Integrated loudness (LUFS): " + value.to_string())
None => println("Integrated loudness (LUFS): unavailable")
}
match report.sample_peak_dbfs() {
Some(value) => println("Sample peak (dBFS): " + value.to_string())
None => println("Sample peak (dBFS): unavailable")
}
match report.true_peak_dbtp() {
Some(value) => println("True peak (dBTP): " + value.to_string())
None => println("True peak (dBTP): unavailable")
}
let plan = match report.normalization_plan(-16.0, -1.0) {
Ok(value) => value
Err(_) => panic()
}
println("Advisory gain (dB): " + plan.applied_gain_db().to_string())
}