/* 交差と変異 試行錯誤の続き。 */ //------------------------------------------------------------------------------ //元になる音 Array SrcA=("c","c","c","c","c","c","c","r") Array SrcB=("c","c","c","c","c","c","c","r") //出力先 Array DstA Array DstB Str Buffer //交差ポイント Int CrossPoint //カウンタ、インデックス Int I Int J //------------------------------------------------------------------------------ //リピート指定 [4 //何回かまとめて実行させたい場合(1回ずつだと変化するまでが長すぎる) [128 //交差 CrossPoint=Random(8)//交差ポイントを振る //ポイント手前まで読む For(I=0;I<CrossPoint;I++){ DstA(I)=SrcA(I) DstB(I)=SrcB(I) } //ポイントから後を読む For(I=CrossPoint;I<8;I++){ DstA(I)=SrcB(I) DstB(I)=SrcA(I) } //変異 If(Random(8)==0){//ゼロの時だけ Switch(DstA(CrossPoint)){//交差ポイントで変異する Case("c"){DstA(CrossPoint)="b"} Case("d"){DstA(CrossPoint)="e"} Case("e"){DstA(CrossPoint)="a"} Case("f"){DstA(CrossPoint)="d"} Case("g"){DstA(CrossPoint)="g"} Case("a"){DstA(CrossPoint)="c"} Case("b"){DstA(CrossPoint)="f"} Default{DstA(CrossPoint)="r"} } } //次回リピート用にSrcを更新 SrcA=DstA SrcB=DstB ] //演奏確認 TR(1) o5 l1 For(J=0;J<8;J++){ Buffer=Buffer+(DstA(J)) } Print(Buffer) Buffer Buffer="" /* //前に音列いじってた時の名残 TR(2) o4 l1 For(J=0;J<8;J++){ Buffer=Buffer+(SrcA(J)) } Print(Buffer) Buffer Buffer="" TR(3) o4 l1 For(J=0;J<8;J++){ Buffer=Buffer+(SrcB(J)) } Print(Buffer) Buffer Buffer="" */ TR(4) o3 l1 For(J=0;J<8;J++){ Buffer=Buffer+(DstB(J)) } Print(Buffer) Buffer Buffer="" Print("") ] //------------------------------------------------------------------------------