Я строю синтезатор для iOS, используя Audio Unit, в основном построенный вокруг this .
Я уже поддерживаю простой конверт ASR, а также синусоиды, треугольники и прямоугольные волны.
Синусы просто,
sin(theta) * amplitude
Квадраты
sgn(sin(theta)) * amplitude
Теперь треугольники используют FFT без петель, как показано ниже:
((8 / pow(M_PI,2)) * (sin(theta) - sin(3*theta)/9 + sin(5*theta)/25)) * amplitude
Но я не могу понять пилообразные волны,
Я попытался 2*(theta - floor(theta) - 0.5)
, но он получился с искажением и искажением (не от отсечения).
Теперь я должен построить его с помощью ряда преобразований Фурье, но я не могу понять, как реализовать это в C.
Кто-нибудь может помочь?