blob: fc31f6fc041cb1ef2457f76dece41fff96c6fa0e (
plain) (
tree)
|
|
#include "osc.h"
osc_t OSC_saw = MAKE_OSC("f_saw", 20000, WAVE);
OSC_COMMON(saw)
float
sawX(float sm, int offset, int len)
{
float dOutput = 0.0;
for (float n = 1.0; n < sm; n++)
dOutput += (sinf(n * 2.0 * M_PI * offset / len)) / n;
return 0.5 * dOutput;
}
float
osc_saw(float offset)
{
return osc_interpolate(offset,
sawX(25, (int)offset, OSC_saw.len),
sawX(25, osc_next_index(&OSC_saw, offset), OSC_saw.len));
}
float
osc_saw_next(float f, float offset)
{
return osc_next_offset(&OSC_saw, f, offset);
}
|