リズムを作る

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);

          

赤色の式を変更すると、リズムが変化することを確かめよう。