// TrackName ={"無機的な深青 ver.1.9"} 
   Copyright ={"庚申works"}
// MetaText={"謎のサイン、SysEx$[エクスクルーシブ]についてのコメントつき, チャンスオペレーションを使った、純正律の実験音楽です。"}



	
/*	2分半の曲で、62小節です。 

	  ダウンロード有難うございます。
	TW-music2で、最終バランスを整えてます、環境は、XP版 MSGSです。
	コーラスが深いので、サクラ純正だとちょっとつらいかもしれません。


	文章多めです、変に調子づきました、...実は、
	何故か書くことが増えたのでした。。今回、持てる知識は詰め込みました。、、


	※構造化エディタ対応です。


	初めてGS拡張音源を使用しました。
	サクラ純正(MSGS)やTW-Music2(DirectMusic)にもともと含まれているGS拡張音源セットから、
	主に、@81,8のサインウェーブ、@123,5 Bubbleを使用しています。

	また、エクスクルーシブでスケールチューニングを変更し、
	純正律を使用しています。
	セントのずれは、この数値にしてます。(+0,+12,+4,+16,-14,-2,-10,+2,+14,-16,+18,-12)


*/
	#EXB={1} // <-- [0] へ変更すると、平均律になり、"有機的な深青"に代ります。
/*


	純正律の曲 ["In C" など] への、自分なりのアプローチをしてみました。

	気がつくと、"Water Walk" みたいになってしまいました、、
	当初は、"In A Landscape" みたいな方向性を目指してました、。


	以下調律の解説です ---

	一般的な楽器は平均律となっています。
	和音構成や転調の際、都合がよいためです、、他にも理由がありますが割愛します。、

	平均律は、聴感上、平均的になる数値で調律されており、、
	物理的には、セント単位で少し高かったり、低かったりして均等ではありません。
	ゆえに、音の組合せによっては特有の不協和音を発生します。

	この不協和音とは倍音の干渉縞のようなもので、
	コードなどは、この響きにかなり左右され、
	ひいてはコードの流れ、さらにはメロディの流れに影響します。

	アヴェイラブル・ノート・スケールなどにおける音の定義や、
	ドミナント[D]からトニック[T]へのコードモーションの解決は、
	実は、平均律による不協和音の影が色濃いのです。、

	純正律では、この干渉縞を消すため、主音を中心に不協和音がなくなるよう調律します。
	安定、不安定などの音のカラーが、とぼしくなるため、機械的な音色になると言われます。

	------


	純正律を演奏するに当たり、5-15CH を全て、@81,8 サイン波を出力するように変更、
	これに r32休符分のショートディレイで、アーリーリフレクションの効果をかけ、
	さらにr4r8r32休符分遅らせた、ロングディレイをミックスしてます。

	チャンスオペレーションとして、16CH は単独で使用、
	@81,0-@128,3 までのGSの音色をどれかを選択しながら、
	音によってはコメディタッチになります、..固定フレーズで 5度、偶発的に出現します。

	残りのチャンネルは、@123,5 Bubble の音色を使用して、ポリリズム音列を生成してます。



	今回の隠されたテーマは図形で音楽?! なので、
	リズムマクロの仕組みを参考に、マトリクスタイプのステップシーケンサーもどきを組み、
	打ち込んでます、。


	Z .. 0 Oct.v110		z .. 0 Oct.v62		r .. 休符
	X .. 1 Oct.v106		x .. 1 Oct.v58		^ .. スラー
	C .. 2 Oct.v102		c .. 2 Oct.v54
*/
	#BEAT_DATA1={

		Rhym(1) ={l12		Zrzr rrrr rrrr  rrrr  Xrxr rrrr}; // 12拍子 / TR(1)
		Rhym(0) ={l10		rrrZr  zrrrr    rrrXr   xrrrr  }; // 10拍子
		//Rhym(1) ={l6 		rrrrrr  rZrzrr};		  // 6拍子
		Rhym(2) ={l8 		rrZr zrrr rrrr  rZrz};		  // 8拍子


		Mldy(0) ={l12		rrrrrrrrrrrrCrrrrrrrrrrr};	//ドから半音階
		Mldy(1) ={l12		rrrrrrrrrrxrrrxrrrrrrrrr};
		Mldy(2) ={l12		rrrrrrrrxrrrrrrrcrrrrrrr};
		Mldy(3) ={l12		rrrrrrxrrrrrrrrrrrxrrrrr};
		Mldy(4) ={l12		rrrrcrrrrrrrrrrrrrrrcrrr};
		Mldy(5) ={l12		rrxrrrrrrrrrrrrrrrrrrrrX};
		Mldy(6) ={l12		Crrrrrrrrrrrrrrrrrrrrcrr};
		Mldy(7) ={l12		rrrxrrrrrrrrrrrrrrrxrrrr};
		Mldy(8) ={l12		rrrrrcrrrrrrrrrrrcrrrrrr};
		Mldy(9) ={l12		rrrrrrrxrrrrrrrxrrrrrrrr};
		Mldy(10)={l12		rrrrrrrrrcrrrcrrrrrrrrrr};
		Mldy(11)={l12		rrrrrrrrrrrXrrrrrrrrrrrr};	//シ / TR(15)
	}

	#BEAT_DATA2={

		Rhym(1) ={l12		Zrzr rrrr  rrrr rrrr  Xrxr rrrr}; // 12拍子 / TR(1)
		Rhym(0) ={l10		rrrZr  zrrrr    rrrXr   xrrrr  }; // 10拍子
		//Rhym(1) ={l6 		rrrrrr  rZrzrr};		  // 6拍子
		Rhym(2) ={l8 		rrZr zrrr rrrr  rZrz};		  // 8拍子

		Mldy(0) ={l12		rrrrrrrrrrrCrrrrrrrrrrrr};	//ドから半音階
		Mldy(1) ={l12		rrrrrrrrrxrrrxrrrrrrrrrr};
		Mldy(2) ={l12		rrrrrrrcrrrrrrrcrrrrrrrr};
		Mldy(3) ={l12		rrrrrxrrrrrrrrrrrxrrrrrr};
		Mldy(4) ={l12		rrrcrrrrrrrrrrrrrrrcrrrr};
		Mldy(5) ={l12		Xrrrrrrrrrrrrrrrrrrrrxrr};
		Mldy(6) ={l12		rrcrrrrrrrrrrrrrrrrrrrrC};
		Mldy(7) ={l12		rrrrxrrrrrrrrrrrrrrrxrrr};
		Mldy(8) ={l12		rrrrrrcrrrrrrrrrrrcrrrrr};
		Mldy(9) ={l12		rrrrrrrrxrrrrrrrxrrrrrrr};
		Mldy(10)={l12		rrrrrrrrrrcrrrcrrrrrrrrr};
		Mldy(11)={l12		rrrrrrrrrrrrXrrrrrrrrrrr};	//シ  /  TR(15)
	}


	#CONV={1} // <-- [0] で、裏の小細工をやめます。



