地図/信号/音の合成

加算合成 — 倍音を足す

角ばった波形は、正弦波をたくさん重ねると作れる。基本周波数の整数倍(2倍、3倍…)の正弦波が倍音で、それを足し合わせていく。

足し方にレシピがある。1/n の音量で全部の倍音を足すと鋸波に、奇数倍音だけを 1/n で足すと矩形波に近づく。倍音の本数 n を1から増やすと、正弦波から角ばった波へ立ち上がっていく。

各 x で基音から count 番目までの倍音 Math.sin(... * k)1/k の音量で足し、その和を縦位置にしている。倍音が1本のときは正弦波。本数が増えるほど坂が立ち上がって鋸波になる。左上の harmonics がいま足している倍音の本数。oddOnlytrue にすると足すのが奇数倍音だけになって、矩形波の角が出る。

加算合成は、フーリエの「どんな周期波も正弦波の和に分解できる」を逆向きに使う。分解せず、整数倍の正弦波を組み立てて任意の波形を作る。1/n の重みで全倍音を足すと鋸波、奇数倍音だけだと矩形波になる。有限本で不連続な段差を再現すると、段差の際で約9%だけ行き過ぎる小さなツノが残る。ギブス現象で、倍音を増やしてもツノの高さは減らず幅が狭くなるだけになる。WebAudio の PeriodicWave は倍音テーブルを直接渡して波形を組む仕組みで、この 1/n の足し算と同じ原理で動く。