Scilabでwavファイルいじり

soundsecなる関数についてメモ。

Name
soundsec ― generates n sampled seconds of time parameter
Calling Sequence
t=soundsec(n [,rate])


Parameters
n : an integer, the number of seconds to generate.
rate : an integer, the number of samples per second.

公式HELPにこんな風に書いてあるのに、直後の例に
soundsec(0.5)
とか書いてあって俺混乱。0.5はintegerではないだろ常識的に考えて……。


Google先生によると、soundsec(n)で、n秒間を22050等分して等差数列として要素を格納できるそうな。
例えば
soundsec(1) = 0. 0.0000454 0.0000907 0.0001361 0.0001814 0.0002268 0.0002721 0.0003175 0.0003628 ...
という感じに、要素が22050個続く。
非常にカンがいい人か、音の信号処理をやっていたことがある人はすぐ気づくと思うが、この22050という数字はsampling周波数に相当する。例えば
s = sin(2*%pi*440*t)
は、Scilabで命令させれば、各tの要素に対しこの計算を行った、22050の要素をもつ横ベクトルになる。これは、連続正弦波音を22.05 kHzの周波数でsamplingした結果に等しい。


やっと冒頭に戻るが、このsampling周波数を変更するのが、soundsec(n [,rate])のrateの部分。rateは省略した場合defaultで22050が入るようになっているが、例えばrate = 44100とすることにより、標準的な44.1 kHzのsamplingを実現できる。