/*	上記を[0]にすると、ディレイも含め、
	縦のトラックコンバートと、横のフレーズローテーションをやめます。

	また、上記のマトリクスが演奏データのため、
	Mldy(11)などの rrr の並びに 連続してZ,X,C など打ち込むと変化します。



	最終的に、Play();コマンドで各トラックへ割り振ってます。、
	-- Play();コマンドは、最初が CH(0)なので、要注意です。 --

*/


 
/*	  与太話。、 

	クリムゾンのようなスケールがある曲を書きたい、、とか最近は考えていますが、
	難しかろうて...手が出ません。

	マクロを頑張って学んでいます。、プリプロセッサとか呼ばれるものです。
	基本的にマクロはただの置き換えなので、数値計算を途中でかませるには、
	ひと手間掛かります。
	処理負担が軽減されるので、できるひとはマクロをそこそこ多用します。、


	基本は、こうなります。
	#BB={cccc}
	TR(1) @17 l4 #BB;	//ccccと出力される


	2つトラックを使用してベーストラックを組みたい場合、
	以下のようにすると簡単にできます。
	#BB={cccc}	//フレーズを書く
	TR(1) @17 l4 #BB;
	TR(2) @17 l4 #BB;


	パンを音ごとに変化させたい、の場合は、

	-- TW-music2のMMLフォルダ以下にある、mizincoさんのtenjyou.mmlより参照 --

	#BB={#FF cccc cccc  #DD cccc #DD cccc}
	TR(1) 	#DD={ Sub{ P(0) r4 P(32) r4 P(64) r4 } }
		#FF={ Sub{ P.T(0,127,!2) r2 P(0) r P(127) r } }
		@17 l4
		#BB;


	ここまで来るとかなり高度です。、
	tenjyou.mml(高い天井) はソースも美しく、学ぶ要素がとても多いのです。

	最近まで知らなかったのですが、mizincoさんの音楽を、かのゲームで聴く機会があったのは、
	今思えば、自分にはラッキーだったかも知れません。、
	あの音楽はMMLで生み出されたのか..と思うと、なんとなく、運命の歯車を感じ得ずにいられません。
*/


 
/*	  以下は、エクスクルーシブメッセージの設定法です。難しめです...ただ 
	一通り見た感じでは、実用的なのは 4つなので、簡単に記載します。(エフェクトは除く)


	まずストトンなどで、普通に使用するのは、GM音源です、。
	GM音源の実体、system32\drivers\GM.DLSや、
	TWで使用するDirectX(実際は、Effectを付与したGM.DLSのラッパー?? )は、
	GS拡張音源が元々含まれており、使用するためには、いくつかの手続きが必要になります。
	実はストトンでも、手続きをすることで、GS拡張音源は使用できます。


	拡張音源 @81,8サインウェーブを使用する際、
	サクラ純正、TW-Music2 経由でMSGS音源、DirectX(Music)音源をコントロールするために、
	GSリセットが必要になり、今回、コントロールメッセージを一から学びなおしました。

	# GSリセットコマンドにより拡張音源を利用する、
	# 単一ドラムチャンネルを、複数に分けて使いたい、10CHを通常音として使用したい、
	# スケールチューニングを変更し、純正律など異なる調律を使う、
	# ピッチベンド・センシティビティを指定する、

	この4つのケースにおいて、有用ではないかと思います。、



	### まず、GSリセットなどにより拡張音源セットを利用する場合 ---


	↓------                              ------↓
	SysEx$ = F0,41,10,42,12,40,00,7F,00,41,F7; r4	//GS Reset

	Time(1:4:0); TrackSync;
	TR(1)	@81,8	l16 [4 rcrc rcrc rcrc rcrc] 	//サインウェーブ
	//      音色81,8    ストトン...
	↑------                              ------↑

	このように書き込みます。、F0,41,10,42,12..はバイナリデータと呼ばれるものです。

	  以下でもかまいません。、もっともこれが普通の手続きです。


	↓------                              ------↓
	Include(gs.h);
		ResetGS(); r4	//GS Reset

	Time(1:4:0); TrackSync;	//以下上記と同じ
	TR(1)	@81,8	l16 [4 rcrc rcrc rcrc rcrc] 	//サインウェーブ
	//      音色81,8    ストトン...
	↑------                              ------↑

	これで、上記のSysEx$ = ... のエクスクルーシブが送信され、拡張音源セットが利用できます。、

	//gs.hに、Include(stdmsg.h)の行があり、Include(stdmsg.h)宣言は不要になる
	//r4 はリセット終了までのタイムラグのため、四分休符分、必要な時間を与える




	### 単一ドラムチャンネルを、複数に分けて使いたい、10CHを通常音として使用したい場合 ---
	  -- 必ず、GSリセットの後に、書き込みます。



	↓------                              ------↓
	SysEx$ = F0,41,10,42,12,40,00,7F,00,41,F7; r4		//GS Reset

	SysEx$ = F0,41,10,42,12,{40,10,15,00},F7; r8	//CH10を通常音色で使用
	SysEx$ = F0,41,10,42,12,{40,1a,15,01},F7; r8	//ドラムマップ1
	SysEx$ = F0,41,10,42,12,{40,1b,15,02},F7; r8	//ドラムマップ2
	SysEx$ = F0,41,10,42,12,{40,1c,15,02},F7; r8	//ドラムマップ2

	//{}の意味は、この間に書かれたデータの、チェックサムを自動計算して F7の前へ付加し、出力
	//RolandGSは、チェックサムが必要なためです。

	//この後、各トラックのドラムセットを指定する
	Time(1:4:0); TrackSync;
	TR(10)	@81,8	l16 [4 rcrc rcrc rcrc rcrc] 	//サインウェーブ
	TR(11)	@26	l3  [4 n(56)n(56)n(56)] 	//TR-808キットセット / カウベルトラック
	TR(12)	@25	l2  [4 n(36)n(36)]		//ELECTRONICキットをセット / バスドラトラック
	TR(13)	@25	l6  [4 r n(40)r n(40)r n(40)]	//ELECTRONICキットをセット / スネアトラック
	↑------                              ------↑



	ドラムマップは、2つまでの制限があり、ドラムキットは 2つだけ指定できます。


	  以下でもかまいません。、これがスタンダードです。


	↓------                              ------↓
	Include(gs.h);
		ResetGS(); r4

	CH(10) GS_RHYTHM(0); r8	//チャンネル10を通常音色として使用、接頭辞 CH(10)必要
	CH(11) GS_RHYTHM(1); r8	//チャンネル11をドラムMap1
	CH(12) GS_RHYTHM(2); r8	//チャンネル12をドラムMap2
	CH(13) GS_RHYTHM(2); r8	//チャンネル13をドラムMap2 として使用

	Time(1:4:0); TrackSync;	//以下上記と同じ
	TR(10)	@81,8	l16 [4 rcrc rcrc rcrc rcrc] 	//サインウェーブ
	TR(11)	@26	l3  [4 n(56)n(56)n(56)] 	//TR-808キットセット / カウベルトラック
	TR(12)	@25	l2  [4 n(36)n(36)]		//ELECTRONICキットをセット / バスドラトラック
	TR(13)	@25	l6  [4 r n(40)r n(40)r n(40)]	//ELECTRONICキットをセット / スネアトラック
	↑------                              ------↑



	GS特有の音色やドラムセットは、掲示板上のサクラトップ画面から、右サイドバーの、
	音源をサクラで攻略する - Microsoft GS Synthパソコン内蔵音源の解説 に表がのっています。、


	TW特有の音色やドラムセットは、TW-music2フォルダにある、仕様.txtあたりにあります。、
	ただし各々対応するdlsファイルが必要です。、
	-- これらのdlsファイルは、ネットを探しても見つかりませんでした。、入手は難しいです。




	### スケールチューニングを変更し、純正律を使う場合 ---
	  -- 必ず、GSリセットの後に、書き込みます。

*/
	#TRY_DATA={

	//↓------                              ------↓
	SysEx$ = F0,41,10,42,12,40,00,7F,00,41,F7; r4		//GS Reset

	TrackSync;
	TR=1 @81,8 v75 'dfb' ^^^ ^^^^ //平均律
	TR=2 @81,8 v75 'dfb' ^^^ ^^^^ //平均律

	//         F0,41,10,42,12,{40,__,40,Note--                             },F7;
	//SysEx$ = F0,41,10,42,12,{40,11,40,40,40,40,40,40,40,40,40,40,40,40,40},F7; r48 //平均律

	  SysEx$ = F0,41,10,42,12,{40,11,40,40,4C,44,50,32,3E,36,42,4E,30,52,34},F7; r48 //純正律
	//SysEx$ = ... ...

	TrackSync;
	TR=1 @81,8 v75 'dfb' ^^^ ^^^^ //純正律
	TR=2 @81,8 v75 'dfb' ^^^ ^^^^ //平均律
	//↑------                              ------↑

	}


	#TRY={1}	// <-- [0]にすると、調律が変わったのを確認できます。



