ハーモニー

forからendまでのブロックを複数つけ加えれば複数メロディを重ねるてハーモニーをつけることができる。

program3.sceを実行してみよう


// program3 -- 2声の音楽
exec("initialize.sce");
// メロディ1
for i=0:63
    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);
    x(s+w+1)=x(s+w+1)+a.*r.*sin(2*%pi*f*t)*0.1;
end
//メロディ2
for i=0:63
    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);
    x(s+w+1)=x(s+w+1)+a.*r.*sin(2*%pi*f*t)*0.1;
end
//再生
play(x);

赤色の部分の数値を変更すると、いろいろな変化がおきる。

慣れてきたら赤色以外の式を変更しても、うまくいけば(errorにならなければ)さらに面白い効果が得られる場合がある。