Copyright ={"庚申works"} 
MetaText  ={"                                                  5分半の曲で、244小節です。各パート長は変更可です。"}
TrackName ={"ヘテロジニアス スケール"}

//小節数指定 - 数字を変えると曲の長さが変わります、。

	Int ONE  = 40;	//40 4の倍数のみ、小節数を指定
	Int TWO  = 36;	//36
	Int THREE= 60;	//60
	Int FOUR = 44;	//44
	Int FIVE = 5;	//5  2小節3/4のループ回数
	Int SIX  = 6;	//6
	
/*	--- 概略 


	まず、最初に伝えるべくことは、この曲は音楽の範疇に入れるべきか当人でも迷ったものです、、
	これを理解したうえで、聞いていただけると良いかもしれません、、
	また比較的、演奏に処理負担があります。セレロン550 2Gで、CPU値50%ぐらいまでは許容してます。

	TW-Music2で、出来るだけ演奏してくれると良いです。
	40ボイス使用するので、サクラ純正MSGSで演奏すると、ボイス数不足のため最後のパートでリズムの音
	が消えます。

	曲は6つのパートに分かれています。
	各パートの長さは、上記の小節数指定で自由に変更できます。
	例えば、ONEであれば、パート1,の小節数を表します。
	数字を入力するとその小節数分演奏できます、。
	とりあえず、デフォルトで指定はしましたが、長すぎ! 短すぎ! と思うならば好きなように変更してく
	ださい。無茶な小節数でも演奏し続けます。、



	※構造化エディタ対応です。


	主な再生チェックは、XP+スモールスピーカーのみなので、環境によってはいまひとつかもしれません。
	一応、2k+モニタヘッドホン、モニタスピーカーでもテスト確認はしました、..何となく感じが違う。、

*/
 
/*	--- 更新履歴 


	'12 10 25 ver.0.9	解説も含め仮完成
	'12 10 30 ver.1.0	アップロード準備版
	'12 11  2 ver.1.03	アップロード初版
	'12 11  3 ver.1.04	固有文字エラー修正

*/
 
/*	--- 雑文です。 


	 ツイッター、SNSなどのソーシャルな手段は、あまり信じていません。某SNSにおける汎用デザイン採
	用に伴うCSSレイアウト無効化の一件が、尾を引いています。ただ、このまま時流の流れに反し、自己
	発信しないまま手をこまねいているのも良くないのでは?と思い立ち、ちょっとだけ自分の姿を捉えら
	れるように長文を書いてみました。


	 -- そして音楽はどこへ行く?...


	  80年後半、楽器、コンピュータも含め輸入品は総じて半額近くまで下がり始めました、。
	 皆、なんか変だと思いながら糠喜びしました。
	 相対的に輸出品目は、倍額に匹敵する値上がりにより売れなくなり始めました、。
	 今の生産業衰退の序章を感じさせる出来事です、、
	 海外製品を買って対米貿易黒字を還元しましょうとのキャッチコピーが出るくらい、冷静に考えて
	 みるとおかしな時代で、このころから円は強いんだ、散財は良いことだの常識感が蔓延してゆきま
	 す。...


	 一昔前、Notator Logic (ノーテーターロジック)というソフトがあったのです。Emagicというドイツ
	の会社がversion1.0を楽器フェアというイベントに出展していたのです。今はとある事情でこのフェア
	に行くことはないと思いますが、、ペラペラの一枚しかない白黒光沢紙のカタログでしたが、当時の自
	分は、これに何か引っかかるものを感じたのです、。
	それは、譜面で見ることができかつ、ループシーケンス機能を前面に打ち出した当時としては画期的な
	考えのシーケンサソフトでした。

	 このころは、Opcode 社のビジョン、Mark of the Unicorn(MOTU )社のパフォーマーしか選択肢があ
	りませんでした。(実はレコンポーザ98、まだVSTプラグイン機能のないキューベースもあります.. )
	ビジョンは強力なクオンタイズ機能が売りで、キーボードでのリアルタイム入力に強く、逆にステップ
	入力機能が優秀とされたのがパフォーマーです。

	 これらのソフトを動かすパソコンは一番安かったMacintosh SE/30でも 70万かかる代物であり、ソフ
	ト自体も 10万、為替レートの影響で値下がりしているとはいえ、一市民にとっては非常に高嶺の花で
	した。とはいえ、フェアライトCMIやシンクラヴィアに比べればはるかに安い...

	 当時のキーボードマガジンかレコーディングマガジンか、このインタビューについてはうろ覚えであ
	りますが、記憶が間違っていなければ恐らく、このループシーケンス機能を使って生み出されたのが、
	元MUTE BEATの屋敷豪太が始まり、とされるグラウンドビートです。
	この時期流行りのテディー・ライリー率いる、ニュージャックスウィングは、黒いノリに白人の洗練さ
	をのせた感じにしか見えなくて、、すみません、、このグラウンドビートが出てきたときは本当に新し
	いジャンルに出会ったと思いました。第二次ブリティッシュ・インヴェイジョンの影響を受けた身には、
	染み込むのも早かった気がします。補足、第一次はマージービートと言われたビートルズ、ローリング
	ストーンズなどです。、

	余談です、、当時は、ゲートリバーブ全盛で (リバーブの初期反射、アーリーリフレクションの部分)
	コンブレッション効果の高いマイクの代表格、エレクトロボイス RE20で収音したバスドラにこれをか
	けるのが定番でした。斬新だったこの音も80'sを感じさせる音になってしまいました、
	http://www.mu-s.com/Edu/maicrophones.html
	こちらのサイトに、RE20を含むプロ用マイクリストがあります。説明がシンプルで解りやすい。


	 結局、このロジックを生み出したEmagic社はアップルに買収され、今では他の優れたDAW乱立の時代
	とともにその座を明け渡しつつありますが、時が経つとは恐ろしいもので、ネットを通じて優秀な音
	楽用フリーウェアが手に入るようになった古今、気がつけばまったくDAWを使うこともなく時だけが過
	ぎ、今の自分があるわけですね。

	 今を取り巻く音楽環境の変遷を、悲観的に捉えてみると、良質な音色は基板で電子回路を組むことな
	く、音響合成でいとも簡単に安く生成、かたや新たな音楽は、多くの優秀な音源プラグインとともに
	DAWを通して量産化され、消費限界を通り越してなお、供給速度を上げていくわけで、、いきつく先が
	どこに向かっているのか..解らなくなります。

	 時代を席巻する一ジャンルを築きあげ、楽器として見ても楽しいといわれたノーテーターロジックの
	ようなソフトや、一時代を築いたJUPITERやDX7、WAVESTATIONのように世界を魅了する音色を生み出す
	ハードが出ることを願ってやみません。 -> もっとも当時は、どのシンセも単体ではなく、後段に数多
	の定評あるエフェクターを差し込んで使っていたと思います..
	最近はそれぞれ、ソフトシンセとして復刻しています。、ただどれであっても丸みの強い、プラグイン
	特有の音として同じように聞こえてしまうの自分だけでしょうか、圧縮されたtubeの音を聞く限りなの
	で、かなずしも正しい評価を下しているとは言えませんが、実際に配線された音と、プログラムで書か
	れた配線では、何かが違う気がしてます、。


	 追伸、

	 現在ではグリッチを使用するエレクトロニカジャンルや実験音楽で、音響合成のできるソフトが使用
	され新しい音が生み出される時代になりました。、
	スーパーコライダーやオーディオプログラミング言語のChucK、IRCAMのMaxパラダイム(Puredataや
	Nax,jMaxなど)や、LISP言語との関わりの深いオープンミュージック等がありますが、音を出すだけで
	もかなり知識が必要なうえ、いずれも正直とっつきずらいし...とても使いこなせるはずもなく、、

	もっとも、。同じ制御構造を持つサクラはその点、とっつきやすく及第点な気がします。
	見た目が地味ですが、、少し偉そうですみません。音源用途よりもシーケンスに長けている点も良いで
	す。、このサクラがなければ、自分が音楽生成へ回帰することはなく、プログラム的なことを一からや
	り直そうとは考えもしなかったと思います。、

	 この手のソフトは、時間軸に沿った音楽の概念を覆す部分があるので、何らかの変革を呼び込む可能
	性があると思ってます。
	自分の場合は、音の並びを発音するできるだけ簡単な制御構造を使用した、演奏エンジン設計から入る
	ので、<- 実はこの時が一番楽しい、。この可能性をなんとなく意識させられることになっています。、
	しかし、浮かんだ着想からある程度、聞ける形に仕上げるまでの工程は、時間の流れを意識し、音楽的
	に?しなければならず、またバグつぶしの連続となるので..ここはいつも苦行です。、、結果どうして
	も半完成品が堆く積まれていきます。メモリリークが多めなサクラであっても手放せないのはそのため
	なのです。、TWはデバック表示領域の小ささも含めもろもろが弱い、。時間という魔性に囚われない、
	音楽の在り方を模索する最近です。


	 ここまで読んでいただき有難うございます、ここからはひとりごとです..思いついたまま書いてしま
	ったので脈絡はないです。
	フェアライトというと何故か、思い出すのがフェアチァイルドというバンドです、、いつも音楽的に違
	う感性の持ち主だと思う人に歌い手としての、元FAIRCHILDのYOUがいます、。
	ジャパニーズポップスを聴いて育った人らしいので、若かりし頃、洋楽( <- 当時でもこのように呼ん
	だ)一辺倒だった自分とはまったく音楽のスタンスが違うので、、ある意味異次元の人でした。
	FAIRCHILD解散後、元MUTE BEATのDub Master Xのリミックスに、ボーカルパートとして参加したのを拝
	見したのですが、この人こんなに歌うまかったんだ、と驚いたものです。気がつけばタレントや女優と
	してすっかり有名になってしまいました。。今聞いてみると、力抜きすぎ?と思う部分もありますが...
	もう一人の違う感性と思う代表格は、EPOですね、メロディメーカーとして見ると素直にすごいなと思
	います。実はクラシックサイドからやってきた人らしいのですが、跳ねるメロディ?を聞く度に、どう
	なってんのか理解できん..となります。。


	 ここから、音楽とはあまり関係ない話になります、
	固有名詞としてのフェアチァイルドという名は、ムーアの法則で高名なインテル創業時のメンバーが、
	元々いたセミコン(半導体)会社、フェアチャイルドセミコンダクターとしても有名です。
	個人的興味の話で申し訳ないです ->、最近はAMDのCPU(中央演算装置)、Bulldozerのほうがアーキテ
	クチャとして面白いと思っていたので、インテル離れの時期がきたかな、と思っていたのですが今回、
	ヒルズボロチームが設計しているHaswellは、トランザクショナルメモリ技術に手を入れているようで、
	キャッシュ機能に手を付けたFC-PGAなPen?の時のような良い感触があり、逆に期待度が久々に膨らん
	でいるかも、。

	 さらに横道に逸れます、、フェアチャイルドセミコンダクターは、対地攻撃機A-10サンダーボルトを
	生んだフェアチャイルド・リパブリック社の子会社でもありました。、
	このA-10の通称サンダーボルトという名は、ヨーロッパ戦線において連合軍で活躍する、戦闘爆撃機
	P-47という機体から受け継いだものです。
	このP-47のレシプロエンジンは、プラット&ホイットニー(P&W )社によるもので通称ダブルワスプ、空
	冷星型9気筒×2 OHV2,000馬力/45,900cc 一段過給機 & インタークーラー付きターボという、当時のレ
	シプロ最新技術を詰め込んだ、恒速プロペラ用エンジンでした。
	http://homepage2.nifty.com/tachino/engine4.html
	星型エンジンとはなんぞやという場合、こんなサイトを見ると良いかも。


	 実は、ボーイングであれエアバスであれ、航空機体メーカー(日本も含む)は雨後筍のごとくあれど、
	搭載する航空用エンジンはこのP&W、ロールス、GE、3社の寡占状態でありまして、それ以外を探すほう
	が難しいのです。、
	零式で有名な栄エンジンの中島はIHI(石川島播磨)へ吸収される形で、一式陸攻の火星エンジンはいま
	だ顕在の三菱で、これらの技術は継承はされているようですが、なかなか実情は苦しいのが現状かと思
	われます、。


	 自衛隊出身のサクラ使いもいる中、こう言うのもおこがましい気がしますが、、
	軍開連に興味を持つのは、多分家系のためかもしれません、毘沙門の旗印麾下だったとか...本当かな。、
	明治期の族称区分のごたごたで、足軽でもこの階級を名乗ってもかまわない、としたことを考えると厳
	密な階級は解りませんが、、米沢時代の苦境期や、血脈の出身地を考えると吝かでもない点はあります、、
	明治以降、政治や経済界に今でも多い、薩長土肥の流れをくむ家系とは、色々な意味で違うなぁと思い
	ます。。


	 話の収拾がつかなくなってきた、、昔よく読んだ戦場ものフィクション、新谷かおるのエリア88も思
	い出します。、多分サンダーボルト?を見たのはココが最初だった気がする。、
	この数字の出自は実在の、88mm高射砲に由来することを、最近になって知りました。、
	軍であっても珍しくリベラルな気質が強い、と言われた砂漠のキツネと呼ばれた指揮官を擁するDAK
	[ドイツアフリカ軍団 ] により、北アフリカ戦線トブルク包囲戦で活躍することになるあの88です。

	 ご心配されるかたもおられるかもしれないので、一応言及しておきますね、。戦場もの以外にも、
	WRCを題材とした神岡ターンのガッテム、、異色ツーリングコミックの左のオクロック!!あたりも気に
	入っているので、そればかり考えているというわけでもないですのでご安心を。


	 ここまで文が荒れてきたら、もう自棄で一言だけ蛇足です。、どっちかというと外向きなこの分野の
	活動がメインかも..、バランスの面でちょうど良いと思ってます。ほっとくとどうも、一点に集中しひ
	きこもりがちなので。

	セローのデザインは最近、トレールにも拘らず、 (原野などを走るのに適しているの略称、トレイルと
	も最近は言われる )外見が洗練されている気がしてます、。
	FI(フューエルインジェクション)以前の、2006版グリーンが特に良いです。
	2004版 5バルブ機構を持つYZF-R1などのように、インダスリアルデザインのヤマハを見る度うらやまし
	いと思うこのごろです、、

	でも、本当の姿はスズ菌感染者s+。:.s゚s なのです。。( <- 界隈で呼ばれる変態ではありません! )


	 音楽以外の話題ばかりになってしまいすみません、、これで自分というものが捉えられたでしょうか?
	この長文の戯言にも関わらず、粘り強く読破した諸姉、諸兄は本当の意味で聞き上手な素養がある!?気
	がします。、、
	なお、この独り言に対するに対する返答等は一切受け付ける予定はありません。、。、


*/
 
