ファミコン疑似三角波のフーリエ級数展開

概要

http://sketch.txt-nifty.com/blog/2008/12/post-cb2c.htmlによれば、ファミコン音源の「三角波」は実は16段階の階段状で、F E D C B A 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 A B C D E F の繰り返しを出力するそうだ。なるほどね。

ということでフーリエ級数展開してみよう。周期$t_0$の三角波の一周期分は$\left\{0<x<\frac{t_{0}}{2}:-1+\frac{4x}{t_{0}},\frac{t_{0}}{2}<x<t_{0}:3-\frac{4x}{t_{0}}\right\}$と書けて(これはdesmos記法の条件分岐。標準的な記法で書くなら$\begin{cases} -1+\frac{4x}{t_{0}} & (0<x<\frac{t_{0}}{2}) \\ 3-\frac{4x}{t_{0}} & (\frac{t_{0}}{2}<x<t_{0}) \end{cases}$ のこと。)、これを16段階に切ってやるには8倍して床関数を噛ませればよくて、それを線形変換して-1~1の範囲におさめると$f(x) = \frac{\operatorname{floor}\left(\left\{0<x<\frac{t_{0}}{2}:-1+\frac{4x}{t_{0}},\frac{t_{0}}{2}<x<t_{0}:3-\frac{4x}{t_{0}}\right\}\cdot8\right)\cdot2+1}{15}$ と書ける。この$f(x)$ をフーリエ級数展開してやればいい。

正の整数$n$について$h(n) = \frac{2}{t_{0}}\int_{0}^{t_{0}}f\left(x\right)\cos\left(\frac{2\pi n x}{t_{0}}\right)dx$ とする。区分定数関数なので簡単に計算できて$$h(n) = \frac{4}{2\pi n}\sum_{l=0}^{15}\left(-1+\frac{2l}{15}\right)\left(\sin\left(\frac{2\pi n\left(l+1\right)}{32}\right)-\sin\left(\frac{2\pi nl}{32}\right)\right)$$シグマを展開すると隣り合う項同士が部分的に打ち消し合うので$$h(n) = \frac{4}{2\pi n}\left(\sin\left(\pi n\right)-\frac{2}{15}\sum_{m=0}^{15}\sin\left(\frac{2\pi m n}{32}\right)\right) $$

整数$n$に対して$\sin\left(\pi n\right) = 0$ である。偶数$n$に対しては$\sum_{m=0}^{15}\sin\left(\frac{2\pi m n}{32}\right)$というのは($n$が$32$の倍数でないのなら単位円上に等間隔に置かれた点のy座標の総和、$n$が$32$の倍数なら全部ゼロなので)ゼロ。ということでフーリエ級数展開は(収束性とかの議論をすっ飛ばして=を書いてしまうと) $$f(x) = \sum_{k=1}^{\infty}h\left(k\right)\cos\left(\frac{2\pi kx}{t_{0}}\right) = \sum_{k=0}^{\infty}h\left(2k+1\right)\cos\left(\frac{2\pi\left(2k+1\right)x}{t_{0}}\right) $$ sinの和をうまく積和で処理してやることで $$f(x) = \sum_{k=0}^{\infty}-\frac{4}{\pi\left(2k+1\right)}\left(\frac{\sin\left(\frac{\pi\left(2k+1\right)}{2}\right)\sin\left(\frac{15\pi\left(2k+1\right)}{32}\right)}{15\sin\left(\frac{\pi\left(2k+1\right)}{32}\right)}\right)\cos\left(\frac{2\pi\left(2k+1\right)x}{t_{0}}\right)$$ を得る。

メモ用紙はこちら

実際どんな感じになるのかを見てみよう。2乗して対数取って10倍すればデシベルが出る。

 

f:id:hsjoihs:20200904153826p:plain

三角波ファミコン疑似三角波の周波数特性

 

ということで、第3倍音や第5倍音などについてはほぼ差は無いが、疑似三角波の方は例えば第31倍音が-29.83dBあり、これは第5倍音(-28.67dB)に匹敵するというわけか。なるほど。

 

追記

このサイトにも "a triangle wave generator with a 32-step waveform (16 steps up, 16 steps down)" と書いてあるので、16段階なんでしょう(てきとう)

nerdlypleasures.blogspot.com