Int X0=89                         //係数4個　値を変えてみて下さい
Int X1=82
Int X2=83
Int X3=84

Int R1
Int X=X3 
Int X9=X
Int LL
Int K1
Int OK=0

Str MM={Tempo=200 
TR=1 CH=1 @(MusicBox) l8 V(100) P.onNoteWave(54,74,!8)}

For(Int I=0; I<100; I++){          //100小節演奏する

R1=(X2+1)%9                      //小節毎に音長を決める
If(R1==0){LL=2}
If(R1==1){LL=3}
If(R1==2){LL=4}
If(R1==3){LL=6}
If(R1==4){LL=8}
If(R1==5){LL=12}
If(R1==6){LL=16}
If(R1==7){LL=24}
If(R1==8){LL=32}
MM=MM+{
l}+LL+{ }

For(Int J=0; J<LL; J++){          //1小節内の音階(X)を決める

For(Int K=0; K<20; K++){          //20回以内ドレミファソラシを捜す
X=(X0*X1+X2)%(X3+1)               //X3+1で0の除算を防ぐ

X=X%49+48                         //Xを48〜96にする

K1=X%12

IF(K1==0||K1==2||K1==4||K1==5||K1==7||K1==9||K1==11){OK=1 //ドレミファソラシのみOKとする


R1=(X3+1)%2                       //ノート番号またはタイを追加
IF(J==0){MM=MM+{n}+X}Else{IF(R1==0){MM=MM+{ n}+X}Else{MM=MM+{^}}}
                             X9=X          Exit}}//K bottom
R1=(X3+1)%5                       //ドレミファソラシがなかった場合は過去の音を採用する
IF(OK==0){IF(J==0){MM=MM+{n}+X9}Else{IF(R1<2){MM=MM+{ n}+X9}Else{MM=MM+{^}}}}
OK=0

X0=X1;X1=X2;X2=X3;X3=X}  //J bottom        係数をずらす
                       }//I bottom

Print(MM)                         //MML表示

Play(MM)                          //演奏