リズムを作る
randはでたらめな数を作る関数だ。
randの音を聞いてみよう。
play(rand(t)-0.5);
メロディと同じように、音量に変化をつけることができる。
// リズム1 exec("initialize.sce"); a=(1-exp(-t/0.001)); r=exp(-t/0.03); for i=0:63 s=int(i*fs/6); n=rand(t)-0.5; x(w+s+1)=x(w+s+1)+a.*r.*n; end //再生 play(x);赤字のところを変更して、音の変化を確認しよう。
パーカッションの場合は、タイミングに変化をつけると面白い。
// リズム2 exec("initialize.sce"); a=(1-exp(-t/0.001)); r=exp(-t/0.03); for i=0:63 k=int(i/8)*8; j=i-k; s=int((k+9-12/(12-j))*fs/4); n=rand(t)-0.5; x(w+s+1)=x(w+s+1)+a.*r.*n; end //再生 play(x);赤字のところを変更して、リズムの変化を確認しよう。
これを先ほどのメロディと合わせるとこんな音楽になる。
program6.sce
としても保存してあるので、実行してみよう。
// program6.sce -- 打楽器風の音を加える exec("initialize.sce"); // メロディ1 for i=0:63 a=(1-exp(-t/0.01)); r=exp(-t/0.3); s=int(i*fs/4); k=i-int(i/4)*4; j=k*2; n=int(j/7*12 + 0.4); f=440*2^(n/12); m=sin(2*%pi*f*t).*sin(20*t); x(w+s+1)=x(w+s+1)+a.*r.* sin(2*%pi*f*t+m)*.2; end //メロディ2 for i=0:63 a=(1-exp(-t/0.001)); r=exp(-t/0.1); s=int(i*fs/4); k=i-int(i/8)*8; j=int(k/2)*3+7; n=int(j/7*12 + 0.4); f=440*2^(n/12); m=sin(3*%pi*f*t).*sin(4*t)*2; x(w+s+1)=x(w+s+1)+a.*r.* sin(2*%pi*f*t+m)*.2; end // リズム2 a=(1-exp(-t/0.001)); r=exp(-t/0.03); for i=0:63 k=int(i/8)*8; j=i-k; s=int((k+9-12/(12-j))*fs/4); n=rand(t)-0.5; x(w+s+1)=x(w+s+1)+a.*r.*n; end // 再生 play(x);赤色の式を変更すると、リズムが変化することを確かめよう。