// Standalone waveform helpers. Apache-2.0 licensed. module agila_open_audio import math pub fn sine_wave(sample_rate int, frequency f64, duration f64, amplitude f64) []i16 { if sample_rate <= 0 || frequency <= 0 || duration <= 0 { return []i16{} } count := int(f64(sample_rate) * duration) mut samples := []i16{cap: count} for i in 0 .. count { t := f64(i) / f64(sample_rate) value := math.sin(2.0 * math.pi * frequency * t) * amplitude samples << i16(value) } return samples }