/*	--- 解りづらい解説文です、、 


	全てスケール出力から始まります。
	これが演奏エンジンを通過する度、自動的に奏でる仕組みになっています。
	このため、結構な頻度で当たり外れがでております。、
	パート1,2,は基本的に同じ仕組みで動きます。
	3,4,でセット、5,6,でそれぞれ同じ演奏エンジンを使用してます。


	-- 演奏エンジンの仕組みです。

	+ まず、スケール切り替えのタイミングのみ、配列出力します。
	4小節単位、2小節単位、1小節単位だよと、メモリに記憶しておき、これを元に全て演奏されています。

	+ 伴奏部は、Hungarian,Neapolitan minorスケールをベースにしております。
	このスケールをランダムに各音を上下動して、異スケール化します。
	この際、構成音の何個かを引っこ抜きます。
	さらにこのスケールから、4つの音を和音として抽出、コードとします。
	ベースはこの和音の単音をランダムに選択、ユニゾンで鳴るようにしました、。

	+ ドラム部です。
	TR=13では、4小節用、2小節用、1小節用とあらかじめリズムパターンを用意します。
	上記のタイミング配列に合わせて、これらをチェンジするようにしました。

	ただこのままだとあまり面白くないので、用意したリズム譜を元に、再サンプリングします。
	2つの16分音符をセットとして、つまり 4小節で 64コのノートがあれば 32分割したものをつくります。
	これをシャッフルした後、各自、何倍速にするかを判断します。ただし、等倍速であればこれをカット
	し、鳴らしません。
	これを再合成して、フィルインとして演奏しています。
	TR=14が、この説明の部分です。、、解ってもらえたでしょうか..

	要はドラムンベースなどのサンプリング手法をサクラで再現してみようという試みでした。
	これは後に気がついたのですが、このサイトを生んだクジラ様が既にフレーズジェネレーターなるもの
	を形にしていたようで、手法としてはあまり斬新ではないのに気付かされました。、


	-- 各パートの解説です、、

	+ まずパート1,2,です。
	TR=1,2は、スケールの駆け上がりにディレイをかませてみました。
	1,は、ロングディレイ込みで3段、2,はショートディレイで6段かませています。
	TR=15はそれぞれ、音色FifthsLead,Syn Malletをコードで演奏、
	TR=16はGS音色を使用したベースになってます。


	+ パート3,4,は、時間軸に音符をばらまくという手法を採用しています。
	音を出す際、強引にタイム指定をかませて出力します。
	Time(8:1:48) g
	Time(11:4:21) b
	Time(10:3:24) d ...	のようにランダムタイム出力により、音を鳴らします。

	実は、この方法は夢限日記さまからのアイデアから結実したものです、。
	この形になるまで長いこと試行錯誤していたのですがどうもうまくいかず、この日記を拝見した時は、
	うまい方法だなあと感心しきりでした。
	http://mugen-diary.tumblr.com/post/31943369115/spacetime-64-1
	ただ負荷軽減のために手法としてはずいぶん変わってしまいましたが...この場を借りてお礼を申し上
	げます。
	低音側から 3セクションに分け、順にTubularBells,Glockenspiel,Vibraphone.wと使用してます。
	パート4,はグリッチで、、順にHelicopter  ,Machine Gun, Telephone2  と使用してます。
	ゲートタイムを短くすることで、ノイズ的な感じを出しました。
	v.Random=14 q.Random=12 t.Random=8 l.Random=24
	ばらまく際、上記のようにl.Random=24 を指定することでステップ単位で音符長を変更し、自然な感
	じに仕上げています。


	+ パート5,6,は見ればわかると思います。無限音階の疑似再現です。
	単純にn0 -> n120 までを駆け上がる仕組みをつくり、これを一定のタイム間隔で別トラックに出力し
	ているだけです。ただ、このような仕組みをつくるときは、単数字の計算がややこしいんです、、

	自動トラック切り替えをするときの注意点は、@やEPなどの設定が吹っ飛んでしまうので、都度入力し
	てあげないと挙動が不安定になります、これに気付くまで時間がかかったのでした、、


	-- 最後に、音色づくりの方法論です。。

	音色を味付けするため、ピッチ変動などを加えています。
	PitchBend.onNoteSine(1,0,666+Random(11),!1,4) p.Frequency=16 p.Random=2

	上記はピッチベンドをサイン波に合わせて変更する命令セットで、説明するとこんな感じです。
	1型のサイン波を設定し、下限 0から、上限 666+Random(11)まで変更し、これを1小節の間で、4回繰り
	返す。これは16ステップ単位で変更され、この時ランダムに+-1数値を加減する。
	という指定をしています。

	要は少しだけ音がリアルになります、、高級な音源に近づく気がします。その代り処理負担が増えます。

	EP.onNoteSine(0,111,123,!%(TimeBase*2),16)	EP.Frequency=2	EP.Random=6
	これはEPの指定の場合です、裏ではこんなことをしていました、、


*/
  
Include(gs.h); 
	ResetGS();r4
	CH(10)  GS_RHYTHM(0);r8
	CH(13)  GS_RHYTHM(1);r8
	CH(14)  GS_RHYTHM(2);r8
	BR(10)

//	SysEx$ = F0,7F,7F,04,01,00,6E,F7;r24		//MASTER VOLUME : 127 -> 110[6E]

//	MASTER TUNEが442Hzなってるらしいので調律をリセット
//	SysEx$ = F0,41,10,42,12,40,00,00,00,04,0C,04,2C,F7;r48	//MASTER TUNE 445Hz
	SysEx$ = F0,41,10,42,12,{40,00,00,00,04,00,00},F7;r48	//MASTER TUNE 440Hz auto chksum

//	A4	438Hz		439Hz		440Hz		441Hz
//	DATA	00 03 0B 01	00 03 0D 09	00 04 00 00	00 04 02 07
//	A4	442Hz		443Hz		444Hz		445Hz
//	DATA	00 04 04 0F	00 04 07 06	00 04 09 0D	00 04 0C 04


