// Copyright 2026 MoonBit DSP Authors
// Apache-2.0 License

///|
fn main {
  println("=== MoonBit DSP: FFT & Spectrum Analysis Demo ===")

  let fs = 1000.0
  let n = 128
  let f0 = 150.0

  let signal = Array::make(n, 0.0)
  for i = 0; i < n; i = i + 1 {
    let t = i.to_double() / fs
    signal[i] = @cmath.sin(2.0 * @cmath.PI * f0 * t)
  }

  let hann = @window.WindowType::hann().generate(n)
  @window.apply_window(signal, hann)

  let spec = @fft.rfft(signal)
  let dom_freq = @fft.find_dominant_frequency(spec, fs)

  println("Generated 150.0 Hz Sine wave with Hann windowing.")
  println("Detected dominant frequency: \{dom_freq} Hz")
}