/*	上記の __は、各チャンネルナンバーを記入します。
	Note-- の部分は、順に半音12個分、それぞれのセントのずれを書き込みます。


	#SYSELM={40,4C,44,50,32,3E,36,42,4E,30,52,34}	//純正律の調律

	//       F0,41,10,42,12,{40,__,40,Note-- },F7;
	SysEx$ = F0,41,10,42,12,{40,11,40,#SYSELM},F7; r48	//CH=1
	SysEx$ = F0,41,10,42,12,{40,12,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,13,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,14,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,15,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,16,40,#SYSELM},F7; r48	//CH=6

	このように 6CH分、書き込みます。
	必要なチャンネル分、チャンネルナンバーを変更したものを、追加します。、
	各チャンネルナンバーの決まりごととして、
	CH(1)は 11、CH(9)は 19、CH(10)は 10、CH(11)は 1A、CH(12)は 1Bとなります、。


	  以下でもかまいません。、ただし、ドラムで使われる10CHは、書き込まないようです、。


	↓------                              ------↓
	Include(gs.h);
		ResetGS(); r4

	GSScaleTuning(64+0,64+12,64+4,64+16,64-14,64-2,64-10,64+2,64+14,64-16,64+18,64-12); r16
	↑------                              ------↑


	上記の 64+12は、ド# の音を平均律から 12セント上げるの意味で、セントのずれを書き込みます、。




	###最後に、ピッチベンド・センシティビティ(ベンド幅)を指定したい場合 ---


	//stdmsg.hのコメントでは半音階で12まで、実際はこれ以上も可能みたいです。、
	↓------                              ------↓
	RPN=0,0,(mm);	// mm[0-12]
	↑------                              ------↑


	  以下でもかまいません。、このほうが簡単です、。
	このベンド幅指定は、サクラの使用法にも普通に載っているのでお馴染みかと思います。、


	// Include(stdmsg.h)ないし、
	// Include(gs.h); の後に書き込む。
	↓------                              ------↓
	BR(mm);		//前述の RPN=0,0,(mm); が、呼び出されて出力される
	↑------                              ------↑




	Includeフォルダのstdmsg.h, gs.hファイルを見て、主に解析してます。


	純正律については、以下のサイトを参照してます。
	http://www2s.biglobe.ne.jp/~horiuchi/TWE_junsei.html

	スケールチューニングの設定法は、旧質問の板からです。
	ミディ出力のバイナリ確認法に少しだけ間違いがあります、...でもとても参考になりました。
	この場を借りてお礼を言います。、
	http://oto.chu.jp/cgi/sakura-q/srch.cgi?page=40&mode=log&logs=72.txt&no=0

	もし、バイナリを確認する際は、TR(1) @26　cccなども書き込んで出力してください。
	ファイルヘッダが正常に出力されます。、


	エクスクルーシブへの説明不足のため、解らない点や、間違いなどありましたら、
	サクラトップページ以下の新しい質問掲示板などに書き込んでいただければ、
	解る範囲で対応はできると思います。、
	普段は、掲示板の巡回はしてないので返答は遅くなります、一週間単位で気長にお待ちください。、、


	最後まで見ていただきありがとうございます..、
	これだけ長いのは、これが最後にしたいです。、


*/


 
	//--------- ヒューマングループ生成 
 