//	Function GSScaleTuningは、ドラムトラック拡張時は使用しないほうがよい?

	Function GSScaleTuningKAI (C,Cp,D,Dp,E,F,Fp,G,Gp,A,Ap,B){
	//	Int DeviceNumber = $10;
		FOR(Int I=$10; I <= $1F ; I++){		//[$10がTR=10に該当]
			IF(I< $1C | $1D< I){		//[$1C,$1DがTR=13,14に該当]
	SysEx = $F0,$41,(DeviceNumber),$42,$12,{$40,(I),$40,(C),(Cp),(D),(Dp),(E),(F),(Fp),(G),(Gp),(A),(Ap),(B)},$F7;
			}
		}
	} //

//	Pitch KeyinA 436Hz(-16セント) //ドラムトラックは迂回
	Int TNG=-16; //[+63,-64]RPN
	GSScaleTuningKAI (64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG,64+TNG)r3;

	// 1200*log(442/440)/log2 = 7.85141504セント グーグル電卓機能より
	// 1200*log(444/440)/log2 = 15.6673834セント


Tempo=177
TimeBase=168		//開始小節指定の変数より前に宣言
System.RandomSeed=47613	//乱数列を生成する数値 - 種を現在時刻から取得しないケース

	//PlayFrom(60:1:0) //途中から全トラック演奏したいとき指定
	//PlayTo  (84:1:0)
	//PrintTime;
	//PrintTrack;
	//Slur(0,(TimeBase/4));


	#COM_SET={v.Random=18 t.Random=5 q.Random=24 }

	Int Time_adj= 0;		//発音タイミング

	Int Part_One=TimeBase*4;	//開始小節
	Int Part_Two=0;			//Twoパート開始のキャプ
	Int Part_Three=0;		//
	Int Part_Four=0;		//
	Int Part_Five=0;		//
	Int Part_Six =0;		//
	
//	TW-Music2(DirectX[Music]) Effect 
//	      ReverbSetting     Time Dpth High Mix
   	CuePoint={"TwmParam	( 78, 122,  8, 114)"}	//初期値(127,117,0,127)
//	CuePoint={"TwmParam     (127, 127,  60)"}	//tenjyou.mmlより参照設定
//	高周波を比較的強く出し			//tenjyou.mmlより参照コメント
//	タイム・デプス共に最大で演出的に

//	Time     [0-127],
//	Gain     [0-127],
//	HighFreq [0-127],
//	Mix      [0-127]

//	       ChorusSetting    Wave  Mix Dpth  FB Freq Dly Phs
	CuePoint={"TwmChorus	( 1,   44,  72, 111, 66,111,  1)"}	//初期値(0,64,25,79,14,114,3)
//	CuePoint={"TwmChorus    ( 1,  127,  30, 60,  1,  50,  0)"}	//tenjyou.mmlより参照設定値
//	ゆらぎの周期を最も遅くし、フランジャー設定	//tenjyou.mmlより参照コメント
//	ディレイを長めにとって、擬似ステレオに

//	Waveform [0-1],
//	WetDryMix[0-127],
//	Depth    [0-127],
//	Feedback [0-127],
//	Frequency[0-127],
//	Delay    [0-127],
//	Phase    [0-4]
  
//全トラック 
	
//Part_IO 
	
	Function ERR_CHK(Int II){ 

		IF(II< 4){ II=4; }ELSE{ II= II- II%4; }	//末端切り下げ
		RESULT= II;
	} //Func
  
Function TB_out(Int Loop){ 

		Int DD=0;
		Array PP_ary=();

	WHILE(1){
		IF(Random(3)==0 & DD< Loop*4-16){	DD=DD+16; PP_ary=(PP_ary,16);} //33 %
		ELSE{
			IF(Random(3)==0 & DD< Loop*4-8){	DD=DD+8; PP_ary=(PP_ary,8);} //66/3 %
			ELSE{
				IF(Random(3)==0){	DD=DD+4; PP_ary=(PP_ary,4);}	//66*2/3/3=14.66%
			}
		}

		IF(Loop*4<=DD){ EXIT; }	//TimeBase 30個*4
	} //

		RESULT= PP_ary;		//(16, 8, 4, ...) 配列合算で、120 [30小節]
} //Func
 
Function TB_outRdm(Int Loop){ 

		Int DD=0;
		Array PP_ary=();

	WHILE(1){
		IF(Random(3)==0 & DD< Loop*4-32){	DD=DD+32; PP_ary=(PP_ary,32);} //33 %
		ELSE{
			IF(Random(3)==0 & DD< Loop*4-16){	DD=DD+16; PP_ary=(PP_ary,16);} //66/3 %
			ELSE{
				IF(Random(3)==0){	DD=DD+8; PP_ary=(PP_ary,8);}	//66*2/3/3=14.66%
			}
		}

		IF(Loop*4<=DD){ EXIT; }	//TimeBase 30個*4
	} //

		RESULT= PP_ary;		//(32, 16, 8, ...) 配列合算で、120 [30小節]
} //Func
 
	Function CHD_Piyo(Array Elm_copy){ 

		Str Chd_str={'};

		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			Chd_str= Chd_str +{n(}+Elm_copy(I)+{)};
		} //
		Chd_str= Chd_str +{'};	//Print(Chd_str)

		Chd_str;				//発音 'n(60)n(74)n(88)n(90)'

	} //Func
 
//Scle_CNV 
	
	Function CHD_out(Array Elm_copy){ 

		Int TT= 0;
		Int TU= 0;
		Int TW= 0;
		Int I=0;

		WHILE(1){
			I++;
			TT= Random(SizeOf(Elm_copy)-1)+1;	//ルート以外
			IF(Elm_copy(0)+3<= Elm_copy(TT) & Elm_copy(TT)<= Elm_copy(0)+5 ){ I=0; EXIT; }
			IF(SizeOf(Elm_copy)*3<= I){ I=0; EXIT; }	//チャレンジ回数
		}

		WHILE(1){
			I++;
			TU= Random(SizeOf(Elm_copy)-1)+1;	//ルート以外
			IF(Elm_copy(0)+7<= Elm_copy(TU) & Elm_copy(TU)<= Elm_copy(0)+9 ){ I=0; EXIT; }
			IF(SizeOf(Elm_copy)*4<= I){ I=0; EXIT; }	//チャレンジ回数
		}

		WHILE(1){
			I++;
			TW= Random(SizeOf(Elm_copy)-1)+1;	//ルート以外
			IF(TT!=TW & TU!=TW){ I=0; EXIT; }
			IF(SizeOf(Elm_copy)<= I){ I=0; EXIT; }	//チャレンジ回数
		}

		Array CHD= (Elm_copy(0),Elm_copy(TT),Elm_copy(TU),Elm_copy(TW)); //合成
		//Print({Elm_copy:}+Elm_copy+{ / }+{I:}+I+{TT:}+TT+{TU:}+TU+{TW:}+TW)

		CHD = ArraySortNum(CHD); // 再ソート
		//Print({CHD:}+CHD)

		RESULT=CHD;	//(3,6,10,12,14) -> (3,6,10,12) 与えられた配列から4つチョイス

	} //Func
 
	Function Scle_CNV(Array Elm_copy){ 

		Int DUB=0;	//TimeBaseの個数
		Array Elm_chd=();
		Array Elm_out=();
		Array Tri_tmp=();
		Array Tri_chd=();

		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
			ELSE{

				FOR(Int J=0; J< SizeOf(Elm_chd); J++){

					IF(J!=0){ Elm_out=(Elm_out,Elm_chd(J)); }ELSE{ DUB= Elm_chd(J); } //分離
				} //

				//#OVERIDE=SS;
				Tri_tmp=CHD_out(Elm_out); //Print(Tri_tmp);

				//Str SS={Array OvRide= (}+Tri_tmp+{);};	//#OVERIDEへ出力

				Tri_chd=(Tri_chd,DUB,Tri_tmp,-1);	//6つづつ4音の配列合成

				Elm_chd=();
				Elm_out=();
			}
		} //

		RESULT=Tri_chd;	//(4, 0,1,5,7,-1, 16, 0,5,7,11,-1 ...) -> (4, 1,4,7,10,-1, 16, 0,5,7,11,-1, ...)
	} //Func
  
//ランダムスケール出力 
	
	Function Rdm_io(Array Elm_copy){ 

		FOR(Int I=1; I< SizeOf(Elm_copy)-1; I++){
			Elm_copy(I)= Elm_copy(I)+RandomSelect(1,0,-1);
		}

		RESULT= Elm_copy;	//(0,2,4,6,8,10) -> (0,3,4,6,7,11)
	} //Func
 
	Function Rdm_ad(Array Elm_copy){ 

		Array Elm_tmp=();
		Array Elm_temp=();
		Int TT= 0;
		Int TU= 0;

		SWITCH(Random(3)){
		CASE(0){ Elm_tmp= Elm_copy; }
		CASE(1){
			TT= Random(SizeOf(Elm_copy));	//省く

			FOR(Int I=0; I< SizeOf(Elm_copy); I++){

				IF(TT==I){}
				ELSE{	Elm_tmp=(Elm_tmp,Elm_copy(I)); }
			}
		}
		CASE(2){
			TT= Random(SizeOf(Elm_copy));	//省く

			WHILE(1){
				TU= Random(SizeOf(Elm_copy));	//省く

				IF(TT==TU){}
				ELSE{ EXIT; }
			}

			FOR(Int I=0; I< SizeOf(Elm_copy); I++){

				SWITCH(I){
				CASE(TT){}	//thru
				CASE(TU){}	//thru
				DEFAULT{ Elm_tmp=(Elm_tmp,Elm_copy(I)); }
				}
			}
		}
		} //SW

		RESULT= Elm_tmp;	//(0,1,4,6,8,10) -> (1,4,8,10)
	} //Func
 
	Function Sorter(Array Elm_copy){ 

		Elm_copy = ArraySortNum(Elm_copy); // 再ソート

		Array Elm_tmp=();

		FOR(Int I=1; I< SizeOf(Elm_copy); I++){		//Elm_copy(0)以外のみ

			IF(Elm_copy(I-1)==Elm_copy(I)){}	//同数値を省く
			ELSE{ Elm_tmp= (Elm_tmp,Elm_copy(I)); }
		}

		Elm_tmp=(Elm_tmp,Elm_copy(0)+12);		//Elm_copy(0)を最後に追加

		RESULT= Elm_tmp;	//(0,3,3,10,6) -> (3,6,10,12)
	} //Func
 
	Function Scle_stre(Array Elm_copy){ 


		Int DUB=0;	//1/4小節数

		Array SCL=();
		#SCLE_RR;
		Array CC=();
		Array BB=();
		Array AA=SCL;


		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			DUB=Elm_copy(I);

			BB= Rdm_io(AA);	BB= Rdm_ad(BB); BB= Sorter(BB);

			IF(SizeOf(Elm_copy)-1<= I){ CC=(CC,DUB,BB,-2); }
			ELSE{                       CC=(CC,DUB,BB,-1); }
		} //

		RESULT =CC; //(0,1,3,5,7,8,11) -> (4, 0,1,5,7,-1,  ...16, 0,5,7,11,-2)
	} //Func
  
