Sine with recurrence formula
#正弦関数 #三角関数 #シンセ #漸化式 #数学
正弦関数を漸化式でつくろう
$ s[n+1] = 2 \cos(\omega \Delta t) s[n] - s[n-1]
さらに、正弦関数と指数関数的減衰の掛け算も漸化式で作れちゃう
$ s[n+1] = 2 \exp(-\gamma \Delta t) \cos(\omega \Delta t) s[n] - \exp(-2 \gamma \Delta t) s[n-1]
athibaulによるDittytoyでの実装
https://dittytoy.net/ditty/59300f01a0
Demoscene鯖でWrighterに教えてもらった
https://discord.com/channels/534447164043165696/688726629509496846/1081511185066774541
導出
積和の公式
$ \sin(a + b) + \sin(a - b) = 2 \sin a \cos b
を利用して導出できる
$ \sin(\omega (t + \Delta t)) = 2 \cos(\omega \Delta t) \sin(\omega t) - \sin(\omega (t - \Delta t))
$ \sin(\omega(t + \Delta t)) - \sin(\omega(t - \Delta t)) = 2 \cos(\omega \Delta t) \sin(\omega t)
おー
関連
この方法だと、サイン波の周波数を動的に変化させられないという問題がある
そんなときは2次元回転行列でサイン波