Function Velwte(){ 
	RESULT=MML(v)+Random(2)-(Random(3)-2)*4;
} //Function

	//v( Velwte() )と呼び出す、この以下3つでグルーブを生成
 
Function Gatwte(){ 
	RESULT=MML(q)+ Random(2)-Random(2)*4-3;
} //Function
 
Function Timwte(){ 
	RESULT=MML(t)+Random(5)+Mi*Random(4)-4;
} //Function
 
Function Tim_Drm_wte(){		//今回使用せず 
	RESULT=Random(3)+Random(2)-3;
} //Function
 
	//--------- コード構成音差替え 
 
	Function Elm_Exd(Array Elm_copy){	//ボイシング拡張 

		Elm_copy=(Elm_copy, Elm_copy(0)+12);

		Elm_copy(0)=Elm_copy(0)-12;	// drop1&3&5

		IF(3<= SizeOf(Elm_copy) ){
			Elm_copy=(Elm_copy, Elm_copy(2)+12);
			Elm_copy(2)=Elm_copy(2)-12;
		}
		IF(5<= SizeOf(Elm_copy) ){
			Elm_copy(4)=Elm_copy(4)-12;
		}

		RESULT= Elm_copy;	//(0,4,7,10) -> (-12,4,-5,10,12,19)
	} //Function
 
	Function Elm_Rev(Array Elm_copy){	//リバースフレーズ 

		Int Rev_tmp= 0;

		FOR(Int Rev_i=0; Rev_i< SizeOf(Elm_copy)/2; Rev_i++){

			Rev_tmp= Elm_copy(0+ Rev_i);
			Elm_copy(0+ Rev_i) = Elm_copy( SizeOf(Elm_copy)-1 -Rev_i);	//最後を最初へ代入

			Elm_copy( SizeOf(Elm_copy)-1 -Rev_i) =Rev_tmp;
		}
		RESULT= Elm_copy;	//(0,4,7,10) -> (10,7,4,0)
	} //Function
 
	Function Elm_XOR(Array Elm_copy){	//トップXORフレーズ 

		Int Rev_tmp = Elm_copy(SizeOf(Elm_copy)-1);	//トップフレーズ入替え
		Int Rdm_select = Random(SizeOf(Elm_copy)-1 );

		Elm_copy(SizeOf(Elm_copy)-1)= Elm_copy(Rdm_select);
		Elm_copy(Rdm_select) =Rev_tmp;

		RESULT= Elm_copy;	//(0,4,7,10) -> (0,10,4,7)
	} //Function
 
