///|
fn main {
let layout = @moonloudness.ChannelLayout::stereo()
let config = match @moonloudness.MeterConfig::new(48000, layout) {
Ok(value) => value
Err(_) => panic()
}
let analyzer = match
@moonloudness.Analyzer::new_with_history_capacity(config, 8) {
Ok(value) => value
Err(_) => panic()
}
let pi = 3.141592653589793
for chunk_index in 0..<10 {
let interleaved : Array[Double] = []
for local_frame in 0..<4800 {
let frame = chunk_index * 4800 + local_frame
let left = 0.12 *
@math.sin(2.0 * pi * 997.0 * frame.to_double() / 48000.0)
let right = 0.08 *
@math.sin(2.0 * pi * 440.0 * frame.to_double() / 48000.0)
interleaved.push(left)
interleaved.push(right)
}
match analyzer.push(interleaved) {
Ok(_) => ()
Err(_) => panic()
}
}
println("Duration (seconds): " + analyzer.duration_seconds().to_string())
println("Retained points: " + analyzer.history().length().to_string())
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.integrated_gate() {
Some(gate) => {
println("Blocks passing gate: " + gate.gated_block_count().to_string())
println(
"Applied gate (LUFS): " + gate.applied_threshold_lufs().to_string(),
)
}
None => println("No blocks passed the absolute gate")
}
}