高調波も生成する

前回正弦波を生成するプログラムを実験してみました。次に高調波成分まで生成するプログラムの実験をして見ましょう。

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で割っているのは、再生時に飽和によって音が歪むのを避けるのが目的です。