//マクロ、変数 

	ONE= ERR_CHK(ONE);
	TWO= ERR_CHK(TWO);
	THREE= ERR_CHK(THREE);
	FOUR= ERR_CHK(FOUR);

	Int TMP=0;			//テンプ
	Int II=0;			//テンプ

	Array TR_TBP=TB_out(ONE-2);		//長さ出力 [30]小節
	Array TR_TBQ=TB_out(TWO-2);		//
	Array TR_TBR=TB_outRdm(THREE-2);	//
	Array TR_TBS=TB_outRdm(FOUR-2);		//
	Array TR_TB=();			//テンプ
	Array Elm_chd=();


	#SCLE_Hn={SCL=(0,3,4,6,7,9,10); }	//配列原本 Hungarian
	#SCLE_Nm={SCL=(0,1,3,5,7,8,11); }	//配列原本 Neapolitan minor


	//section 1
	TR_TB=TR_TBP;

	#SCLE_RR=#SCLE_Nm;
	Array SC_dataP =Scle_stre(TR_TB);	//スケール配列群

	TR_TB=TR_TBQ;

	#SCLE_RR=#SCLE_Hn;
	Array SC_dataQ =Scle_stre(TR_TB);	//

	//section 2
	TR_TB=TR_TBR;

	#SCLE_RR=#SCLE_Nm;
	Array SC_dataR=Scle_stre(TR_TB);	//

	TR_TB=TR_TBS;

	#SCLE_RR=#SCLE_Hn;
	Array SC_dataS=Scle_stre(TR_TB);	//

	Array SC_data =();		//テンプ
  
//ドラム部 
	
Function Std_drm(){	// 基本ドラム生成 

	Str BD={};	Str HH={};	Str SN={};
	Str RYM={};	Int TMP=0; //Sub
	#DR;

	RYM={	TMP=Time;}+{Rhythm}+CHR(123)+BD+CHR(125)+{
	      	Time=TMP;}+{Rhythm}+CHR(123)+SN+CHR(125)+{
		Time=TMP;}+{Rhythm}+CHR(123)+HH+CHR(125)+{}
	RYM;	//発音
} //Func
 
Function DrStd_piyo(Array Elm_copy){ 

	Str DR={};	//マクロ確保
	Int DUB= 0;
	Array Elm_chd=();

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
		ELSE{
			DUB= Elm_chd(0);

			SWITCH(DUB){
				CASE(4){  #DR=#RR1; }
				CASE(8){  #DR=#RR2; }
				CASE(16){ #DR=#RR3; }
			}
			Std_drm();

			Elm_chd=();	//再初期化
		}
	}
} //Func
 
//	Rdm_drm() 
	
Function Splt_mke(Int DD){	// ドラムン合成 l16専用 

	Str BD={};	Str HH={};	Str SN={};
	#DR;
	Str BDs={};	Str HHs={};	Str SNs={};
	Str DATAs={};	Int TMP=0; //Sub

	//Int DD=0;		//小節数
	Int Mid_num=5;		//初期値:5 {l16 []...}
	Int SC =2; 		//固定値
	Array Data_ary=();	//スライスデータ

	FOR(Int I=0; I< DD *16/SC; I++){ // l16 4小節 - 32分割

		BDs= MID(BD,Mid_num,SC); HHs= MID(HH,Mid_num,SC); SNs= MID(SN,Mid_num,SC); // 2/64

		IF(I%2==1){
			IF(I%8==7){ Mid_num=Mid_num+2+SC; } //読み出しタイミング
			ELSE{	    Mid_num=Mid_num+1+SC; }
		}
		ELSE{ Mid_num=Mid_num+SC; }

	DATAs={TMP=Time;}+{Rhythm}+CHR(123)+BDs+CHR(125)+{
	       Time=TMP;}+{Rhythm}+CHR(123)+SNs+CHR(125)+{
	       Time=TMP;}+{Rhythm}+CHR(123)+HHs+CHR(125)+{}

		Data_ary=(Data_ary,DATAs); //スライスデータ合成
	} //

	RESULT= Data_ary; //Print(SizeOf(Data_ary))
} //Func
 
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);}
	}
	//Print(Rdm_ary);
	RESULT =Rdm_ary;	//(4,16) -> (3,6,10,15) / (6,6,10,15)
} //Function
 
Function Rdm_drmFin(Array Data_ary){	// ドラムン生成 

	Array Rdm_ary=Rdm_num(SizeOf(Data_ary),SizeOf(Data_ary)); //シャッフル配列生成

	Int Len=MML(l); //Print(Rdm_ary)
	Str Chd_str={};
	Int Dbl_sw =0;	//倍速スイッチ

	FOR(Int I=0; I< SizeOf(Data_ary); I++){

		IF(Random(2)==0){ Dbl_sw =1; }
		ELSE{
			Dbl_sw=RandomSelect(1,3);	//3連で
		}

		Chd_str= Chd_str+{l%(}+Len/Dbl_sw+{)};		//レングス出力

		IF(Dbl_sw!=1){		//自動フィルイン
			Chd_str=Chd_str+{ PitchBend=111*}+(Dbl_sw-1);

			FOR(Int J=0; J< Dbl_sw; J++){
				Chd_str=Chd_str+Data_ary(Rdm_ary(I));	//繰り返し出力
			} //
		}
		ELSE{Chd_str=Chd_str+{rr} }	//Dbl_sw=1
	} //

	Chd_str; //Print(Chd_str)
	l%(Len)
} //Func
 
Function Rdm_drm(Array Data_ary){	// ドラムン生成 

	Array Rdm_ary=Rdm_num(SizeOf(Data_ary),SizeOf(Data_ary)); //シャッフル配列生成

	Int Len=MML(l); //Print(Rdm_ary)
	Str Chd_str={};
	Int Dbl_sw =0;	//倍速スイッチ

	FOR(Int I=0; I< SizeOf(Data_ary); I++){

		IF(Random(2)==0){ Dbl_sw =1; }
		ELSE{
			IF(Random(2)==0){ Dbl_sw =RandomSelect(1,2); }
			ELSE{		  Dbl_sw =RandomSelect(1,4); }
		}

		Chd_str= Chd_str+{l%(}+Len/Dbl_sw+{)};		//レングス出力

		IF(Dbl_sw!=1){		//自動フィルイン
			Chd_str=Chd_str+{ PitchBend=111*}+(Dbl_sw-1);

			FOR(Int J=0; J< Dbl_sw; J++){
				Chd_str=Chd_str+Data_ary(Rdm_ary(I));	//繰り返し出力
			} //
		}
		ELSE{Chd_str=Chd_str+{rr} }	//Dbl_sw=1
	} //

	Chd_str; //Print(Chd_str)
	l%(Len)
} //Func
 