Function Rdm_out(Array Elm_copy){	// ランダム配列差替 

	Array Rdm_ary =();
	Array Tmp_ary =();
	Int Rdm = 0;		//除く数値

	Int Loop =SizeOf(Elm_copy);	//ループ初期値出力:固定

	FOR(Int J=0; J< Loop; J++){

		Rdm= Random(SizeOf(Elm_copy) );	//ランダム選択
		Rdm_ary=(Rdm_ary,Elm_copy(Rdm));

		Tmp_ary= Elm_copy;
		Elm_copy=();			//初期化

		FOR(Int I=0; I< SizeOf(Tmp_ary); I++){

			IF(I!=Rdm){

				Elm_copy=(Elm_copy,Tmp_ary(I) );
			}
		}
	}

	RESULT =Rdm_ary;	//(0,4,7,10) -> (4,0,10,7)
} //Function


 
Function Rdm_num(Array Elm_copy){	// ランダム配列生成 

	Int Rdm = 0;		//除く数値
	Array Rdm_ary =();

	FOR(Int I=0; I< Elm_copy(0); I++){

		Rdm= Random(Elm_copy(1) );	//ランダム選択

		IF(Rdm_ary(I)==Rdm){	I--;}
		ELSE{	Rdm_ary= (Rdm_ary, Rdm);}
	}

	RESULT =Rdm_ary;	//(4,16) -> (3,6,10,15)
} //Function

 
	//--------- コード多段差替え 
 
	Function Elm_io_Gt_last(Array Elm_copy){	//今回は使用せず 

		Elm_copy= Elm_Exd(Elm_copy);

		Elm_copy= ArraySortNum(Elm_copy); // 再ソート

		FOR(Int ELi=0; ELi< SizeOf(Elm_copy); ELi++){	//ヲクターブチェンジ
			Elm_copy(ELi)=Elm_copy(ELi)+12;
		}

		//Elm_copy=Elm_ALL(Elm_copy);

		RESULT= Elm_copy;
	} //Function
 
	Function Elm_io_Gt(Array Elm_copy){	//今回は使用せず 

		Elm_copy= Elm_Exd(Elm_copy);

		Elm_copy=Elm_XOR(Elm_copy);

		IF(Random(2)==0){
			Elm_copy= Elm_Rev(Elm_copy);
		}

		//Elm_copy=Elm_ALL(Elm_copy);

		RESULT= Elm_copy;
	} //Function
 
	//--------- MML書替え部 
 
	Function Elm_ALL(Array Elm_copy){	//配列キーマスター加算 / グローバル変数参照 

		FOR(Int Ei=0; Ei< SizeOf(Elm_copy); Ei++){

			Elm_copy(Ei)=Elm_copy(Ei)+Shift_key+Master_key+Part_key;	// +RandomSelect(0,12)
		}
		RESULT= Elm_copy;
	} //Function
 
	Function Chd_wte(Array Elm_copy){	//　Rhythmマクロ,q,v 外部指定　 

		Str Chd_str={'};
		FOR(Int Mi=0; Mi< SizeOf(Elm_copy); Mi++){

			Chd_str= Chd_str+{
				v(}+Velwte()+{)
				q(}+Gatwte()+{)
				t(}+Timwte()+{)
				n(}+Elm_copy(Mi)+{)
				};
		}

		RESULT= Chd_str+{'};

	} //Function
 
	//--------- ディレイ 
 
	Function Delay(Array Ptn){	// ディレイ 

		Int Vel=MML(v);

	Str Chd_str={
		//Sub} +CHR(123)+ { r2r4r8v(} +Vel* 4/12+ {)} +Ptn(0)+ {; } +CHR(125)+ {
		  Sub} +CHR(123)+ {r4r8r32v(} +Vel* 6/12+ {)} +Ptn(0)+ {; } +CHR(125)+ {
		  Sub} +CHR(123)+ {    r32v(} +Vel* 6/12+ {)} +Ptn(0)+ {; } +CHR(125)+ {
		                          v(} +Vel      + {)} +Ptn(0)+ {;
	};

		RESULT= Chd_str;

	} //Function

		//Sub{r1+1r1r2r4 v(Vel*2/12)  Ptn;}	//　逆タップディレイ
		//Sub{r1+1r1r2   v(Vel*4/12)  Ptn;}
		//Sub{r1+1r1     v(Vel*6/12)  Ptn;}
		//Sub{r1+1       v(Vel*8/12)  Ptn;}
 
	//--------- 今回のヲリジナル 
 
	Function Beat_data(Array Elm_copy){	//MML書替え / ディレイ送出 / グローバル変数参照 

		Str Chd={};
		//Elm_copy= Elm_XOR(Elm_copy);	//トップ差替え

		//IF(Random(2)==0){	Elm_copy= Elm_Rev(Elm_copy);}	//リバース

		Elm_copy= Elm_ALL(Elm_copy);


		FOR(Int Bi=0; Bi< SizeOf(Elm_copy); Bi++){
			WHILE(1){
				IF(POS({Z}, Beat(Bi))==0){ EXIT}
				ELSE{
					q93 v110 Chd=Chd_wte(Elm_copy(Bi));		// Elm_copy -> Chd出力

					Beat(Bi)=Replace(Beat(Bi), {Z}, Chd, off);	//Z -> Chd差替え
				}
			}
			WHILE(1){
				IF(POS({X}, Beat(Bi))==0){ EXIT}
				ELSE{
					q93 v108 Chd=Chd_wte(Elm_copy(Bi)+12);		// Elm_copy -> Chd出力

					Beat(Bi)=Replace(Beat(Bi), {X}, Chd, off);	//X -> Chd差替え
				}
			}
			WHILE(1){
				IF(POS({C}, Beat(Bi))==0){ EXIT}
				ELSE{
					q93 v106 Chd=Chd_wte(Elm_copy(Bi)+24);		// Elm_copy -> Chd出力

					Beat(Bi)=Replace(Beat(Bi), {C}, Chd, off);	//C -> Chd差替え
				}
			}
			WHILE(1){
				IF(POS({z}, Beat(Bi))==0){ EXIT}
				ELSE{
					q93 v100  Chd=Chd_wte(Elm_copy(Bi));		// Elm_copy -> Chd出力

					Beat(Bi)=Replace(Beat(Bi), {z}, Chd, off);	//z -> Chd差替え
				}
			}
			WHILE(1){
				IF(POS({x}, Beat(Bi))==0){ EXIT}
				ELSE{
					q93 v98 Chd=Chd_wte(Elm_copy(Bi)+12);		// Elm_copy -> Chd出力

					Beat(Bi)=Replace(Beat(Bi), {x}, Chd, off);	//x -> Chd差替え
				}
			}
			WHILE(1){
				IF(POS({c}, Beat(Bi))==0){ EXIT}
				ELSE{
					q93 v96 Chd=Chd_wte(Elm_copy(Bi)+24);		// Elm_copy -> Chd出力

					Beat(Bi)=Replace(Beat(Bi), {c}, Chd, off);	//c -> Chd差替え
				}
			}
		}
		Sub{	Lyric= {Elm_chd:}+Ptn_ary(0)+{ Beat:}+Ptn_ary(1); r48}	//読み込みエラー対策


	IF(#CONV==1){	Play(	,Beat(0),Beat(1),Beat(2),Delay(Beat(3)),Delay(Beat(4)),Delay(Beat(5)),Delay(Beat(6)),Delay(Beat(7)),Delay(Beat(8)),Delay(Beat(9)),Delay(Beat(10)),Delay(Beat(11)),Delay(Beat(12)),Delay(Beat(13)),Delay(Beat(14)));	//MML複数トラック出力

	}
	ELSE{		Play(	,Beat(0),Beat(1),Beat(2),Beat(3),Beat(4),Beat(5),Beat(6),Beat(7),Beat(8),Beat(9),Beat(10),Beat(11),Beat(12),Beat(13),Beat(14));	//ディレイなし
	}

/*		Sub{Delay(Beat(15));}	//MML単一トラック出力
		Sub{Delay(Beat(14));}
		Sub{Delay(Beat(13));}
		Sub{Delay(Beat(12));}
		Sub{Delay(Beat(11));}
		Sub{Delay(Beat(10));}
		Sub{Delay(Beat(9));}
		Sub{Delay(Beat(8));}
		Sub{Delay(Beat(7));}
		Sub{Delay(Beat(6));}
		Sub{Delay(Beat(5));}
		Sub{Delay(Beat(4));}
		Sub{Delay(Beat(3));}
		Sub{Delay(Beat(2));}
		Sub{Delay(Beat(1));}
		    Delay(Beat(0));*/

	} //Function
 
	Function Rym_data(Array Ptn){	//コンバート / ローテーション / グローバル変数参照 

		Array Beat=();		// Full tr.コンバート
		Array Rhym=();		// Rym  tr.コンバート
		Array Mldy=();		// Mldy tr.コンバート

		SWITCH(Ptn(0)){
		//CASE(0){	Elm_chd=(0, 7,12,    0, 1, 2, 3,    4, 5, 6, 7,   8, 9,10,11);	}
		CASE(0){	Elm_chd=(0, 5,14,    0, 2, 4, 6,    7, 8,10,12,  14,16,18,19);	}
		CASE(1){	Elm_chd=(0, 6,13,    0, 2, 4, 5,    7, 9,10,12,  14,16,17,19);	}
		CASE(2){	Elm_chd=(0, 7,12,    0, 1, 3, 4,    6, 8, 9,11,  13,15,16,18);	}
		} //SW
		//Elm_chd=(#ELM;);	//こちら側		//#ELM={-12,-5, 0, 7,12,19,24}	//書き込み側

		SWITCH(Ptn(1)){
		CASE(0){
			//Beat_chd={l12         rrr rrr  rrr A^A    rrr rrr  rrr rrr};	// 2小節単位

			#BEAT_DATA1;
		}
		CASE(1){
			//Beat_chd={l12         rrr rrr  rrr A^A    rrr rrr  rrr rrr};	// 2小節単位

			#BEAT_DATA2;
		}
		} //SW
		//Beat_chd ={#BTD};		//#BTD={l12         rrr rrr  rrr A^A    rrr rrr  rrr rrr}


		Str StrNum= 0;
		Int Num= 0;	//ランダム選択 / 上下で使用するため
		IF(#CONV==1){

	FOR(Int Mi=0; Mi< 2; Mi++){


		IF(Mi==0){Num= Random(4);	StrNum= Mldy( Ptn(0)+Num*3 );}	//メロ[1,4,7,10]
		IF(Mi==1){			StrNum= Rhym( Ptn(0) );}	//リズム

		IF(POS({Z},StrNum) ==6){	StrNum= StrNum+{Z};
						StrNum= Replace(StrNum, {Z}, {}, off);	//Z -> {}差替え ZrrX -> rrXZ
		}
		ELSE{
		IF(POS({X},StrNum) ==6){	StrNum= StrNum+{X};
						StrNum= Replace(StrNum, {X}, {}, off);
		}
		ELSE{
		IF(POS({C},StrNum) ==6){	StrNum= StrNum+{C};
						StrNum= Replace(StrNum, {C}, {}, off);
		}
		ELSE{
		IF(POS({z},StrNum) ==6){	StrNum= StrNum+{z};
						StrNum= Replace(StrNum, {z}, {}, off);
		}
		ELSE{
		IF(POS({x},StrNum) ==6){	StrNum= StrNum+{x};
						StrNum= Replace(StrNum, {x}, {}, off);
		}
		ELSE{
		IF(POS({c},StrNum) ==6){	StrNum= StrNum+{c};
						StrNum= Replace(StrNum, {c}, {}, off);
		}
		ELSE{
		IF(POS({r},StrNum) ==6){	StrNum= StrNum+{r};
						StrNum= Replace(StrNum, {r}, {}, off);
		}
		} } }  } } }
		IF(Mi==0){	Mldy( Ptn(0) +Num*3 ) = StrNum;}
		IF(Mi==1){	       Rhym( Ptn(0) ) = StrNum;}
	}

		}
		IF(#CONV==1){
			//Beat= Rdm_out(Beat);	// Beat(0)-Beat(15)

			Rhym= Rdm_out(Rhym);	//リズムデータ差替え	/Rhym(0)-Rhym(3)
			Mldy= Rdm_out(Mldy);	//メロデータ差替え	/Mldy(0)-Mldy(11)
		}

		Beat=(Rhym,Mldy);	//合算

		Beat_data(Elm_chd);

	} //Function
 
	Function NChg(Int Num){ 

	Array NChg_ary=();
	Array Sound =();
	Str Inn={};

SWITCH(Num){
CASE(81){	Sound=(81, 0, 1, 8);	Inn=(,{"Square Wave "},{"Square      "},{"Sine Wave   "});			}
CASE(82){	Sound=(82, 0, 1, 8);	Inn=(,{"Saw Wave    "},{"Saw         "},{"Doctor Solo "});			}
CASE(83){	Sound=(83, 0);		Inn=(,{"Syn.Calliope"});							}
CASE(84){	Sound=(84, 0);		Inn=(,{"Chiffer Lead"});							}
CASE(85){	Sound=(85, 0);		Inn=(,{"Charang     "});							}
CASE(86){	Sound=(86, 0);		Inn=(,{"Solo Vox    "});							}
CASE(87){	Sound=(87, 0);		Inn=(,{"5th Saw Wave"});							}
CASE(88){	Sound=(88, 0);		Inn=(,{"Bass & Lead "});							}

CASE(89){	Sound=(89, 0);		Inn=(,{"Fantasia    "});							}
CASE(90){	Sound=(90, 0);		Inn=(,{"Warm Pad    "});							}
CASE(91){	Sound=(91, 0);		Inn=(,{"Polysynth   "});							}
CASE(92){	Sound=(92, 0);		Inn=(,{"Space Voice "});							}
CASE(93){	Sound=(93, 0);		Inn=(,{"Bowed Glass "});							}
CASE(94){	Sound=(94, 0);		Inn=(,{"Metal Pad   "});							}
CASE(95){	Sound=(95, 0);		Inn=(,{"Halo Pad    "});							}
CASE(96){	Sound=(96, 0);		Inn=(,{"Sweep Pad   "});							}

CASE(97){	Sound=(97, 0);		Inn=(,{"Ice Rain    "});							}
CASE(98){	Sound=(98, 0);		Inn=(,{"Soundtrack  "});							}
CASE(99){	Sound=(99, 0, 1);	Inn=(,{"Crystal     "},{"Syn Mallet  "});					}
CASE(100){	Sound=(100, 0);		Inn=(,{"Atmosphere  "});							}
CASE(101){	Sound=(101, 0);		Inn=(,{"Brightness  "});							}
CASE(102){	Sound=(102, 0);		Inn=(,{"Goblin      "});							}
CASE(103){	Sound=(103, 0, 1, 2);	Inn=(,{"Echo Drops  "},{"Echo Bell   "},{"Echo Pan    "});			}
CASE(104){	Sound=(104, 0);		Inn=(,{"Star Theme  "});							}

CASE(105){	Sound=(105, 0, 1);	Inn=(,{"Sitar       "},{"Sitar2      "});					}
CASE(106){	Sound=(106, 0);		Inn=(,{"Banjo       "});							}
CASE(107){	Sound=(107, 0);		Inn=(,{"Shamisen    "});							}
CASE(108){	Sound=(108, 0, 8);	Inn=(,{"Koto        "},{"Taisho Koto "});					}
CASE(109){	Sound=(109, 0);		Inn=(,{"Kalimba     "});							}
CASE(110){	Sound=(110, 0);		Inn=(,{"Bag Pipe    "});							}
CASE(111){	Sound=(111, 0);		Inn=(,{"Fiddle      "});							}
CASE(112){	Sound=(112, 0);		Inn=(,{"Shanai      "});							}

CASE(113){	Sound=(113, 0);		Inn=(,{"Tinkle Bell "});							}
CASE(114){	Sound=(114, 0);		Inn=(,{"Agogo       "});							}
CASE(115){	Sound=(115, 0);		Inn=(,{"Steel Drums "});							}
CASE(116){	Sound=(116, 0, 8);	Inn=(,{"Woodblock   "},{"Castanets   "});					}
CASE(117){	Sound=(117, 0, 8);	Inn=(,{"Taiko       "},{"Concert BD  "});					}
CASE(118){	Sound=(118, 0, 8);	Inn=(,{"Melo. Tom1  "},{"Melo. Tom2  "});					}
CASE(119){	Sound=(119, 0, 8, 9);	Inn=(,{"Synth Drum  "},{"808 Tom     "},{"Elec Perc.  "});			}
CASE(120){	Sound=(120, 0);		Inn=(,{"Reverse Cym."});							}

CASE(121){	Sound=(121, 0, 8, 9);	Inn=(,{"Gt.FretNoise"},{"Gt.Cut Noise"},{"String Slap "});			}
CASE(122){	Sound=(122, 0, 8);	Inn=(,{"Breath Noise"},{"Fl.key Click"});					}

CASE(123){	Sound=(123,0,1,2,3,4,5);Inn=(,{"Seashore    "},{"Rain        "},{"Thunder     "},{"Wind        "},{"Stream      "},{"Bubble      "});}

CASE(124){	Sound=(124, 0,1,2,3);	Inn=(,{"Bird        "},{"Dog         "},{"Horse-Gallop"},{"Bird2       "});	}

CASE(125){	Sound=(125,0,1,2,3,4,5);Inn=(,{"Telephone1  "},{"Telephone2  "},{"DoorCreaking"},{"Door        "},{"Scratch     "},{"Windchime   "});}

CASE(126){	Sound=(126,0,1,2,3,4,5,6,7,8,9);	 Inn=(,{"Helicopter  "},{"Car-Engine  "},{"Car-Stop    "},{"Car-Pass    "},{"Car-Crash   "},{"Siren       "} ,{"Train       "},{"Jetplane    "},{"Starship    "},{"Burst Noise "});}

CASE(127){	Sound=(127,0,1,2,3,4,5);Inn=(,{"Applause    "},{"Laughing    "},{"Screaming   "},{"Punch       "},{"Heart Beat  "},{"Footsteps   "});}

CASE(128){	Sound=(128, 0,1,2,3);	Inn=(,{"Gun Shot    "},{"Machine Gun "},{"Lasergun    "},{"Explosion   "});	}

} //SW
	NChg_ary=(Sound(0),Random(SizeOf(Sound)-1)+1);
	RESULT=NChg_ary;

	} //Function
 
	//初期化---------// 


	SysEx$ = F0,41,10,42,12,40,00,7F,00,41,F7; r4		//GS Reset
	SysEx$ = F0,41,10,42,12,{40,10,15,00},F7; r8		//CH10を通常音色で使用 {チェクサム付き}

	//Include(gs.h);		//Include(stdmsg.h)の行がある
	//	ResetGS(); r4		//GSリセット

	//CH=10 GS_RHYTHM(0) r8		//チャンネル10を通常音色で使用、接頭辞 CH=10必要



/*	SysEx$ = F0,41,10,42,12, 40,11,40,40,40,40,40,40,40,40,40,40,40,40,40 ,6F,F7; //平均律
	SysEx$ = F0,41,10,42,12,{40,11,40,40,40,40,40,40,40,40,40,40,40,40,40}   ,F7;
*/
	//	{40,38,44,3C,32,3E,36,42,3A,30,28,34}	//hp
	//      {40 38 44 50 32 3E 36 42 4E 30 4E 34}	//掲示板
	//      {40,22,44,50,32,3E,36,42,24,30,4E,34}	//blog.
	#SYSELM={40,4C,44,50,32,3E,36,42,4E,30,52,34}	//最終修正 / 純正律

	//GSScaleTuning(64+ 0,64+12,64+ 4,64+16,64-14,64-2,64-10,64+2,64+14,64-16,64+18,64-12); // 純正律
	//ただし、10CHは、書き込まない、。

	//Recording Pitch KeyinA 442Hz(+8セント)
	//GSScaleTuning(64+ 8,64+ 8,64+ 8,64+ 8,64+ 8,64+8,64+ 8,64+8,64+ 8,64+ 8,64+ 8,64+ 8);

	#SYSEXB={

	SysEx$ = F0,41,10,42,12,{40,11,40,#SYSELM},F7; r48 //CH=1
//	         F0,41,10,42,12,{40,__,40,Note-- },F7;

	SysEx$ = F0,41,10,42,12,{40,12,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,13,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,14,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,15,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,16,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,17,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,18,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,19,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,10,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,1A,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,1B,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,1C,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,1D,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,1E,40,#SYSELM},F7; r48
	SysEx$ = F0,41,10,42,12,{40,1F,40,#SYSELM},F7; r48 //CH=16
	}

	IF(#TRY==1){

		IF(#EXB==1){
		#SYSEXB r4

			IF(#CONV==1){	TrackName ={"無機的な深青 ver.1.9 - 純正律"};}
			ELSE{		TrackName ={"無機的な深青 - 差替えなし"};}
		}
		ELSE{
			IF(#CONV==1){	TrackName ={"有機的な深青 ver.1.9 - 平均律"};}
			ELSE{		TrackName ={"有機的な深青 - 差替えなし"};}
		}
	}

// TW-Music2(DirectX[Music]) Effect
// ReverbSetting	Time Dpth High Mix
   CuePoint={"TwmParam	( 96,  60,  16,108)"}	//初期値(127,117,0,127)
//			Time     [0-127],
//			Gain     [0-127],
//			HighFreq [0-127],
//			Mix      [0-127]

// ChorusSetting        Wave  Mix Dpth  FB Freq Dly Phs
 CuePoint={"TwmChorus	(  1,  108,  72, 72,   1, 48,  4)"}	//初期値(0,64,25,79,14,114,3)
//			Waveform [0-1],
//			WetDryMix[0-127],
//			Depth    [0-127],
//			Feedback [0-127],
//			Frequency[0-127],
//			Delay    [0-127],
//			Phase    [0-4]


 
	//演奏指定---------// 

	TimeBase=120	Tempo=93

	//System.RandomSeed=65525	//乱数列を生成する数値 - 種を現在時刻から取得しないケース
	//System.Keyshift=0		//Keyが、Cで調律のため不可

	Int Master_key=48;
	Int Shift_key=0;
	Int Part_key=0;

	Str Beat_chd={};
	Array Ptn_ary =();
	Array Elm_chd=();
	Str Inn={};



/*	TR=1	@81,8	Time=0	V=100	EP=120
	v120 q90 t0

		Rym_data(1,1);	//読み出し

		WHILE(1){
			IF(POS({A}, Beat_chd)==0){ EXIT}
			ELSE{
				Chd=Chd_wte(Elm_io_Gt(Elm_chd));	// Chd出力

				Beat_chd=Replace(Beat_chd, {A}, Chd, off);	//A -> Chd差替え
			}
		}

		//Delay(Beat_chd);	//MML出力
		Beat_chd;		//MML出力
*/


	#PNiro={@123,5	EP=121 REV=6  CHO=127}	//音色をTrackSyncの前で読み込ませる
	#Neiro={@81,8	EP=72  REV=21 CHO=0}
	#Meiro={@5,8	EP=126 REV=60 CHO=127}

	TR=1  	#PNiro; V=120-4		P=10		r48
	TR=2	#PNiro; V=120-6		P=63		r48
	TR=3	#PNiro; V=120-8		P=117		r48

	TR=4	#Neiro; V=119-40	P=0		r48
	TR=5	#Neiro; V=119-32	P=127*1/12	r48
	TR=6	#Neiro; V=119-28	P=127*2/12	r48
	TR=7	#Neiro; V=119-24	P=127*3/12	r48
	TR=8 	#Neiro; V=119-20	P=127*4/12	r48
	TR=9	#Neiro; V=119-16	P=127*5/12	r48
	TR=10	#Neiro; V=119-12	P=127*6/12	r48
	TR=11	#Neiro; V=119-8		P=127*7/12	r48
	TR=12	#Neiro; V=119-4		P=127*8/12	r48
	TR=13	#Neiro; V=119		P=127*9/12	r48
	TR=14	#Neiro; V=119+4		P=127*10/12	r48
	TR=15	#Neiro; V=119+8		P=127		r48
	TR=16	#Meiro;	V=127		P=63		r48

	IF(#TRY==1){
	#CHOP={v115 q99 P.onCycle(!24,63,42,20,42,63,85,106,85) o5 l3cl6cc l12cccc l24cccc ccccc l48cccc cccc cccc cccc >g#g#g#g# g#g#g#g# g#g#g#g# g#g#g#g# g#g#g#g# g#g#g#g# g#g#g#g# g#g#g#g# g#g#g#g# g#g#g#v127g#;}

	TR=16
	Array Rdm_time=Rdm_num(5,114);

	Time=TimeBase*6+TimeBase*2+TimeBase*2*Rdm_time(0); @=NChg(Random(48)+81); #CHOP;
	Time=TimeBase*6+TimeBase*2+TimeBase*2*Rdm_time(1); @=NChg(Random(48)+81); #CHOP;
	Time=TimeBase*6+TimeBase*2+TimeBase*2*Rdm_time(2); @=NChg(Random(48)+81); #CHOP;
	Time=TimeBase*6+TimeBase*2+TimeBase*2*Rdm_time(3); @=NChg(Random(48)+81); #CHOP;
	Time=TimeBase*6+TimeBase*2+TimeBase*2*Rdm_time(4); @=NChg(Random(48)+81); #CHOP;
	}

	TR=1;
	Time=TimeBase*6;//Time(2:3:0)と同じ、感覚的にこっちのほうが楽なので...
	TrackSync;	// 現トラック(通常、TR=0)のタイムポインタをこれ以後の全トラックへコピーする


	IF(#TRY==1){

		#FUNC ={Rym_data(Ptn_ary)}

		Ptn_ary=(0,0); #FUNC;	//演奏開始 ---
		Ptn_ary=(1,0); #FUNC;
		Ptn_ary=(0,1); #FUNC;
		Ptn_ary=(1,1); #FUNC;

		Ptn_ary=(1,0); #FUNC;
		Ptn_ary=(2,0); #FUNC;
		Ptn_ary=(1,1); #FUNC;
	 	Ptn_ary=(2,1); #FUNC;

		Ptn_ary=(2,0); #FUNC;
		Ptn_ary=(0,0); #FUNC;
		Ptn_ary=(2,1); #FUNC;
		Ptn_ary=(0,1); #FUNC;

		Ptn_ary=(0,0); #FUNC;
		Ptn_ary=(1,1); #FUNC;
		Ptn_ary=(2,0); #FUNC;

		Ptn_ary=(0,1); #FUNC;
		Ptn_ary=(1,0); #FUNC;
		Ptn_ary=(2,1); #FUNC;

		Ptn_ary=(2,0); #FUNC;
		Ptn_ary=(1,1); #FUNC;
		Ptn_ary=(0,0); #FUNC;

		Ptn_ary=(2,1); #FUNC;
		Ptn_ary=(1,0); #FUNC;
		Ptn_ary=(0,1); #FUNC;

		Ptn_ary=(2,1); #FUNC;
		Ptn_ary=(2,0); #FUNC;
		Ptn_ary=(1,1); #FUNC;
		Ptn_ary=(1,0); #FUNC;
		Ptn_ary=(0,1); #FUNC;
		Ptn_ary=(0,0); #FUNC;	//演奏終了 ---
	}
	ELSE{
		TrackName ={"平均律のみ -> 平均律と純正律"};
		#TRY_DATA;
	}
  
