view semiconginev2/audio/generators.nim @ 1261:6deb5ceaa3fb

merge
author sam <sam@basx.dev>
date Sun, 28 Jul 2024 21:39:45 +0700
parents 27cd1c21290e
children
line wrap: on
line source

proc sinewave(f: float): proc(x: float): float =
  proc ret(x: float): float =
    sin(x * 2 * Pi * f)
  result = ret

proc SineSoundData*(f: float, len: float, rate: int, amplitude = 0.5'f32): SoundData =
  let dt = 1'f / float(rate)
  var sine = sinewave(f)
  for i in 0 ..< int(float(rate) * len):
    let t = dt * float(i)
    let value = int16(sine(t) * float(high(int16)) * amplitude)
    result.add [value, value]