Function DrRdm_piyo(Array Elm_copy){ 

	Str DR={};	//マクロ確保
	Int DUB= 0;
	Array Elm_chd=();
	Array Data_ary=();

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
		ELSE{
			DUB= Elm_chd(0);

			SWITCH(DUB){
				CASE(4){  #DR=#RR1; }
				CASE(8){  #DR=#RR2; }
				CASE(16){ #DR=#RR3; }
			}
			Data_ary= Splt_mke(DUB/4);

			IF(Elm_copy(I)==-2){ Rdm_drmFin(Data_ary); }
			ELSE{                Rdm_drm(Data_ary); }

			Elm_chd=();	//再初期化
		}
	}
} //Func
  
	//ドラム音色 

	Function Vwte(){	//ヒューマングループ付与
		RESULT=-Random(4);
	} //Func
	Function Twte(){
		RESULT=Random(3)-1;
	} //Func

	Int BD_lev=127;	Int SN_lev=120;	Int HH_lev=117; Int PC_lev=90;

	$Y{v(PC_lev   -Vwte())t(  Twte())n(50),}	$y{v(SN_lev-30-Vwte())t(  Twte())n(50),}	//Perc.

	$X{v(BD_lev   -Vwte())t(6+Twte())n(35)0n(36),}	$x{v(BD_lev-35-Vwte())t(6+Twte())n(35)0n(36),}	//BD ドン

	$J{v(HH_lev-20-Vwte())t(Twte()-15)n(42),}	$j{v(HH_lev-56-Vwte())t(Twte()-15)n(42),}	//HH close チッ
	$P{v(HH_lev-36-Vwte())t(Twte()-8)n(44),}	$p{v(HH_lev-68-Vwte())t(Twte()-8)n(44),}	//HH pedal
	$H{v(HH_lev-36-Vwte())t(Twte()-8)n(46),}	$h{v(HH_lev-68-Vwte())t(Twte()-8)n(46),}	//HH open トゥ

	$I{v(127-Vwte())t(Twte())n(40),}		$i{v(127-44-Vwte())t(Twte())n(40),}		//Sn

	$K{'v(SN_lev-34-Vwte())t(1+Twte())n40 v(SN_lev-20-Vwte())t(Twte())n37'}
	$k{'v(SN_lev-54-Vwte())t(1+Twte())n40 v(SN_lev-50-Vwte())t(Twte())n37'}	//Sn&Rim タッ

	$G{v(127-Vwte())t(Twte()-5)n37,}		$g{v(127-33-Vwte())t(Twte()-5)n37,}		//Rim

	$C{v(HH_lev-0 -Vwte())t(13+Twte())n(57),}	$c{v(HH_lev-34-Vwte())t(13+Twte())n(57),}	//Cym
	$D{v(HH_lev+10-Vwte())t( 4+Twte())n(51),}	$d{v(HH_lev-34-Vwte())t( 4+Twte())n(51),}	//RideCym
	$B{v(HH_lev+10-Vwte())t( 8+Twte())n(55),}	$b{v(HH_lev-44-Vwte())t( 8+Twte())n(55),}	//SplashCym

	$M{v(SN_lev-Vwte())t(2+Twte())'n(43)n(47)',}$m{v(SN_lev-60-Vwte())t(2+Twte())'n(43)n(47)',}	//LowTom カッ
	$W{v(SN_lev-Vwte())t(2+Twte())'n(41)n(45)',}$w{v(SN_lev-60-Vwte())t(2+Twte())'n(41)n(45)',}	//MidTom トッ
	$N{v(SN_lev-Vwte())t(1+Twte())'n(48)n(50)',}$n{v(SN_lev-60-Vwte())t(1+Twte())'n(48)n(50)',}	//HighTom コッ

	$Q{v(PC_lev)t(2+Twte())n(63),} //Bomgo
	$R{v(PC_lev-44)t(1+Twte())n(61),} //BomgoRim
	$S{v(PC_lev)t(1+Twte())n(62),} //BomgoMute
	$T{v(PC_lev)t(3+Twte())n(64),} //BomgoLow

	$U{v(PC_lev)t(Twte())n(82),} //Shaker
 
//マクロ、変数 

#TR_SET={
}; //

 #BD0= {l16 rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr}
 #HH0= {l16 rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr}
 #SN0= {l16 rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr}

 #BD01={l16 rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr}
 #HH01={l16 rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr}
 #SN01={l16 rrrr rrrr rrrr rrrr  rrrr rrrr rrrr rrrr}

 #BD06={l16 rrrr rrrr rrrr rrrr}
 #HH06={l16 rrrr rrrr rrrr rrrr}
 #SN06={l16 rrrr rrrr rrrr rrrr}

 //4小節パターン l16*64
 #BD1= {l16 Xrrr rrrr rrrr Xrrr  rrrr rrrr rrrr rrxr  xrrr rrrr rrrr rrXr  rrrr rrrx rrrr rrrr} //2ステップ化
 #HH1= {l16 Jrrr rrrr rrjr Jrrr  rrjr Hrrr Jrrr rrrr  jrrr rrrr rrJr rjrr  rrJr jrrr rHrr jrjr}
 #SN1= {l16 rrrr rrrr Grrr rrgr  rrGr rrrr rrrr Grrr  rrrr rrrr Grrr rrrr  rrrg rrrr rrrG rrrr}

 #BD11={l16 Xrrr rrrr rrrr Xrrr  rrrr rrrr rrrr rrrr} //ドラムン
 #HH11={l16 Jrrr rrrr rrjj Jrrr  rrjr Hrrr rrrr Hjrr}
 #SN11={l16 rrrr rrrr Grrr rgGr  rrGr rrrr rrGr rrrr}

 #HH16={l16 rrjh rrrr rrHJ rjHr} //16ビート
 #SN16={l16 rrrr Grrr grrr rrGr}
 #BD16={l16 xrXr rxXr rrrr Xrrr}

 #BD2= {l16 Xrrr rrrr rrrr Xrrr  rrrr rrrr rrrr rrxr  xrrr rrrr rrrr rrXr  rrrr rrrx rrrr rrrr} //2ステップ化
 #HH2= {l16 Jrrr rrrr rrjr Jrrr  rrjr Hrrr Jrrr rrrr  jrrr rrrr rrJr rjrr  rrJr jrrr rHrr jrjr}
 #SN2= {l16 rrrr rrrr Krrr rrir  rrKr rrrr rrrr Irrr  rrrr rrrr Krrr rrrr  rrrk rrrr rrrI rrrr}

 #BD21={l16 Xrrr rrrr rrrr Xrrr  rrrr rrrr rrrr rrrr} //ドラムン
 #HH21={l16 Jrrr rrrr rrjj Jrrr  rrjr Hrrr rrrr Hjrr}
 #SN21={l16 rrrr rrrr Krrr rkKr  rrKr rrrr rrKr rrrr}

 #HH26={l16 rrjh rrrr rrHJ rjHr} //16ビート
 #SN26={l16 rrrr Krrr krrr rrKr}
 #BD26={l16 xrXr rxXr rrrr Xrrr}

 #MR6 ={l8  rUUr UrUU rUrU rUUr  UUrU rU}	//11拍子
 #HH4= {l8  jJjj jHjj jJjj jHjr  Hrrj jj}
 #SN4= {l8  rrGr rrrr grrr rrGr  rrrr gr}

 #MR66={l8  rQQr SRrS rTQr TSrr  TrSR rS}	//11拍子
 #HH44={l8  Jrrr rrjh rrrr hjrr  rrrr jH}
 #SN44={l8  rrrr Krrr rrrr Irrk  rKrr rr}

 
TR=13 

EP=127
P=54
//	#COM_SET;
	M.onNoteSine(0,0,21+Random(11),!2,1)		M.Frequency=16	M.Random=4
	PitchBend.onNoteWaveEx(0,-555,!4)		p.Frequency=8	p.Random=14
	@9 l16

V=127 REV=40
	Time=Part_One;
	Lyric={" >>パターン1,>> "}+ONE+{-2小節};
	//Sub{n(50)}

	#DR={ BD=#BD1; HH=#HH1; SN=#SN1; } Std_drm();

	#RR1={ BD=#BD16; HH=#HH16; SN=#SN16; }
	#RR2={ BD=#BD11; HH=#HH11; SN=#SN11; }
	#RR3={ BD=#BD1;  HH=#HH1;  SN=#SN1; }

	SC_data= SC_dataP;	DrStd_piyo(SC_data);	//発音
	Time=Time+TimeBase*4*2;		//残り2小節


V=121 REV=50
	Part_Two=Time;			//PlayFrom(Part_Two)
	Lyric={" >>パターン2,>> "}+TWO+{-2小節};
	//Sub{n(50)}

	#DR={ BD=#BD2; HH=#HH2; SN=#SN2; } Std_drm();

	#RR1={ BD=#BD26; HH=#HH26; SN=#SN26; }
	#RR2={ BD=#BD21; HH=#HH21; SN=#SN21; }
	#RR3={ BD=#BD2;  HH=#HH2;  SN=#SN2; }

	SC_data= SC_dataQ;	DrStd_piyo(SC_data);	//発音
	Time=Time+TimeBase*4*2;		//残り2小節


V=127 REV=40
	Part_Three=Time;		//PlayFrom(Part_Three)
	Lyric={" >>パターン3,>> "}+THREE+{-2小節};
	//Sub{n(50)}

	Time=Time+TimeBase*4*(4+THREE);
	Time=Time+TimeBase*4*2;		//残り2小節


	Part_Four=Time; V=121 REV=50	//PlayFrom(Part_Four)
	Lyric={" >>パターン4,>> "}+FOUR+{-2小節};
	//Sub{n(50)}

	Time=Time+TimeBase*4*(4+FOUR);
	TMP=Time; rr

	p%.T(0,8191,!%(TimeBase/2)) p.Frequency=1
	Sub{rr n(84)}
	Sub{r n(84)}
	n(84) rr
	Time= TMP; //Sub

	Time=Time+TimeBase*4;	//全体休符
	PitchBend.onNoteWaveEx(0,-555,!4)		p.Frequency=8	p.Random=14


EP=106
	Part_Five=Time;			//PlayFrom(Part_Five)
	Lyric={" >>パターン5,>> "}+FIVE+{回 };
	//Sub{n(50)}
	TMP=Time;	//Sub
	#DR={ BD=#MR6; HH=#HH4; SN=#SN4; } II=0; WHILE(II< (FIVE+2)){ Std_drm(); II++; }
	Time= TMP;

	Time=Time +TimeBase*4 /24*120 +TimeBase*11 *FIVE;
	TMP=Time;	rrrrrn(48)r n(50)	Time= TMP;	//Sub
	Time=Time+TimeBase*4;		//全体休符


EP=111
	Part_Six =Time; 		//PlayFrom(Part_Six)
	Lyric={" >>パターン6,>> "}+SIX+{回 };
	//Sub{n(50)}
	TMP=Time;	//Sub
	#DR={ BD=#MR66; HH=#HH44; SN=#SN44; } II=0; WHILE(II< (SIX+2)){ Std_drm(); II++; }
	Time= TMP;

	Time=Time +TimeBase*4 /24*120 +TimeBase*11 *SIX;
	n(51)n(50) l8r n(49) l8n(48)r l192 r //l8 n(47) l4+8+12+96+192+192 r
	REV=101 p%=-4000 l2 n(52)	//ラスト

 
TR=14	Time_adj= 0;	//発音タイミング 

P=54	//V=66 REV=66
	//#COM_SET;
	//PitchBend.onNoteWaveEx(0,-1111,!4)		p.Frequency=8	p.Random=14
	M.onNoteSine(0,0,21+Random(11),!2,1)		M.Frequency=16	M.Random=6
	@26 l16

V=127 REV=40
	Time=Part_One+Time_adj;

	#RR1={ BD=#BD16; HH=#HH16; SN=#SN16; }
	#RR2={ BD=#BD11; HH=#HH11; SN=#SN11; }
	#RR3={ BD=#BD1;  HH=#HH1;  SN=#SN1; }

	#DR={ BD=#BD1; HH=#HH1; SN=#SN1; }  Rdm_drm(Splt_mke(4)); //4小節
	SC_data= SC_dataP; 	//32小節単位
	DrRdm_piyo(SC_data);	//発音


V=60 REV=50
	Time=Part_Two+Time_adj;

	#RR1={ BD=#BD26; HH=#HH26; SN=#SN26; }
	#RR2={ BD=#BD21; HH=#HH21; SN=#SN21; }
	#RR3={ BD=#BD2;  HH=#HH2;  SN=#SN2; }

	#DR={ BD=#BD2; HH=#HH2; SN=#SN2; }  Rdm_drm(Splt_mke(4));
	SC_data= SC_dataQ; 	//32小節単位
	DrRdm_piyo(SC_data);	//発音


V=127 REV=40
	Time=Part_Three+Time_adj;

	#RR1={ BD=#BD06; HH=#HH16; SN=#SN06; }
	#RR2={ BD=#BD01; HH=#HH11; SN=#SN01; }
	#RR3={ BD=#BD0;  HH=#HH1;  SN=#SN0; }

	#DR={ BD=#BD0; HH=#HH1; SN=#SN0; }  Rdm_drm(Splt_mke(4));

	SC_data= SC_dataR; 	//32小節単位
	DrRdm_piyo(SC_data);	//発音


V=99 REV=50
	Time=Part_Four+Time_adj;

	#RR1={ BD=#BD06; HH=#HH26; SN=#SN26; }
	#RR2={ BD=#BD01; HH=#HH21; SN=#SN21; }
	#RR3={ BD=#BD0;  HH=#HH2;  SN=#SN2; }

	#DR={ BD=#BD0; HH=#HH2; SN=#SN2; }  Rdm_drm(Splt_mke(4));
	SC_data= SC_dataS; 	//32小節単位
	DrRdm_piyo(SC_data);	//発音

  
//TR=1 
	
//発音部 
	 
// YM_piyo 
	
	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)
	} //Func
 
	Function Ary_oct(Array Elm_copy){ 

		Int Oct=7;		//7oct.
		Array Elm_tmp=();
		Array Elm_out=();

		FOR(Int J=0; J< Oct; J++){

			FOR(Int I=0; I< SizeOf(Elm_copy); I++){
				Elm_tmp(I)=Elm_copy(I)+(12*J);
			}
			Elm_out=(Elm_out,Elm_tmp);
		}
		Elm_tmp=Elm_Rev(Elm_out);	//Elm_tmpを再利用

		Elm_out=(Elm_out,(Elm_copy(0)+Oct*12),Elm_tmp);

		RESULT=Elm_out;	//(0,6,12) ->  -> (0,6,12,18,24,30,36,30,24,18,12,6,0)
	} //Func
 
	Function Ary_octRev(Array Elm_copy){ 

		Int Oct=7;		//7oct.
		Array Elm_tmp=();
		Array Elm_out=();

		FOR(Int J=0; J< Oct; J++){

			FOR(Int I=0; I< SizeOf(Elm_copy); I++){
				Elm_tmp(I)=Elm_copy(I)+(12*J);
			}
			Elm_out=(Elm_out,Elm_tmp);
		}
		Elm_tmp=Elm_Rev(Elm_out);	//Elm_tmpを再利用

		Elm_out=(Elm_tmp,0,Elm_out);	//リバース
		//Print(Elm_out)

		RESULT=Elm_out;	//(0,6,12) -> (36,30,24,18,12,6,0,6,12,18,24,30,36)
	}
 
