lisve

lisve(LISp waVE のつもり…リスヴって発音するとか、そんな感じで)
ん。思ってたくらいの面白いのになったような。僕にしては珍しい…

2000 ; 何秒間やるか
1024 ; 一秒間に何周するか

16 ; format
22050 ; PCM の freq


(sin t) ; sin波

これで周波数1kのsin波が出る。
tが0〜2πで回ってて、-1〜1の値を返してやるとwaveになる。

2000 ; 何秒間やるか
1024 ; 一秒間に何周するか

16 ; format
22050 ; PCM の freq


(if (> t pi) 0 1)

これで方形波
んで、複数行に分けると周波数違い。

2000 ; 何秒間やるか
1024 ; 一秒間に何周するか

16 ; format
22050 ; PCM の freq


(sin t) ; 1ω
(sin t) ; 2ω
(sin t) ; 3ω

setfreq関数で以降の周波数を変える。

2000 ; 何秒間やるか
0.5 ; 一秒間に何周するか

16 ; format
22050 ; PCM の freq


(/ 1 t)
(setfreq 1024)
(sin t)

こんな感じ。


ただ、問題があって、僕は「方形波」って言われてもどんな音かわからないので、あってるかどうかはわからない。


一日でどれだけ書けるか、に挑戦してたりするので、ソースは結構ひどい。boehm GC使ったら大丈夫。とか思ってたら、GLibのHashTableとうまくくっつかなくて、GC使わなくしたので、リークしまくり。小数の精度は捨てまくり。


小数の精度はもーちょっとなんとかしたほうがいいかな…あと、wavに吐けるようにしたい。SDLとGLibがいります。