|
|
||
酔漢が作ったScilab用ライブラリ
fs=22050; // default sampling frequency of Scilab[Hz] sec=fs; // unit of time Hz=2*%pi/fs; // unit of frequency // generate harmonics of tone. // fre : base harmonic frequency by scalar // harm : harmonics matrix 2xN where N is number of harmonics. // 1st raw is the multiplier of freq. 2nd raw is the amplitude coeff // example : [ 1,3,5,7,... ; 1,1/3,1/5,1/7...] makes square wave. // len : length of wave function y=gen_harmonics(fre,harm,len) y=0 index=[1:len] for i=harm y=y+i(2)*sin(i(1)*fre*index) end endfunction // generate sawtooth // fre : frequency by scalar // len : length of wave function y=gen_sawtooth(fre,len) index=fre*[1:len]/2/%pi; y=(index-ceil(index)+0.5)*2; endfunction // generate square wave // fre : frequency by scalar // duty : duty cycle. 0 .. 1.0 // len : length of wave function y=gen_square(fre,duty,len) saw=gen_sawtooth(fre,len)/2-0.5; y=max(min((ceil(saw+duty)-0.5)*2,1),-1); endfunction