Function Yurimodoshi(Array Elm_copy){ 

	Int TT=Time;		//
	Int DUB=0;		//1/4小節数
	Int TW=0;		//分割step数
	Int TU=0;		//帳尻
	Array Elm_chd=();
	Array Elm_out=();

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF(I!=0){ Elm_chd=(Elm_chd,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
	} //

	V.T( 7,127,!%(TimeBase*DUB *3/4), 127,7,!%(TimeBase*DUB *1/4) )	//音量変化

	#LYRC_IN;

	IF(Random(2)==0){ Elm_out=Ary_oct(Elm_chd); }
	ELSE{             Elm_out=Ary_octRev(Elm_chd); }

	 //Print(Elm_out)
	TW=TimeBase*DUB/(SizeOf(Elm_out)-1);	//Print(TW)
	TU=TimeBase*DUB%(SizeOf(Elm_out)-1);	//Print(TU)

	FOR(Int I=0; I< SizeOf(Elm_out); I++){
		IF(I==0){	l%(TU)}			//帳尻
		ELSE{		l%(TW)}


		TT= Time;
		Time= TT+ TimeBase*10; P=(127*Elm_out(I)/84) n(24+Elm_out(I))
		Time= TT+ TimeBase*3 ; n(24+Elm_out(I))
		Time= TT;              n(24+Elm_out(I))			//スケール発音
	} //

	//Time=TT +DUB*TimeBase;	//Time Reset
} //Func
 
Function YurimodoshiW(Array Elm_copy){ 

	Int TT=Time;	//
	Int DUB=0;	//1/4小節数
	Int TW=0;	//分割step数
	Int TU=0;
	Array Elm_chd=();
	Array Elm_out=();
	Array Elm_outRev=();
	Int Tmp=MML(v);

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF(I!=0){ Elm_chd=(Elm_chd,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
	} //

	V.T( 7,127,!%(TimeBase*DUB *1/4), 127,7,!%(TimeBase*DUB *3/4) )	//音量変化

	#LYRC_IN;

	Elm_out=Ary_oct(Elm_chd);
	Elm_outRev=Ary_octRev(Elm_chd); //Print(Elm_outRev)

	TW=TimeBase*DUB/(SizeOf(Elm_out)-1);	//Print(TW)
	TU=TimeBase*DUB%(SizeOf(Elm_out)-1);	//Print(TU)

	FOR(Int I=0; I< SizeOf(Elm_out); I++){
		IF(I==0){	l%(TU)}			//帳尻
		ELSE{		l%(TW)}

		TT= Time;
		Time= TT+ TimeBase*8; P=(127*Elm_out(I)/84) v(Tmp/3*2) 'n(24+Elm_out(I))n(24+Elm_outRev(I))'
		Time= TT+ TimeBase/2; P=(127*Elm_out(I)/84) v(Tmp/3*2) 'n(24+Elm_out(I))n(24+Elm_outRev(I))'
		Time= TT;              v(Tmp)     'n(24+Elm_out(I))n(24+Elm_outRev(I))'	//スケール発音
	} //

	//Time=TT +DUB*TimeBase;	//Time Reset
} //Func
 
Function YurimodoshiW2(Array Elm_copy){ 

	Int TT=Time;	//
	Int DUB=0;	//1/4小節数
	Int TW=0;	//分割step数
	Int TU=0;
	Array Elm_chd=();
	Array Elm_out=();
	Array Elm_outRev=();
	Int Tmp=MML(v);

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF(I!=0){ Elm_chd=(Elm_chd,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
	} //

	V.T( 7,127,!%(TimeBase*DUB *1/4), 127,7,!%(TimeBase*DUB *3/4) )	//音量変化

	#LYRC_IN;

	Elm_out=Ary_oct(Elm_chd);
	Elm_outRev=Ary_octRev(Elm_chd); //Print(Elm_outRev)

	TW=TimeBase*DUB/(SizeOf(Elm_out)-1);	//Print(TW)
	TU=TimeBase*DUB%(SizeOf(Elm_out)-1);	//Print(TU)

	FOR(Int I=0; I< SizeOf(Elm_out); I++){
		IF(I==0){	l%(TU)}			//帳尻
		ELSE{		l%(TW)}

		TT= Time;
		Time= TT+ TimeBase*8; P=(127*(84-Elm_out(I))/84) v(Tmp/3*2) 'n(24+Elm_out(I))n(24+Elm_outRev(I))'
		Time= TT+ TimeBase/2; P=(127*(84-Elm_out(I))/84) v(Tmp/3*2) 'n(24+Elm_out(I))n(24+Elm_outRev(I))'
		Time= TT;              v(Tmp)     'n(24+Elm_out(I))n(24+Elm_outRev(I))'	//スケール発音
	} //

	//Time=TT +DUB*TimeBase;	//Time Reset
} //Func
 
Function YM_piyo(Array Elm_copy){ 

	Array Elm_chd=();

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
		ELSE{
			SWITCH(Random(3)){
				CASE(0){#RR1; }
				CASE(1){#RR2; }
				CASE(2){#RR3; }
			} //SW

			Yurimodoshi(Elm_chd);	//呼び出し発音

			//Print({EC:}+Elm_chd);
			Elm_chd=();
		}
	}
} //Func
 
Function YM_piyoW(Array Elm_copy){ 

	Array Elm_chd=();

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
		ELSE{
			SWITCH(Random(3)){
				CASE(0){#RR1; }
				CASE(1){#RR2; }
				CASE(2){#RR3; }
			} //SW

			YurimodoshiW(Elm_chd);	//呼び出し発音

			//Print({EC:}+Elm_chd);
			Elm_chd=();
		}
	}
} //Func
 
Function YM_piyoW2(Array Elm_copy){ 

	Array Elm_chd=();

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
		ELSE{
			SWITCH(Random(3)){
				CASE(0){#RR1; }
				CASE(1){#RR2; }
				CASE(2){#RR3; }
			} //SW

			YurimodoshiW2(Elm_chd);	//呼び出し発音

			//Print({EC:}+Elm_chd);
			Elm_chd=();
		}
	}
} //Func
  
//Data_piyo 
	 
Function Rdm_piyo(Array Elm_copy){	//Rdm_piyo(Elm_chd) 

	Int TT=Time;	//
	Int DUB=0;	//1/4小節数
	Int OCT =0;	//oct.変更 / #RRより
	Array Elm_chd=();
	Int VEL=MML(v);

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF(I!=0){ Elm_chd=(Elm_chd,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
	} //

	#LYRC_IN;

	FOR(Int I=0; I<  3 *(DUB/4); I++){ // 4コ/小節 bpm=177 程度

		Time=TT +Random(DUB)*TimeBase +Random(4)*TimeBase/4 +Random(TimeBase/4);	//負荷対策済み、発音タイミング

		SWITCH(Random(3)){
			CASE(0){#RR1; }
			CASE(1){#RR2; }
			CASE(2){#RR3; }
		} //SW
		#RS;
		l( RandomSelect(3,6,12) )

		TMP=Time;	//Sub
		r%(TimeBase/2) v(VEL/2) n( RandomSelect((48+OCT),(60+OCT),(72+OCT))+RandomSelect(Elm_chd) );
		Time=TMP;
		v(VEL) n( RandomSelect((48+OCT),(60+OCT),(72+OCT))+RandomSelect(Elm_chd) )	//演奏

	} //

	Time=TT +DUB*TimeBase;	//Time Reset

} //Func
 
Function Data_piyo(Array Elm_copy){ 

	Array Elm_chd=();

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
		ELSE{

			Rdm_piyo(Elm_chd);	//呼び出し発音

			//Print({EC:}+Elm_chd);
			Elm_chd=();
		}
	}
} //Func
   
//マクロ、変数 

#LYRC_IN={ Lyric={ }+(DUB/4)+{ 小節 / Scale: }+Elm_chd; }

#TR_SET={
	q87
	#COM_SET;
	V=127	//V.onNoteWaveEx(111,127,!6,125,111,!1)		V.Frequency=16	V.Random=4 //+-2
	EP=120	//EP.onNoteSine(0,121+Random(11),125,!1,4) 	EP.Frequency=16	EP.Random=4
	M.onNoteSine(0,0,21+Random(11),!2,1)		M.Frequency=16	M.Random=6
	PitchBend.onNoteSine(1,0,333+Random(11),!1,2)	p.Frequency=8	p.Random=4 // SinCrv,Min,Max,Len,Loop
	P=64
}; //

#TR_SET1={
	q87
	#COM_SET;
	V=127	//V.onNoteWaveEx(111,127,!6,125,111,!1)		V.Frequency=16	V.Random=4 //+-2
	EP=120	//EP.onNoteSine(0,121+Random(11),125,!1,4) 	EP.Frequency=16	EP.Random=4
	M.onNoteSine(0,0,21+Random(11),!2,1)		M.Frequency=16	M.Random=4
	PitchBend.onNoteSine(1,0,333+Random(11),!1,2)	p.Frequency=16	p.Random=2 // SinCrv,Min,Max,Len,Loop
	P=64
}; //

#TR_SET2={
	q87
	v.Random=14 q.Random=12 t.Random=8 l.Random=24
	V=127
	EP.onNoteSine(0,111,123,!%(TimeBase*2),16)	EP.Frequency=2	EP.Random=6
	M.onNoteSine(1,0,8+Random(4),!1,4)		M.Frequency=8	M.Random=6
	PitchBend.onNoteSine(1,0,333+Random(11),!1,2)	p.Frequency=4	p.Random=14 // SinCrv,Min,Max,Len,Loop
	P=64
}; //
 
TR=1	Time_adj= 4;	//発音タイミング 

	Time=Part_One+Time_adj;
CoarseTune=64
FineTune=64+3
#TR_SET;	REV=36 CHO=0
	Time=Time+TimeBase*4*2;		//休符がわり


	#RR1={@81,1 v111 }
	#RR2={@81,8 v102 }
	#RR3={@82,1 v114 }

	SC_data= SC_dataP;	YM_piyo(SC_data);		//発音
	//Time=Time+TimeBase*4*2;	//休符がわり


	Time=Part_Two+Time_adj;
#TR_SET1;	REV=40 CHO=116
	Time=Time+TimeBase*4*2;		//休符がわり

	#RR1={@81,1 v86 }
	#RR2={@81,8 v88 }
	#RR3={@82,1 v89 }

	SC_data= SC_dataQ;	YM_piyoW(SC_data);		//発音
	//Time=Time+TimeBase*4*2;		//休符がわり


	Time=Part_Three+Time_adj;
FineTune=64-2
#TR_SET2;	REV=67 CHO=0
@15,0					//読み込みエラー防止
	Time=Time+TimeBase*4*4;		//休符がわり

	#RR1={@12,8 P=115-Random(34)   v101  OCT=36; }
	#RR2={@10,0 P=64+17-Random(34) v91  OCT=12; }
	#RR3={@15,0 P=12+Random(34)    v111 OCT=-12; }
	#RS={ q( RandomSelect (40,60,80) ) }

	SC_data= SC_dataR;	Data_piyo(SC_data);		//発音


	Time=Part_Four+Time_adj;
FineTune=64-3
EP.Random=8 p.Random=28 M.Random=12 REV=51 CHO=66
@128,1					//読み込みエラー防止
	Time=Time+TimeBase*4*4;		//休符がわり

	#RR1={@128,1 P=64+12-Random(24) v116 OCT=12; }
	#RR2={@126,0 P=12+Random(24)    v106 OCT=-12; }
	#RR3={@125,1 P=115-Random(24)   v126 OCT=36; }
	#RS={ q( RandomSelect(18,22,26) ) }

	SC_data= SC_dataS;	Data_piyo(SC_data);		//発音

  
//TR=2 
	
//マクロ、変数 
	#LYRC_IN={}
 
TR=2	Time_adj= 4;	//発音タイミング 

	Time=Part_Two+Time_adj;
CoarseTune=64
FineTune=64+3
#TR_SET1;	REV=40 CHO=116
	Time=Time+TimeBase*4*2+TimeBase*3/4;	//休符がわり

	#RR1={@81,1 v86 }
	#RR2={@81,8 v88 }
	#RR3={@82,1 v89 }

	SC_data= SC_dataQ;	YM_piyoW2(SC_data);		//発音


	Time=Part_Three+Time_adj;
FineTune=64-1
#TR_SET2;	REV=33 CHO=0
@12,8					//読み込みエラー抑止
	Time=Time+TimeBase*4*4;		//休符がわり


	#RR1={@12,8 P=115-Random(34)   v96  OCT=36; }
	#RR2={@10,0 P=64+17-Random(34) v86  OCT=12; }
	#RR3={@15,0 P=12+Random(34)    v106 OCT=-12; }
	#RS={ q( RandomSelect (40,60,80) ) }

	SC_data= SC_dataR;	Data_piyo(SC_data);		//発音


	Time=Part_Four+Time_adj;
FineTune=64-2
EP.Random=8 p.Random=28 M.Random=12 REV=24 CHO=66
@128,1					//読み込みエラー抑止
	Time=Time+TimeBase*4*4;		//休符がわり


	#RR1={@128,1 P=64+12-Random(24) v96  OCT=12; }
	#RR2={@126,0 P=12+Random(24)    v86  OCT=-12; }
	#RR3={@125,1 P=115-Random(24)   v106 OCT=36; }
	#RS={ q( RandomSelect(18,22,26) ) }

	SC_data= SC_dataS;	Data_piyo(SC_data);		//発音


  
//TR=4 
	
	Function Pad_chg(Array Elm_copy){ 

		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			Elm_copy(I)=Elm_copy(I) +I*12 +72; //n()数へ変換
		} //

		RESULT= Elm_copy;	//
	} //Func
 
	Function Pad_out(Array Elm_copy){ 

		Int DUB=0;	//TimeBaseの個数
		Array Elm_chd=();
		Array Elm_tmp=();

		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
		} //

		TMP=Time; //Sub
		V.T(7,126,!%(TimeBase*(DUB-4)),126,7,!%(TimeBase*2),7,7,!%(TimeBase*2)) //ループ発行のためV.T
		EP.onNoteSine(0,66,123,!%(TimeBase*2+TimeBase/8),16)	//+TimeBase/8 Sineの起点まで

		EP.Delay=(TimeBase*(DUB-4));	//後半ノイズ付加
		l%(TimeBase*(DUB/4+3)) r	//EP.onNoteSineのみ発行
		Time=TMP;


		EP.Delay=(TimeBase*(DUB/4));	//前半ノイズ付加
		l%(TimeBase*DUB) Elm_chd= Pad_chg(Elm_tmp); CHD_Piyo(Elm_chd);

	} //Func
 
Function SCL_pad(Array Elm_copy){ 

	Array Elm_chd=();

	FOR(Int I=0; I< SizeOf(Elm_copy); I++){

		IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
		ELSE{
			Pad_out(Elm_chd);	//呼び出し発音

			//Print({EC:}+Elm_chd);
			Elm_chd=();
		}
	}
} //Func
 
//マクロ、変数 

#TR_SET={
	q87
	#COM_SET;

	V=0		//プチノイズ対策
	V.Frequency=4	V.Random=2 //+-2

	REV=36 CHO=0
	EP.Frequency=4	EP.Random=8
}; //

	SC_data=SC_dataS;	Array TR_copyS= Scle_CNV(SC_data);
 
TR=4	Time_adj= 0;	//発音タイミング 

	Time=Part_Four+Time_adj;
CoarseTune=64
FineTune=64-1
P=77
#TR_SET;

	@82,1 v123
	Time=Time+TimeBase*4*2;		//休符がわり

	SCL_pad(TR_copyS);
  
//TR=15 
	
//CNV_reader 
	
Function Rdm_int(Int DD){ 

	Array AA=();	//元値
	FOR(Int I=0; I< DD; I++){
		AA=(AA,I);
	} //RESULT=AA;

	Int RR = 0;		//選択
	Array BB=();
	Array CC=();	//出力
	FOR(Int I=0; I< DD; I++){
		RR= Random(SizeOf(AA));

		BB=AA;
		AA=();
		FOR(Int I=0; I< SizeOf(BB); I++){
			IF(I!=RR){	AA=(AA,BB(I)); }
			ELSE{ CC=(CC,BB(I)); }
		} //
	}
	RESULT=CC;	// 4 -> (3,0,2,1)
} //Func

 
	Function CHD_CHG(Array Elm_copy){ 

		Array JJ= Rdm_int(SizeOf(Elm_copy));	//ランダム数抽出

		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			Elm_copy(I)=Elm_copy(I) +JJ(I)*12 +48; //n()数へ変換
		} //

		RESULT= Elm_copy;
	} //Func
 
	Function Chd_ply(Array Elm_copy){ 

		Int DUB=0;	//TimeBaseの個数
		Array Elm_chd=();
		Array Elm_tmp=();

		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
		} //

		l%(TimeBase*DUB/2)
		Elm_chd= CHD_CHG(Elm_tmp);	CHD_Piyo(Elm_chd);

		l%(TimeBase*DUB/4) r
		Elm_chd= CHD_CHG(Elm_tmp);	CHD_Piyo(Elm_chd);

	} //Func
 
	Function Chd_plyW(Array Elm_copy){ 

		Int DUB=0;	//TimeBaseの個数
		Array Elm_chd=();
		Array Elm_tmp=();

		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
		} //

		IF(DUB!=16){
			l%(TimeBase*DUB/2) Elm_chd= CHD_CHG(Elm_tmp);	CHD_Piyo(Elm_chd);
			l%(TimeBase*DUB/4) r
			l%(TimeBase*DUB/4) Elm_chd= CHD_CHG(Elm_tmp);	CHD_Piyo(Elm_chd);
		}
		ELSE{
			l%(TimeBase*DUB/2) Elm_chd= CHD_CHG(Elm_tmp);	CHD_Piyo(Elm_chd);
			l%(TimeBase*DUB/4) r
			l%(TimeBase*DUB/8) Elm_chd= CHD_CHG(Elm_tmp); CHD_Piyo(Elm_chd);	Elm_chd= CHD_CHG(Elm_tmp); CHD_Piyo(Elm_chd);
		}

	} //Func
 
	Function CNV_reader(Array Elm_copy){ 

		Array Elm_chd=();
		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
			ELSE{
				Chd_ply(Elm_chd);	//呼び出し発音


				//Print({EC:}+Elm_chd);
				Elm_chd=();
			}
		}
	} //Func
 
	Function CNV_readerW(Array Elm_copy){ 

		Array Elm_chd=();
		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
			ELSE{
				Chd_plyW(Elm_chd);	//呼び出し発音


				//Print({EC:}+Elm_chd);
				Elm_chd=();
			}
		}
	} //Func
  
//マクロ、変数 

#TR_SET={
	V=0		//プチノイズ対策
	q87
	#COM_SET;
	V.onNoteWave(99,125,!6,125,0,!1+8)		V.Frequency=8	V.Random=2 //+-2
	EP.onNoteSine(0,111+Random(6),125,!1,2) 	EP.Frequency=4	EP.Random=8
	M.onNoteSine(0,0+Random(4),7,!1,8)		M.Frequency=8	M.Random=6//6
	PitchBend.onNoteSine(0,5+Random(4),24,!1,12)	p.Frequency=4	p.Random=4//14
	REV=48 CHO=1
}; //

