///|
fn main {
  let signal = try! @mspectrum.sine_wave(
    length=1024,
    sample_rate=8000.0,
    frequency=440.0,
  )
  let peak = try! @analysis.dominant_peak(signal[:], 8000.0)
  let buffer = try! @audio.audio_buffer(1, 8000, signal)
  let spectrum_config = try! @analysis.SpectrumConfig::new(
    window_length=256,
    hop_size=128,
    window_kind=@mspectrum.Hann,
  )
  let spectrogram = try! @analysis.spectrogram(buffer, spectrum_config)
  let peak_config = try! @analysis.PeakConfig::new(
    frequency_radius=2,
    time_radius=0,
    min_magnitude=0.1,
    max_peaks_per_frame=2,
  )
  let peaks = try! @analysis.extract_peaks(spectrogram, peak_config)
  println("Spectrum example")
  println("dominant_frequency_hz: \{peak.frequency}")
  println("dominant_bin: \{peak.index}")
  println("selected_peak_count: \{peaks.length()}")
}