Copyright ={"庚申works"}
MetaText  ={"FineTuneやCoarseTuneの使用法をコメントしてます、音色番号入力すると自動的に切り替えながら、順番に演奏します。"}
TrackName ={" GS 拡張音色チェッカー ver.1.1"} 

/*
	GS 拡張音色チェッカーです。
	GS 拡張音色を確認するためのものです。
	純正プレイヤー対応です。
	拡張音色は、もともと持っている機能なので使わない手はありません。、

	前回の、無機的な深青 ver.1.9でMSGSの簡単なコントロールの詳細は載せましたので、
	併せて見るといいかもしれません。、

	それと、前回説明足らずだった、RPNの簡単な使用法なども補足として
	[FineTuneやCoarseTuneといわれているものです。]
	ソースの後ろに、コメント欄として載せました、。


	// --- 取扱説明書です。

	Int StartNo = ...;	<- ここの数字を変更します
	Int Last_No = ...;	<- 終りの音色番号です

	#MML_TR1={
		cde... 		<- ストトンやMMLを書き込みます。
		r3		   自分の好きな演奏データへすれば、
				   より快適です。
	}

	Lyricへ、音色の名前と音色ナンパー@5,8などを出力します。

	※構造化エディタ対応です。
*/




Include(gs.h);	//サクラではこの一行が必要
ResetGS(); r4	//GS拡張音源を使用するための宣言が必要



 
	//--- 音色番号を入力します。 ---// 


	Int StartNo =   1;		//音色番号入力[1-128]
	Int Last_No = 128;		//最後　　　　[1-128]


	//	  1-  8 ピアノ,	 	  9- 16 クロマチック,		 17- 24 オルガン,
	//	 25- 32 ギター,		 33- 40 ベース,
	//	 41- 48 ストリングス,	 49- 56 アンサンブル,
	//	 57- 64 ブラス,		 65- 72リード(サックス),	 73- 80 パイプ(フルート),
	//	 81- 88 シンセ,		 89- 96 パッド,			 97-104 SFX,
	//	105-112 エスニック,	113-120 パーカッション,		121-128 その他


 
//--- この下に演奏データを書き込みます。 ---// 


#MML_TR1={ 				//TR(1) MML演奏指定 / ストトン可能なはず
	o3q127 l16cg`c^^l12c^`cl4'ecb'l3'fgb'
	o5q34  l16cg`c^^l12c^`cl4'ecb'l3'fgb'
	o7q99  l16cg`c^^l12c^`cl4'ecb'l3'fgb'
	r3
} //
#MML_TR2={ 				//TR(2) MML演奏指定
	o3l16cbge`d l6>cbge`d
	o5l16cbge`d l6>cbge`d
	o7l16cbge`d l6>cbge`d
	r3
} //
#MML_TR3={ 				//TR(3) MML演奏指定
	EP.T(0,127,!6)
	l6o3' c  ``f ```c````g' ^^^^ l16r^^^^
	EP.T(0,127,!6)
	l6o3' c`   e ```c````g' ^^^^ l16r^^^^
	EP.T(0,127,!6)
	l6o3' c`g``d#```     g' ^^^^ l16r^^^^
	r3
} //




 
//------ 以下、音色データリスト部 ------// 

