高調波も生成する
前回正弦波を生成するプログラムを実験してみました。次に高調波成分まで生成するプログラムの実験をして見ましょう。
fs=22050; // default sampling frequency of Scilab[Hz] sec=fs; // unit of time Hz=2*%pi/fs; // unit of frequency index=[1:3*sec]; // generate base index for 3 seconds // generate 1kHz wave as 3 seconds wave=sin(index*1000*Hz)+sin(index*3000*Hz)/3+sin(index*5000*Hz)/5; playsnd(wave/2); // play by 22.05kHz sampling
やっていることは簡単です。高調波まで生成するなら、高調波を次々に重ね合わせていくだけです。振幅も自由に指定できます。ただし、プログラムは少し読みにくくなりました。
playsnd()の引数を2で割っているのは、再生時に飽和によって音が歪むのを避けるのが目的です。