#TR_SET2={
	EP.Frequency=8	EP.Random=2
	p.Frequency=8	p.Random=4//14
	V.onNoteWave(111,125,!24,125,116,!2)		V.Frequency=8	V.Random=4 //+-2
	CHO=27
}; //

	Array SCL=();		//スケールマクロ読込

	Array TR_copy=();	//4コード配列群

	SC_data=SC_dataP;	Array TR_copyP= Scle_CNV(SC_data);
	SC_data=SC_dataQ;	Array TR_copyQ= Scle_CNV(SC_data);

 
TR=15	Time_adj= 6-TimeBase/8;	//発音タイミング 

	Time=Part_One+Time_adj;
CoarseTune=64-12
FineTune=64+1
P=88
#TR_SET;
	@87,0  v96
	Time=Time+TimeBase*4*4;		//休符がわり

	TR_copy=TR_copyP;	CNV_reader(TR_copy);

	//残り8小節
CoarseTune=64-24
	 #SCLE_Nm;  @97,0 v108 l%(TimeBase*8) Elm_chd= CHD_out(SCL); Elm_chd= CHD_CHG(Elm_chd); CHD_Piyo(Elm_chd);


	Time=Part_Two+Time_adj;
CoarseTune=64-12
#TR_SET2;
	Time=Time+TimeBase*4*4;		//休符がわり

	@99,1 v108
	TR_copy=TR_copyQ;	CNV_readerW(TR_copy);

	//残り8小節