Array Sound=();
Array Inn=();
#FLAG={0};
IF(StartNo<= 0 | 128< StartNo){	#FLAG={1};	Print({"StartNo ERR:1-128までの数字のみです。"});}
IF(Last_No<= 0 | 128< Last_No){	#FLAG={1};	Print({"Last_No ERR:1-128までの数字のみです。"});}

IF(#FLAG==0){
FOR(Int I=StartNo; I<= Last_No; I++){
SWITCH(I){
CASE(1){	Sound=( 1, 0, 8,16);	Inn=(,{"Piano1      "},{"Piano1w     "},{"Piano1d     "});			}
CASE(2){	Sound=( 2, 0, 8);	Inn=(,{"Piano2      "},{"Piano2w     "});					}
CASE(3){	Sound=( 3, 0, 8);	Inn=(,{"Piano3      "},{"Piano3w     "});					}
CASE(4){	Sound=( 4, 0, 8);	Inn=(,{"Honky-tonk  "},{"Honky-tonkw "});					}

CASE(5){	Sound=( 5, 0, 8,16,24);	Inn=(,{"E.Piano1    "},{"Detuned EP1 "},{"E.Piano1v   "},{"60's E.Piano"});	}
CASE(6){	Sound=( 6, 0, 8,16);	Inn=(,{"E.Piano2    "},{"Detuned EP2 "},{"E.Piano2v   "});			}
CASE(7){	Sound=( 7, 0, 8,16,24);	Inn=(,{"Harpsichord "},{"Coupled Hps."},{"Harpsi.w    "},{"Harpsi.o    "});	}
CASE(8){	Sound=( 8, 0);		Inn=(,{"Clav.       "});							}
CASE(9){	Sound=( 9, 0);		Inn=(,{"Celesta     "});							}

CASE(10){	Sound=(10, 0);		Inn=(,{"Glockenspiel"});							}
CASE(11){	Sound=(11, 0);		Inn=(,{"Music Box   "});							}
CASE(12){	Sound=(12, 0, 8);	Inn=(,{"Vibraphone  "},{"Vib.w       "});					}
CASE(13){	Sound=(13, 0, 8);	Inn=(,{"Marimba     "},{"Marimba w   "});					}
CASE(14){	Sound=(14, 0);		Inn=(,{"Xylophone   "});							}
CASE(15){	Sound=(15, 0, 8, 9);	Inn=(,{"Tubular-bell"},{"Church Bell "},{"Carillon    "});			}
CASE(16){	Sound=(16, 0);		Inn=(,{"Santur      "});							}

CASE(17){	Sound=(17, 0, 8,16,32);	Inn=(,{"Organ1      "},{"Detuned Or.1"},{"60's Organ1 "},{"Organ4      "});	}
CASE(18){	Sound=(18, 0, 8,32);	Inn=(,{"Organ2      "},{"Detuned Or.2"},{"Organ5      "});			}
CASE(19){	Sound=(19, 0);		Inn=(,{"Organ3      "});							}
CASE(20){	Sound=(20, 0, 8, 16);	Inn=(,{"Church Org.1"},{"Church Org.2"},{"Church Org.3"});			}
CASE(21){	Sound=(21, 0);		Inn=(,{"Reed Organ  "});							}
CASE(22){	Sound=(22, 0, 8);	Inn=(,{"Accordion Fr"},{"Accordion It"});					}
CASE(23){	Sound=(23, 0);		Inn=(,{"Harmonica   "});							}
CASE(24){	Sound=(24, 0);		Inn=(,{"Bandoneon   "});							}

CASE(25){	Sound=(25, 0, 8,16,32);	Inn=(,{"Nylon-str.Gt"},{"Ukulele     "},{"Nylon Gt.o  "},{"Nylon Gt.2  "});	}
CASE(26){	Sound=(26, 0, 8, 16);	Inn=(,{"Steel-str.Gt"},{"12-str.Gt   "},{"Mandolin    "});			}
CASE(27){	Sound=(27, 0, 8);	Inn=(,{"Jazz Gt.    "},{"Hawaiian Gt."});					}
CASE(28){	Sound=(28, 0, 8);	Inn=(,{"Clean Gt.   "},{"Chorus Gt.  "});					}
CASE(29){	Sound=(29, 0, 8, 16);	Inn=(,{"Muted Gt.   "},{"Funk Gt.    "},{"Funk Gt.2   "});			}
CASE(30){	Sound=(30, 0);		Inn=(,{"Overdrive Gt"});							}
CASE(31){	Sound=(31, 0, 8);	Inn=(,{"DistortionGt"},{"Feedback Gt."});					}
CASE(32){	Sound=(32, 0, 8);	Inn=(,{"Gt.Harmonics"},{"Gt.Feedback "});					}

CASE(33){	Sound=(33, 0);		Inn=(,{"Acoustic Bs."});							}
CASE(34){	Sound=(34, 0);		Inn=(,{"Fingered Bs."});							}
CASE(35){	Sound=(35, 0);		Inn=(,{"Picked Bs.  "});							}
CASE(36){	Sound=(36, 0);		Inn=(,{"Fretless Bs."});							}
CASE(37){	Sound=(37, 0);		Inn=(,{"Slap Bass1  "});							}
CASE(38){	Sound=(38, 0);		Inn=(,{"Slap Bass2  "});							}
CASE(39){	Sound=(39, 0, 1,  8);	Inn=(,{"Synth Bass1 "},{"SynthBass101"},{"Synth Bass3 "});			}
CASE(40){	Sound=(40, 0, 8, 16);	Inn=(,{"Synth Bass2 "},{"Synth Bass4 "},{"Rubber Bass "});			}

CASE(41){	Sound=(41, 0, 8);	Inn=(,{"Violin      "},{"Slow Violin "});					}
CASE(42){	Sound=(42, 0);		Inn=(,{"Viola       "});							}
CASE(43){	Sound=(43, 0);		Inn=(,{"Cello       "});							}
CASE(44){	Sound=(44, 0);		Inn=(,{"Contrabass  "});							}
CASE(45){	Sound=(45, 0);		Inn=(,{"Tremolo Str "});							}
CASE(46){	Sound=(46, 0);		Inn=(,{"PizzicatoStr"});							}
CASE(47){	Sound=(47, 0);		Inn=(,{"Harp        "});							}
CASE(48){	Sound=(48, 0);		Inn=(,{"Timpani     "});							}

CASE(49){	Sound=(49, 0, 8);	Inn=(,{"Strings     "},{"Orchestra   "});					}
CASE(50){	Sound=(50, 0);		Inn=(,{"Slow Strings"});							}
CASE(51){	Sound=(51, 0, 8);	Inn=(,{"Syn.Strings1"},{"Syn.Strings3"});					}
CASE(52){	Sound=(52, 0);		Inn=(,{"Syn.Strings2"});							}
CASE(53){	Sound=(53, 0,32);	Inn=(,{"Choir Aahs  "},{"Choir Aahs 2"});					}
CASE(54){	Sound=(54, 0);		Inn=(,{"Voice Oohs  "});							}
CASE(55){	Sound=(55, 0);		Inn=(,{"SynVox      "});							}
CASE(56){	Sound=(56, 0);		Inn=(,{"OrchestraHit"});							}

CASE(57){	Sound=(57, 0);		Inn=(,{"Trumpet     "});							}
CASE(58){	Sound=(58, 0, 1);	Inn=(,{"Trombone    "},{"Trombone2   "});					}
CASE(59){	Sound=(59, 0);		Inn=(,{"Tuba        "});							}
CASE(60){	Sound=(60, 0);		Inn=(,{"MutedTrumpet"});							}
CASE(61){	Sound=(61, 0, 1);	Inn=(,{"French Horn "},{"Fr.Horn2    "});					}
CASE(62){	Sound=(62, 0, 1);	Inn=(,{"Brass1      "},{"Brass2      "});					}
CASE(63){	Sound=(63, 0, 8, 16);	Inn=(,{"Synth Brass1"},{"Synth Brass3"},{"AnalogBrass1"});			}
CASE(64){	Sound=(64, 0, 8, 16);	Inn=(,{"Synth Brass2"},{"Synth Brass4"},{"AnalogBrass2"});			}

CASE(65){	Sound=(65, 0);		Inn=(,{"Soprano Sax "});							}
CASE(66){	Sound=(66, 0);		Inn=(,{"Alto Sax    "});							}
CASE(67){	Sound=(67, 0);		Inn=(,{"Tenor Sax   "});							}
CASE(68){	Sound=(68, 0);		Inn=(,{"Baritone Sax"});							}
CASE(69){	Sound=(69, 0);		Inn=(,{"Oboe        "});							}
CASE(70){	Sound=(70, 0);		Inn=(,{"English Horn"});							}
CASE(71){	Sound=(71, 0);		Inn=(,{"Bassoon     "});							}
CASE(72){	Sound=(72, 0);		Inn=(,{"Clarinet    "});							}

CASE(73){	Sound=(73, 0);		Inn=(,{"Piccolo     "});							}
CASE(74){	Sound=(74, 0);		Inn=(,{"Flute       "});							}
CASE(75){	Sound=(75, 0);		Inn=(,{"Recorder    "});							}
CASE(76){	Sound=(76, 0);		Inn=(,{"Pan Flute   "});							}
CASE(77){	Sound=(77, 0);		Inn=(,{"Bottle Blow "});							}
CASE(78){	Sound=(78, 0);		Inn=(,{"Shakuhachi  "});							}
CASE(79){	Sound=(79, 0);		Inn=(,{"Whistle     "});							}
CASE(80){	Sound=(80, 0);		Inn=(,{"Ocarina     "});							}

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

	FOR(Int J=1; J< SizeOf(Sound); J++){
		FOR(Int K=1; K<= 3; K++){
			TR=K;
			@=(I,Sound(J));
		}
		TR=1;
		Sub{ Lyric=Inn(J)+{ @}+I+{,}+Sound(J); r48}
		TrackSync;
		Play(,#MML_TR1,#MML_TR2,#MML_TR3);
	} //FOR
} //FOR
} //IF
 
/*
	//ここから、コメント欄です。 
	RPNの補足です。、見ていただいてありがとうございます。

	サクラのヘルプを見ると、機能の一覧 の中に、RPN/NRPN の項目があります。、
	当初、何のことかさっぱりわからなかったのですが、

	サクラのSampleフォルダ以下からMizincoさまの test_01.mmlより記述を抜粋してます。

	//------
	#Transpose  = {RPN=0,2,Tune;}
	Int BRvalue	= 12;				// ベンド計算幅（ｘ半音）
	Int FCdef	= 8;				// フィーリングコントローラデフォルトレングス
	Int Tune    = 64;				// トランスポーズ値
	...
	...

	TR=01; CH=01;
	@050;
	V(127); r%16 EP(079); r%16 REV(060); r%16 CHO(000); r%16
	#Transpose;
	v100 l16 q98
	Time(2:1:0);

	//------

	これではたと気がつき始めたのですが、FineTuneやCoarseTuneを、各 TR の後に読み込んでいます。、
	RPN=0,2,Tune;というのは、CoarseTuneの実体です、。


	各TR 以降に FineTuneを読み込まない限り動きません!! ということが解りました。、
	[ちなみに CoarseTuneというのは、半音単位でトランスポーズします。、]


	下記が自分で確認するために使ったマクロです。、

	#SYSFT  = {RPN=0,1, 64;}	//FineTune  [0-64-127(-100 - 0 - 99.99セント)]
	#SYSFTFX= {RPN=0,1, 66;}	//FineTune  [0-64-127(-100 - 0 - 99.99セント)]
	#SYSFTFY= {RPN=0,1, 68;}	//FineTune  [0-64-127(-100 - 0 - 99.99セント)]
	#SYSCT  = {RPN=0,2, 64;}	//CoarseTune[40-64-88]

	コメント部を見てもらえばだいたい解ると思います。

	ちなみに前回出てきた、
	RPN=0,0,12は、BR(12)        と同じ意味です。
	RPN=0,1,66は、FineTune(66)  と同じ意味です。上記の 0-64-127 は、64は中心で0セントということです。
	RPN=0,2,64は、CoarseTune(64)と同じ意味です。半音階で上下 2Oct.変化するようです。

	TR(1)
	FineTune(66)
	...
	...

	こんな感じでTR の後に、FineTuneなどを呼び出すと機能するはずです。TR の前に記述すると動きません。




	NRPNは、TWやサクラは関与がありません。、
	レゾナンスコントロールなどを提供していますが、どちらも対応していないのです。[仕様書など参照...]
	高級音源に限られるみたいです。




	実は、いろいろ軋轢を感じていまして、
	音楽の着想を考えるより、曲の感想コメントを考える時間が長くなってしまったので、
	このまま言語野を酷使するよりも、音楽的な部分に浸りたい、と思っています、。
	よって感想のコメントは、自粛する流れでいるつもりです。

	いつも思うのですが、音楽は富士の峰ではなく、チベット高原のようなものだと思います、。
	自分が分け隔てなく聞いたぶん、何らかの形で反映される気がします。、
	そろそろ充電時期がきたのかも...と思うこのごろです。


	口語調で見ずらいかも知れませんが、前回欠落した補足でした。
	かさねがさね見ていただき、ありがとうございます、。
*/
 