CoarseTune=64
	 #SCLE_Hn;  @99,0 v80 CHO=72 l%(TimeBase*4) Elm_chd= CHD_out(SCL); Elm_chd= CHD_CHG(Elm_chd); CHD_Piyo(Elm_chd);
  
//TR=16 
	
	Function B_Piyo(Array Elm_copy){ 

		Int DD=Elm_copy( Random(SizeOf(Elm_copy)) );

		Str Chd_str={'n(}+(DD+12)+{)n(}+(DD+12+12)+{)'};

		Chd_str;	//発音 'n(28)n(40)'
	} //Func
 
	Function Chd_plyB(Array Elm_copy){ 

		Int DUB=0;	//TimeBaseの個数
		//Array Elm_chd=();
		Array Elm_tmp=();

		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
		} //

		IF(DUB==4){
			l%(TimeBase*DUB/4) r
			l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
			l%(TimeBase*DUB/8) r
			l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
			l%(TimeBase*DUB/8) r
			l%(TimeBase*DUB/4) r
		}
		ELSE{
			l%(TimeBase*DUB/4) r
			l%(TimeBase*DUB/16) B_Piyo(Elm_tmp); B_Piyo(Elm_tmp);
			l%(TimeBase*DUB/8) r
			l%(TimeBase*DUB/16) B_Piyo(Elm_tmp); B_Piyo(Elm_tmp);
			l%(TimeBase*DUB/8) r
			l%(TimeBase*DUB/4) r
		}

	} //Func
 
	Function Chd_plyBW(Array Elm_copy){ 

		Int DUB=0;	//TimeBaseの個数
		//Array Elm_chd=();
		Array Elm_tmp=();

		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF(I!=0){ Elm_tmp=(Elm_tmp,Elm_copy(I)); }ELSE{ DUB= Elm_copy(I); } //分離
		} //

		IF(DUB==4){
			l%(TimeBase*DUB/4) r
			l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
			l%(TimeBase*DUB/8) r
			l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
			l%(TimeBase*DUB/8) r
			l%(TimeBase*DUB/4) r
		}
		ELSE{
			l%(TimeBase*DUB/4) r
			l%(TimeBase*DUB/16) B_Piyo(Elm_tmp); B_Piyo(Elm_tmp);
			l%(TimeBase*DUB/8) r
			l%(TimeBase*DUB/16) B_Piyo(Elm_tmp); B_Piyo(Elm_tmp);   r
			l%(TimeBase*DUB*3/16) B_Piyo(Elm_tmp);
			l%(TimeBase*DUB/8) B_Piyo(Elm_tmp);
		}

	} //Func
 
	Function CNV_readerB(Array Elm_copy){ 

		Array Elm_chd=();
		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
			ELSE{
				Chd_plyB(Elm_chd);	//呼び出し発音


				//Print({EC:}+Elm_chd);
				Elm_chd=();
			}
		}
	} //Func
 
	Function CNV_readerBW(Array Elm_copy){ 

		Array Elm_chd=();
		FOR(Int I=0; I< SizeOf(Elm_copy); I++){

			IF( -1< Elm_copy(I)){ Elm_chd=(Elm_chd,Elm_copy(I)); } //配列チェック
			ELSE{
				Chd_plyBW(Elm_chd);	//呼び出し発音


				//Print({EC:}+Elm_chd);
				Elm_chd=();
			}
		}
	} //Func
 
//マクロ、変数 

#TR_SET={
	V=0		//プチノイズ対策
	#COM_SET;
	q87
	//v101
	V.onNoteWaveEx(111,125,!5,125,111,!1)		V.Frequency=16	V.Random=4 //+-2
	EP.onNoteSine(0,111+Random(11),125,!1,1) 	EP.Frequency=16	EP.Random=4
	M.onNoteSine(0,0,21+Random(11),!2,1)		M.Frequency=16	M.Random=6
	PitchBend.onNoteWaveEx(111,-444,!3)		p.Frequency=16	p.Random=14
	REV=42

}; //
 
TR=16	Time_adj= 3;	//発音タイミング 

	Time=Part_One+Time_adj;
FineTune=64
P=33
#TR_SET;
	@39,1 v121
	Time=Time+TimeBase*4*4;		//休符がわり


	TR_copy=TR_copyP;	CNV_readerB(TR_copy);

	//残り2小節
	//l%(TimeBase*8) r


	Time=Part_Two+Time_adj;
	Time=Time+TimeBase*4*4;		//休符がわり

	@40,8 v121

	TR_copy=TR_copyQ;	CNV_readerBW(TR_copy);

	//残り2小節
	//l%(TimeBase*8) r
  
//無限音階 
	
Function Piyo_R(){ 

	EP=66 V=127
	Int KK=0;	//最低ノート
	Int NN=0;	//ノート
	Int TT=7;	//最小音量
	Int VV=0;	//ベロシティ

	FOR(Int I=0; I< 119; I++){
		NN=KK+I;
		IF(I< 119/2){ VV=TT+I*2; }ELSE{ VV=TT+(119-I)*2; }
		v(VV)n(NN)	//出力
	} //
} //Func
 
Function PiyoCal(Array TT){ 
	FOR(Int I=1; I< 13; I++){

		TR=I;
		IF(I%2==0){ P=76 }ELSE{ P=56 }

		@81,1
		l24 q99 //v111
		#TR_SET;

		IF(TT(2)==0){ Time=TT(0)+TT(1)+Time_adj+TimeBase*I; }	//トラックディレイ
		ELSE{         Time=TT(0)+TT(1)+Time_adj+TimeBase*(13-I); }

		Piyo_R();	//発音
	} //
} //Func
 
Function PiyoCalW(Array TT){ 
	FOR(Int I=1; I< 13; I++){

		TR=I;
		IF(I%2==0){ P=76 }ELSE{ P=56 }

		//@82,1
		l24 q99 //v111
		#TR_SET2;
		SWITCH(Random(3)){CASE(0){ @81,1 }CASE(1){ @81,8 }CASE(2){ @82,1 }}

		Time=TT(0)+TT(1)+Time_adj+TimeBase*I;		Piyo_R();
		Time=TT(0)+TT(1)+Time_adj+TimeBase*(13-I);	Piyo_R();
	} //
} //Func
 
//マクロ、変数 

#TR_SET={
	//CoarseTune=64+12;
	FineTune=64+3
	Time_adj= 3;	//発音タイミング
	#COM_SET;
	q87
	EP=66
	//PitchBend=0
	PitchBend.onNoteSine(1,0,666,!1,4)		p.Frequency=16	p.Random=0 // SinCrv,Min,Max,Len,Loop
	M.onNoteSine(0,0,21+Random(11),!2,1)		M.Frequency=16	M.Random=6
	V=127 REV=66 CHO=1 //P=77
}; //

#TR_SET2={
	//CoarseTune=64+24;
	FineTune=64+2
	Time_adj= 2;	//発音タイミング
	#COM_SET;
	q87
	EP=66
	//PitchBend=0
	PitchBend.onNoteSine(1,0,333,!1,1)		p.Frequency=16	p.Random=0 // SinCrv,Min,Max,Len,Loop
	M.onNoteSine(0,0,21+Random(11),!2,1)		M.Frequency=16	M.Random=0
	V=127 REV=66 CHO=1 //P=77
}; //
 
//全トラック 

	Time=Part_Five;

	FOR(Int I=0; I< FIVE; I++){
		PiyoCal(Part_Five,TimeBase*I*11,I%2);
	} //


	Time=Part_Six;

	FOR(Int I=0; I< SIX; I++){
		PiyoCalW(Part_Six,TimeBase*I*11);
	} //