OSDN Git Service

続・演奏画面のリファクタ。ドラムとギター画面で共通で使用しているメソッドを1つにまとめる作業。まだ完全には作業完了していない。少しずつ慎重に進めます。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / ドラム画面 / CStage演奏ドラム画面.cs
index 75289c1..c1ff570 100644 (file)
@@ -12,32 +12,8 @@ using FDK;
 \r
 namespace DTXMania\r
 {\r
-       internal class CStage演奏ドラム画面 : CStage\r
+       internal class CStage演奏ドラム画面 : CStage演奏画面共通\r
        {\r
-#if DAMAGELEVELTUNING\r
-               // ----------------------------------\r
-               public float[,] gaugeDelta = {\r
-                       {  0.003f,  0.005f },\r
-                       {  0.001f,  0.002f },\r
-                       {  0.000f,  0.000f },\r
-                       { -0.025f, -0.020f },\r
-                       { -0.050f, -0.030f }\r
-               };\r
-               public float[] damageLevelFactor = {\r
-                       0.5f, 1.0f, 1.5f\r
-               };\r
-               // ----------------------------------\r
-#endif         \r
-               \r
-               // プロパティ\r
-\r
-               public bool bAUTOでないチップが1つでもバーを通過した \r
-               {\r
-                       get;\r
-                       private set;\r
-               }\r
-\r
-\r
                // コンストラクタ\r
 \r
                public CStage演奏ドラム画面()\r
@@ -63,8 +39,9 @@ namespace DTXMania
                        base.list子Activities.Add( this.actCOMBO = new CAct演奏DrumsコンボDGB() );\r
                        base.list子Activities.Add( this.actDANGER = new CAct演奏DrumsDanger() );\r
                        base.list子Activities.Add( this.actChipFireD = new CAct演奏DrumsチップファイアD() );\r
-                       base.list子Activities.Add( this.actChipFireGB = new CAct演奏DrumsチップファイアGB() );\r
-                       base.list子Activities.Add( this.actGauge = new CAct演奏Drumsゲージ() );\r
+            base.list子Activities.Add( this.actChipFireGB = new CAct演奏DrumsチップファイアGB());\r
+            base.list子Activities.Add( this.actGauge = new CAct演奏Drumsゲージ() );\r
+            base.list子Activities.Add( this.actGraph = new CAct演奏Drumsグラフ() ); // #24074 2011.01.23 add ikanick\r
                        base.list子Activities.Add( this.actJudgeString = new CAct演奏Drums判定文字列() );\r
                        base.list子Activities.Add( this.actLaneFlushD = new CAct演奏DrumsレーンフラッシュD() );\r
                        base.list子Activities.Add( this.actLaneFlushGB = new CAct演奏DrumsレーンフラッシュGB() );\r
@@ -88,10 +65,11 @@ namespace DTXMania
 \r
                public void t演奏結果を格納する( out CScoreIni.C演奏記録 Drums, out CScoreIni.C演奏記録 Guitar, out CScoreIni.C演奏記録 Bass, out CDTX.CChip[] r空打ちドラムチップ )\r
                {\r
+                       r空打ちドラムチップ = new CDTX.CChip[ 10 ];\r
+\r
                        Drums = new CScoreIni.C演奏記録();\r
                        Guitar = new CScoreIni.C演奏記録();\r
                        Bass = new CScoreIni.C演奏記録();\r
-                       r空打ちドラムチップ = new CDTX.CChip[ 10 ];\r
                        if( CDTXMania.DTX.bチップがある.Drums && !CDTXMania.ConfigIni.bギタレボモード )\r
                        {\r
                                Drums.nスコア = this.actScore.Get( E楽器パート.DRUMS );\r
@@ -104,20 +82,20 @@ namespace DTXMania
                                Drums.nMiss数 = CDTXMania.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数・Auto含む.Drums.Miss : this.nヒット数・Auto含まない.Drums.Miss;\r
                                Drums.n最大コンボ数 = this.actCOMBO.n現在のコンボ数.Drums最高値;\r
                                Drums.n全チップ数 = CDTXMania.DTX.n可視チップ数.Drums;\r
-                               for( int j = 0; j < 10; j++ )\r
+                               for( int i = 0; i < 10; i++ )\r
                                {\r
-                                       Drums.bAutoPlay[ j ] = CDTXMania.ConfigIni.bAutoPlay[ j ];\r
+                                       Drums.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];\r
                                }\r
                                Drums.bTight = CDTXMania.ConfigIni.bTight;\r
-                               for( int k = 0; k < 3; k++ )\r
+                               for( int i = 0; i < 3; i++ )\r
                                {\r
-                                       Drums.bSudden[ k ] = CDTXMania.ConfigIni.bSudden[ k ];\r
-                                       Drums.bHidden[ k ] = CDTXMania.ConfigIni.bHidden[ k ];\r
-                                       Drums.bReverse[ k ] = CDTXMania.ConfigIni.bReverse[ k ];\r
-                                       Drums.eRandom[ k ] = CDTXMania.ConfigIni.eRandom[ k ];\r
-                                       Drums.bLight[ k ] = CDTXMania.ConfigIni.bLight[ k ];\r
-                                       Drums.bLeft[ k ] = CDTXMania.ConfigIni.bLeft[ k ];\r
-                                       Drums.f譜面スクロール速度[ k ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ k ] + 1 ) ) * 0.5f;\r
+                                       Drums.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];\r
+                                       Drums.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];\r
+                                       Drums.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];\r
+                                       Drums.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];\r
+                                       Drums.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];\r
+                                       Drums.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];\r
+                                       Drums.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;\r
                                }\r
                                Drums.eDark = CDTXMania.ConfigIni.eDark;\r
                                Drums.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;\r
@@ -156,20 +134,20 @@ namespace DTXMania
                                Guitar.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Guitar ? this.nヒット数・Auto含む.Guitar.Miss : this.nヒット数・Auto含まない.Guitar.Miss;\r
                                Guitar.n最大コンボ数 = this.actCOMBO.n現在のコンボ数.Guitar最高値;\r
                                Guitar.n全チップ数 = CDTXMania.DTX.n可視チップ数.Guitar;\r
-                               for( int m = 0; m < 10; m++ )\r
+                               for( int i = 0; i < 10; i++ )\r
                                {\r
-                                       Guitar.bAutoPlay[ m ] = CDTXMania.ConfigIni.bAutoPlay[ m ];\r
+                                       Guitar.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];\r
                                }\r
                                Guitar.bTight = CDTXMania.ConfigIni.bTight;\r
-                               for( int n = 0; n < 3; n++ )\r
+                               for( int i = 0; i < 3; i++ )\r
                                {\r
-                                       Guitar.bSudden[ n ] = CDTXMania.ConfigIni.bSudden[ n ];\r
-                                       Guitar.bHidden[ n ] = CDTXMania.ConfigIni.bHidden[ n ];\r
-                                       Guitar.bReverse[ n ] = CDTXMania.ConfigIni.bReverse[ n ];\r
-                                       Guitar.eRandom[ n ] = CDTXMania.ConfigIni.eRandom[ n ];\r
-                                       Guitar.bLight[ n ] = CDTXMania.ConfigIni.bLight[ n ];\r
-                                       Guitar.bLeft[ n ] = CDTXMania.ConfigIni.bLeft[ n ];\r
-                                       Guitar.f譜面スクロール速度[ n ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ n ] + 1 ) ) * 0.5f;\r
+                                       Guitar.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];\r
+                                       Guitar.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];\r
+                                       Guitar.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];\r
+                                       Guitar.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];\r
+                                       Guitar.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];\r
+                                       Guitar.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];\r
+                                       Guitar.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;\r
                                }\r
                                Guitar.eDark = CDTXMania.ConfigIni.eDark;\r
                                Guitar.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;\r
@@ -208,20 +186,20 @@ namespace DTXMania
                                Bass.nMiss数 = CDTXMania.ConfigIni.bAutoPlay.Bass ? this.nヒット数・Auto含む.Bass.Miss : this.nヒット数・Auto含まない.Bass.Miss;\r
                                Bass.n最大コンボ数 = this.actCOMBO.n現在のコンボ数.Bass最高値;\r
                                Bass.n全チップ数 = CDTXMania.DTX.n可視チップ数.Bass;\r
-                               for( int num5 = 0; num5 < 10; num5++ )\r
+                               for( int i = 0; i < 10; i++ )\r
                                {\r
-                                       Bass.bAutoPlay[ num5 ] = CDTXMania.ConfigIni.bAutoPlay[ num5 ];\r
+                                       Bass.bAutoPlay[ i ] = CDTXMania.ConfigIni.bAutoPlay[ i ];\r
                                }\r
                                Bass.bTight = CDTXMania.ConfigIni.bTight;\r
-                               for( int num6 = 0; num6 < 3; num6++ )\r
+                               for( int i = 0; i < 3; i++ )\r
                                {\r
-                                       Bass.bSudden[ num6 ] = CDTXMania.ConfigIni.bSudden[ num6 ];\r
-                                       Bass.bHidden[ num6 ] = CDTXMania.ConfigIni.bHidden[ num6 ];\r
-                                       Bass.bReverse[ num6 ] = CDTXMania.ConfigIni.bReverse[ num6 ];\r
-                                       Bass.eRandom[ num6 ] = CDTXMania.ConfigIni.eRandom[ num6 ];\r
-                                       Bass.bLight[ num6 ] = CDTXMania.ConfigIni.bLight[ num6 ];\r
-                                       Bass.bLeft[ num6 ] = CDTXMania.ConfigIni.bLeft[ num6 ];\r
-                                       Bass.f譜面スクロール速度[ num6 ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ num6 ] + 1 ) ) * 0.5f;\r
+                                       Bass.bSudden[ i ] = CDTXMania.ConfigIni.bSudden[ i ];\r
+                                       Bass.bHidden[ i ] = CDTXMania.ConfigIni.bHidden[ i ];\r
+                                       Bass.bReverse[ i ] = CDTXMania.ConfigIni.bReverse[ i ];\r
+                                       Bass.eRandom[ i ] = CDTXMania.ConfigIni.eRandom[ i ];\r
+                                       Bass.bLight[ i ] = CDTXMania.ConfigIni.bLight[ i ];\r
+                                       Bass.bLeft[ i ] = CDTXMania.ConfigIni.bLeft[ i ];\r
+                                       Bass.f譜面スクロール速度[ i ] = ( (float) ( CDTXMania.ConfigIni.n譜面スクロール速度[ i ] + 1 ) ) * 0.5f;\r
                                }\r
                                Bass.eDark = CDTXMania.ConfigIni.eDark;\r
                                Bass.n演奏速度分子 = CDTXMania.ConfigIni.n演奏速度;\r
@@ -236,10 +214,10 @@ namespace DTXMania
                                Bass.bDrums有効 = CDTXMania.ConfigIni.bDrums有効;\r
                                Bass.bSTAGEFAILED有効 = CDTXMania.ConfigIni.bSTAGEFAILED有効;\r
                                Bass.eダメージレベル = CDTXMania.ConfigIni.eダメージレベル;\r
-                               Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Guitar;\r
-                               Bass.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Guitar;\r
-                               Bass.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Guitar;\r
-                               Bass.b演奏にマウスを使用した = this.b演奏にマウスを使った.Guitar;\r
+                               Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Bass;                        // #24280 2011.1.29 yyagi\r
+                               Bass.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Bass;                          //\r
+                               Bass.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Bass;          //\r
+                               Bass.b演奏にマウスを使用した = this.b演奏にマウスを使った.Bass;                                    //\r
                                Bass.nPerfectになる範囲ms = CDTXMania.nPerfect範囲ms;\r
                                Bass.nGreatになる範囲ms = CDTXMania.nGreat範囲ms;\r
                                Bass.nGoodになる範囲ms = CDTXMania.nGood範囲ms;\r
@@ -253,9 +231,18 @@ namespace DTXMania
                                r空打ちドラムチップ[ i ] = this.r空うちChip( E楽器パート.DRUMS, (Eパッド) i );\r
                                if( r空打ちドラムチップ[ i ] == null )\r
                                {\r
-                                       r空打ちドラムチップ[ i ] = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( CDTXMania.Timer.n現在時刻, this.nパッド0Atoチャンネル0A[ i ] );\r
+                                       r空打ちドラムチップ[ i ] = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( CDTXMania.Timer.n現在時刻, this.nパッド0Atoチャンネル0A[ i ], this.nInputAdjustTimeMs.Drums );\r
                                }\r
                        }\r
+                       if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass )         // #24063 2011.1.24 yyagi Gt/Bsを入れ替えていたなら、演奏結果も入れ替える\r
+                       {\r
+                               CScoreIni.C演奏記録 t;\r
+                               t = Guitar;\r
+                               Guitar = Bass;\r
+                               Bass = t;\r
+\r
+                               CDTXMania.DTX.SwapGuitarBassInfos();                    // 譜面情報も元に戻す\r
+                       }\r
                }\r
 \r
 \r
@@ -263,12 +250,11 @@ namespace DTXMania
 \r
                public override void On活性化()\r
                {\r
-                       this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;\r
+                       //this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;\r
                        this.bフィルイン中 = false;\r
                        this.n現在のトップChip = ( CDTXMania.DTX.listChip.Count > 0 ) ? 0 : -1;\r
                        // this.n最後に再生したHHの実WAV番号 = -1;                                   // #23921 2011.1.4 yyagi\r
                        this.L最後に再生したHHの実WAV番号 = new List<int>(16);\r
-                       //this.L最後に再生したHHの実WAV番号.Add(-1);\r
 \r
                        this.n最後に再生したHHのチャンネル番号 = 0;\r
                        this.n最後に再生したギターの実WAV番号 = -1;\r
@@ -277,17 +263,17 @@ namespace DTXMania
                        {\r
                                this.n最後に再生したBGMの実WAV番号[ i ] = -1;\r
                        }\r
-                       this.r次にくるギターChip = null;\r
-                       this.r次にくるベースChip = null;\r
+                       //this.r次にくるギターChip = null;\r
+                       //this.r次にくるベースChip = null;\r
                        for( int j = 0; j < 10; j++ )\r
                        {\r
                                this.r現在の空うちドラムChip[ j ] = null;\r
                        }\r
                        this.r現在の空うちギターChip = null;\r
                        this.r現在の空うちベースChip = null;\r
-                       for( int k = 0; k < 3; k++ )\r
+                       for ( int k = 0; k < 3; k++ )\r
                        {\r
-                               for( int n = 0; n < 5; n++ )\r
+                               for ( int n = 0; n < 5; n++ )\r
                                {\r
                                        this.nヒット数・Auto含まない[ k ] = new STHITCOUNTOFRANK();\r
                                        this.nヒット数・Auto含む[ k ] = new STHITCOUNTOFRANK();\r
@@ -295,20 +281,31 @@ namespace DTXMania
                                this.queWailing[ k ] = new Queue<CDTX.CChip>();\r
                                this.r現在の歓声Chip[ k ] = null;\r
                        }\r
-                       for( int m = 0; m < 3; m++ )\r
-                       {\r
-                               this.b演奏にキーボードを使った[ m ] = false;\r
-                               this.b演奏にジョイパッドを使った[ m ] = false;\r
-                               this.b演奏にMIDI入力を使った[ m ] = false;\r
-                               this.b演奏にマウスを使った[ m ] = false;\r
-                       }\r
+                       //for( int m = 0; m < 3; m++ )\r
+                       //{\r
+                       //    this.b演奏にキーボードを使った[ m ] = false;\r
+                       //    this.b演奏にジョイパッドを使った[ m ] = false;\r
+                       //    this.b演奏にMIDI入力を使った[ m ] = false;\r
+                       //    this.b演奏にマウスを使った[ m ] = false;\r
+                       //}\r
                        this.bAUTOでないチップが1つでもバーを通過した = false;\r
                        base.On活性化();\r
                        this.tステータスパネルの選択();\r
                        this.tパネル文字列の設定();\r
-                       this.nInputAdjustTimeMs_Drums = CDTXMania.ConfigIni.nInputAdjustTimeMs_Drums;           // #23580 2011.1.3 yyagi\r
-                       this.nInputAdjustTimeMs_Guitar = CDTXMania.ConfigIni.nInputAdjustTimeMs_Guitar;         //\r
-                       this.nInputAdjustTimeMs_Bass = CDTXMania.ConfigIni.nInputAdjustTimeMs_Bass;                     //\r
+\r
+                       // this.nInputAdjustTimeMs.Drums = CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums;                // #23580 2011.1.3 yyagi\r
+                       // this.nInputAdjustTimeMs.Guitar = CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar;              //        2011.1.7 ikanick 修正\r
+                       // this.nInputAdjustTimeMs.Bass = CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass;                  //\r
+                       //this.bIsAutoPlay = CDTXMania.ConfigIni.bAutoPlay;                                                                     // #24239 2011.1.23 yyagi\r
+\r
+            Cスコア cスコア = CDTXMania.stage選曲.r確定されたスコア;            // #24074 2011.01.23 add ikanick\r
+            this.actGraph.dbグラフ値目標_渡 = cスコア.譜面情報.最大スキル[0];\r
+\r
+                       if ( CDTXMania.ConfigIni.bIsSwappedGuitarBass ) // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え\r
+                       {\r
+                               CDTXMania.DTX.SwapGuitarBassInfos();\r
+\r
+                       }\r
                }\r
                public override void On非活性化()\r
                {\r
@@ -328,11 +325,11 @@ namespace DTXMania
                {\r
                        if( !base.b活性化してない )\r
                        {\r
-                               this.t背景テクスチャの生成();\r
+                               //this.t背景テクスチャの生成();\r
                                this.txチップ = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums chips.png" ) );\r
                                this.txヒットバー = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums hit-bar.png" ) );\r
                                this.txヒットバーGB = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums hit-bar guitar.png" ) );\r
-                               this.txWailing枠 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing cursor.png" ) );\r
+                               //this.txWailing枠 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlay wailing cursor.png" ) );\r
                                this.txレーンフレームGB = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenPlayDrums lane parts guitar.png" ) );\r
                                if( this.txレーンフレームGB != null )\r
                                {\r
@@ -345,12 +342,12 @@ namespace DTXMania
                {\r
                        if( !base.b活性化してない )\r
                        {\r
-                               CDTXMania.tテクスチャの解放( ref this.tx背景 );\r
+                               //CDTXMania.tテクスチャの解放( ref this.tx背景 );\r
                                CDTXMania.tテクスチャの解放( ref this.txヒットバー );\r
                                CDTXMania.tテクスチャの解放( ref this.txヒットバーGB );\r
                                CDTXMania.tテクスチャの解放( ref this.txチップ );\r
                                CDTXMania.tテクスチャの解放( ref this.txレーンフレームGB );\r
-                               CDTXMania.tテクスチャの解放( ref this.txWailing枠 );\r
+                               //CDTXMania.tテクスチャの解放( ref this.txWailing枠 );\r
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
@@ -371,7 +368,7 @@ namespace DTXMania
                                        this.actFI.tフェードイン開始();\r
                                        base.b初めての進行描画 = false;\r
                                }\r
-                               if( ( CDTXMania.ConfigIni.bSTAGEFAILED有効 && ( this.actGauge.db現在のゲージ値 <= -0.1 ) ) && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
+                               if( ( CDTXMania.ConfigIni.bSTAGEFAILED有効 && ( this.actGauge.db現在のゲージ値.Drums <= -0.1 ) ) && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
                                {\r
                                        this.actStageFailed.Start();\r
                                        CDTXMania.DTX.t全チップの再生停止();\r
@@ -386,8 +383,9 @@ namespace DTXMania
                                this.t進行描画・ステータスパネル();\r
                                this.t進行描画・ギターベースフレーム();\r
                                this.t進行描画・レーンフラッシュGB();\r
-                               this.t進行描画・ギターベース判定ライン();\r
-                               this.t進行描画・ゲージ();\r
+                this.t進行描画・ギターベース判定ライン();\r
+                this.t進行描画・ゲージ();\r
+                this.t進行描画・グラフ();   // #24074 2011.01.23 add ikanick\r
                                this.t進行描画・レーンフラッシュD();\r
                                this.t進行描画・DANGER();\r
                                this.t進行描画・判定ライン();\r
@@ -430,200 +428,201 @@ namespace DTXMania
 \r
                #region [ private ]\r
                //-----------------\r
-               private class STHITCOUNTOFRANK\r
-               {\r
-                       // Fields\r
-                       public int Good;\r
-                       public int Great;\r
-                       public int Miss;\r
-                       public int Perfect;\r
-                       public int Poor;\r
-\r
-                       // Properties\r
-                       public int this[ int index ]\r
-                       {\r
-                               get\r
-                               {\r
-                                       switch( index )\r
-                                       {\r
-                                               case 0:\r
-                                                       return this.Perfect;\r
-\r
-                                               case 1:\r
-                                                       return this.Great;\r
-\r
-                                               case 2:\r
-                                                       return this.Good;\r
-\r
-                                               case 3:\r
-                                                       return this.Poor;\r
-\r
-                                               case 4:\r
-                                                       return this.Miss;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                               set\r
-                               {\r
-                                       switch( index )\r
-                                       {\r
-                                               case 0:\r
-                                                       this.Perfect = value;\r
-                                                       return;\r
-\r
-                                               case 1:\r
-                                                       this.Great = value;\r
-                                                       return;\r
-\r
-                                               case 2:\r
-                                                       this.Good = value;\r
-                                                       return;\r
-\r
-                                               case 3:\r
-                                                       this.Poor = value;\r
-                                                       return;\r
-\r
-                                               case 4:\r
-                                                       this.Miss = value;\r
-                                                       return;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                       }\r
-               }\r
-\r
-               [StructLayout( LayoutKind.Sequential )]\r
-               private struct STKARAUCHI\r
-               {\r
-                       public CDTX.CChip HH;\r
-                       public CDTX.CChip SD;\r
-                       public CDTX.CChip BD;\r
-                       public CDTX.CChip HT;\r
-                       public CDTX.CChip LT;\r
-                       public CDTX.CChip FT;\r
-                       public CDTX.CChip CY;\r
-                       public CDTX.CChip HHO;\r
-                       public CDTX.CChip RD;\r
-                       public CDTX.CChip LC;\r
-                       public CDTX.CChip this[ int index ]\r
-                       {\r
-                               get\r
-                               {\r
-                                       switch( index )\r
-                                       {\r
-                                               case 0:\r
-                                                       return this.HH;\r
-\r
-                                               case 1:\r
-                                                       return this.SD;\r
-\r
-                                               case 2:\r
-                                                       return this.BD;\r
-\r
-                                               case 3:\r
-                                                       return this.HT;\r
-\r
-                                               case 4:\r
-                                                       return this.LT;\r
-\r
-                                               case 5:\r
-                                                       return this.FT;\r
-\r
-                                               case 6:\r
-                                                       return this.CY;\r
-\r
-                                               case 7:\r
-                                                       return this.HHO;\r
-\r
-                                               case 8:\r
-                                                       return this.RD;\r
-\r
-                                               case 9:\r
-                                                       return this.LC;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                               set\r
-                               {\r
-                                       switch( index )\r
-                                       {\r
-                                               case 0:\r
-                                                       this.HH = value;\r
-                                                       return;\r
-\r
-                                               case 1:\r
-                                                       this.SD = value;\r
-                                                       return;\r
-\r
-                                               case 2:\r
-                                                       this.BD = value;\r
-                                                       return;\r
-\r
-                                               case 3:\r
-                                                       this.HT = value;\r
-                                                       return;\r
-\r
-                                               case 4:\r
-                                                       this.LT = value;\r
-                                                       return;\r
-\r
-                                               case 5:\r
-                                                       this.FT = value;\r
-                                                       return;\r
-\r
-                                               case 6:\r
-                                                       this.CY = value;\r
-                                                       return;\r
-\r
-                                               case 7:\r
-                                                       this.HHO = value;\r
-                                                       return;\r
-\r
-                                               case 8:\r
-                                                       this.RD = value;\r
-                                                       return;\r
-\r
-                                               case 9:\r
-                                                       this.LC = value;\r
-                                                       return;\r
-                                       }\r
-                                       throw new IndexOutOfRangeException();\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private CAct演奏AVI actAVI;\r
-               private CAct演奏BGA actBGA;\r
+               //private class STHITCOUNTOFRANK\r
+               //{\r
+               //    // Fields\r
+               //    public int Good;\r
+               //    public int Great;\r
+               //    public int Miss;\r
+               //    public int Perfect;\r
+               //    public int Poor;\r
+\r
+               //    // Properties\r
+               //    public int this[ int index ]\r
+               //    {\r
+               //        get\r
+               //        {\r
+               //            switch( index )\r
+               //            {\r
+               //                case 0:\r
+               //                    return this.Perfect;\r
+\r
+               //                case 1:\r
+               //                    return this.Great;\r
+\r
+               //                case 2:\r
+               //                    return this.Good;\r
+\r
+               //                case 3:\r
+               //                    return this.Poor;\r
+\r
+               //                case 4:\r
+               //                    return this.Miss;\r
+               //            }\r
+               //            throw new IndexOutOfRangeException();\r
+               //        }\r
+               //        set\r
+               //        {\r
+               //            switch( index )\r
+               //            {\r
+               //                case 0:\r
+               //                    this.Perfect = value;\r
+               //                    return;\r
+\r
+               //                case 1:\r
+               //                    this.Great = value;\r
+               //                    return;\r
+\r
+               //                case 2:\r
+               //                    this.Good = value;\r
+               //                    return;\r
+\r
+               //                case 3:\r
+               //                    this.Poor = value;\r
+               //                    return;\r
+\r
+               //                case 4:\r
+               //                    this.Miss = value;\r
+               //                    return;\r
+               //            }\r
+               //            throw new IndexOutOfRangeException();\r
+               //        }\r
+               //    }\r
+               //}\r
+\r
+               //[StructLayout( LayoutKind.Sequential )]\r
+               //private struct STKARAUCHI\r
+               //{\r
+               //    public CDTX.CChip HH;\r
+               //    public CDTX.CChip SD;\r
+               //    public CDTX.CChip BD;\r
+               //    public CDTX.CChip HT;\r
+               //    public CDTX.CChip LT;\r
+               //    public CDTX.CChip FT;\r
+               //    public CDTX.CChip CY;\r
+               //    public CDTX.CChip HHO;\r
+               //    public CDTX.CChip RD;\r
+               //    public CDTX.CChip LC;\r
+               //    public CDTX.CChip this[ int index ]\r
+               //    {\r
+               //        get\r
+               //        {\r
+               //            switch( index )\r
+               //            {\r
+               //                case 0:\r
+               //                    return this.HH;\r
+\r
+               //                case 1:\r
+               //                    return this.SD;\r
+\r
+               //                case 2:\r
+               //                    return this.BD;\r
+\r
+               //                case 3:\r
+               //                    return this.HT;\r
+\r
+               //                case 4:\r
+               //                    return this.LT;\r
+\r
+               //                case 5:\r
+               //                    return this.FT;\r
+\r
+               //                case 6:\r
+               //                    return this.CY;\r
+\r
+               //                case 7:\r
+               //                    return this.HHO;\r
+\r
+               //                case 8:\r
+               //                    return this.RD;\r
+\r
+               //                case 9:\r
+               //                    return this.LC;\r
+               //            }\r
+               //            throw new IndexOutOfRangeException();\r
+               //        }\r
+               //        set\r
+               //        {\r
+               //            switch( index )\r
+               //            {\r
+               //                case 0:\r
+               //                    this.HH = value;\r
+               //                    return;\r
+\r
+               //                case 1:\r
+               //                    this.SD = value;\r
+               //                    return;\r
+\r
+               //                case 2:\r
+               //                    this.BD = value;\r
+               //                    return;\r
+\r
+               //                case 3:\r
+               //                    this.HT = value;\r
+               //                    return;\r
+\r
+               //                case 4:\r
+               //                    this.LT = value;\r
+               //                    return;\r
+\r
+               //                case 5:\r
+               //                    this.FT = value;\r
+               //                    return;\r
+\r
+               //                case 6:\r
+               //                    this.CY = value;\r
+               //                    return;\r
+\r
+               //                case 7:\r
+               //                    this.HHO = value;\r
+               //                    return;\r
+\r
+               //                case 8:\r
+               //                    this.RD = value;\r
+               //                    return;\r
+\r
+               //                case 9:\r
+               //                    this.LC = value;\r
+               //                    return;\r
+               //            }\r
+               //            throw new IndexOutOfRangeException();\r
+               //        }\r
+               //    }\r
+               //}\r
+\r
+               //private CAct演奏AVI actAVI;\r
+               //private CAct演奏BGA actBGA;\r
                private CAct演奏DrumsチップファイアD actChipFireD;\r
                private CAct演奏DrumsチップファイアGB actChipFireGB;\r
                private CAct演奏DrumsコンボDGB actCOMBO;\r
                private CAct演奏DrumsDanger actDANGER;\r
-               private CActFIFOBlack actFI;\r
-               private CActFIFOBlack actFO;\r
-               private CActFIFOWhite actFOClear;\r
-               private CAct演奏Drumsゲージ actGauge;\r
+               //private CActFIFOBlack actFI;\r
+               //private CActFIFOBlack actFO;\r
+               //private CActFIFOWhite actFOClear;\r
+               //private CAct演奏Drumsゲージ actGauge;\r
+               private CAct演奏Drumsグラフ actGraph;   // #24074 2011.01.23 add ikanick\r
                private CAct演奏Drums判定文字列 actJudgeString;\r
                private CAct演奏DrumsレーンフラッシュD actLaneFlushD;\r
                private CAct演奏DrumsレーンフラッシュGB actLaneFlushGB;\r
                private CAct演奏Drumsパッド actPad;\r
-               private CAct演奏パネル文字列 actPanel;\r
-               private CAct演奏演奏情報 actPlayInfo;\r
+               //private CAct演奏パネル文字列 actPanel;\r
+               //private CAct演奏演奏情報 actPlayInfo;\r
                private CAct演奏DrumsRGB actRGB;\r
                private CAct演奏Drumsスコア actScore;\r
-               private CAct演奏ステージ失敗 actStageFailed;\r
+               //private CAct演奏ステージ失敗 actStageFailed;\r
                private CAct演奏Drumsステータスパネル actStatusPanels;\r
-               private CAct演奏DrumsWailingBonus actWailingBonus;\r
-               private CAct演奏スクロール速度 act譜面スクロール速度;\r
-               private bool bPAUSE;\r
+               //private CAct演奏DrumsWailingBonus actWailingBonus;\r
+               //private CAct演奏スクロール速度 act譜面スクロール速度;\r
+               //private bool bPAUSE;\r
                private bool bフィルイン中;\r
-               private STDGBVALUE<bool> b演奏にMIDI入力を使った;\r
-               private STDGBVALUE<bool> b演奏にキーボードを使った;\r
-               private STDGBVALUE<bool> b演奏にジョイパッドを使った;\r
-               private STDGBVALUE<bool> b演奏にマウスを使った;\r
+//             private STDGBVALUE<bool> b演奏にMIDI入力を使った;\r
+//             private STDGBVALUE<bool> b演奏にキーボードを使った;\r
+//             private STDGBVALUE<bool> b演奏にジョイパッドを使った;\r
+//             private STDGBVALUE<bool> b演奏にマウスを使った;\r
                private CCounter ctWailingチップ模様アニメ;\r
                private STDGBVALUE<CCounter> ctチップ模様アニメ;\r
                private readonly Eパッド[] eチャンネルtoパッド;\r
-               private E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
+               //private E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
                private readonly int[,] nBGAスコープチャンネルマップ;\r
                private readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };\r
                private readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };\r
@@ -633,7 +632,7 @@ namespace DTXMania
                private readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };\r
                private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含まない;\r
                private STDGBVALUE<STHITCOUNTOFRANK> nヒット数・Auto含む;\r
-               private int n現在のトップChip = -1;\r
+               // private int n現在のトップChip = -1;\r
                private int[] n最後に再生したBGMの実WAV番号 = new int[ 50 ];\r
                private int n最後に再生したHHのチャンネル番号;\r
                private List<int> L最後に再生したHHの実WAV番号;              // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.\r
@@ -644,17 +643,17 @@ namespace DTXMania
                private CDTX.CChip r現在の空うちギターChip;\r
                private STKARAUCHI r現在の空うちドラムChip;\r
                private CDTX.CChip r現在の空うちベースChip;\r
-               private CDTX.CChip r次にくるギターChip;\r
-               private CDTX.CChip r次にくるベースChip;\r
-               private CTexture txWailing枠;\r
+               //private CDTX.CChip r次にくるギターChip;\r
+               //private CDTX.CChip r次にくるベースChip;\r
+               //private CTexture txWailing枠;\r
                private CTexture txチップ;\r
                private CTexture txヒットバー;\r
                private CTexture txヒットバーGB;\r
                private CTexture txレーンフレームGB;\r
-               private CTexture tx背景;\r
-               private int nInputAdjustTimeMs_Drums;           // #23580 2011.1.3 yyagi\r
-               private int nInputAdjustTimeMs_Guitar;          //\r
-               private int nInputAdjustTimeMs_Bass;            //\r
+               //private CTexture tx背景;\r
+               // private STDGBVALUE<int> nInputAdjustTimeMs;                  // #23580 2011.1.3 yyagi\r
+               //private CConfigIni.STAUTOPLAY bIsAutoPlay;                    // #24239 2011.1.23 yyagi\r
+\r
                private bool bフィルイン区間の最後のChipである( CDTX.CChip pChip )\r
                {\r
                        if( pChip == null )\r
@@ -676,31 +675,32 @@ namespace DTXMania
                        }\r
                        return true;\r
                }\r
-               private E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )\r
-               {\r
-                       if( pChip != null )\r
-                       {\r
-                               int nDeltaTime = Math.Abs( (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms ) );                // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
-//Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));\r
-                               if( nDeltaTime <= CDTXMania.nPerfect範囲ms )\r
-                               {\r
-                                       return E判定.Perfect;\r
-                               }\r
-                               if( nDeltaTime <= CDTXMania.nGreat範囲ms )\r
-                               {\r
-                                       return E判定.Great;\r
-                               }\r
-                               if( nDeltaTime <= CDTXMania.nGood範囲ms )\r
-                               {\r
-                                       return E判定.Good;\r
-                               }\r
-                               if( nDeltaTime <= CDTXMania.nPoor範囲ms )\r
-                               {\r
-                                       return E判定.Poor;\r
-                               }\r
-                       }\r
-                       return E判定.Miss;\r
-               }\r
+//        private E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )\r
+//        {\r
+//            if( pChip != null )\r
+//            {\r
+//                pChip.nLag = (int) ( nTime + nInputAdjustTime - pChip.n発声時刻ms );             // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
+//                int nDeltaTime = Math.Abs( pChip.nLag);\r
+////Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));\r
+//                if( nDeltaTime <= CDTXMania.nPerfect範囲ms )\r
+//                {\r
+//                    return E判定.Perfect;\r
+//                }\r
+//                if( nDeltaTime <= CDTXMania.nGreat範囲ms )\r
+//                {\r
+//                    return E判定.Great;\r
+//                }\r
+//                if( nDeltaTime <= CDTXMania.nGood範囲ms )\r
+//                {\r
+//                    return E判定.Good;\r
+//                }\r
+//                if( nDeltaTime <= CDTXMania.nPoor範囲ms )\r
+//                {\r
+//                    return E判定.Poor;\r
+//                }\r
+//            }\r
+//            return E判定.Miss;\r
+//        }\r
                private CDTX.CChip r空うちChip( E楽器パート part, Eパッド pad )\r
                {\r
                        switch( part )\r
@@ -822,202 +822,208 @@ namespace DTXMania
                        }\r
                        return null;\r
                }\r
-               private CDTX.CChip r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( long nTime, int nChannelFlag )\r
-               {\r
-                       int num5;\r
-                       if( this.n現在のトップChip == -1 )\r
-                       {\r
-                               return null;\r
-                       }\r
-                       int count = CDTXMania.DTX.listChip.Count;\r
-                       int num4 = num5 = this.n現在のトップChip;\r
-                       if( this.n現在のトップChip >= count )\r
-                       {\r
-                               num4 = num5 = count - 1;\r
-                       }\r
-                       int num2 = num4;\r
-                       while( num2 < count )\r
-                       {\r
-                               CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];\r
-                               if( ( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) ) && ( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) )\r
-                               {\r
-                                       if( chip.n発声時刻ms > nTime )\r
-                                       {\r
-                                               break;\r
-                                       }\r
-                                       num5 = num2;\r
-                               }\r
-                               else if( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )\r
-                               {\r
-                                       if( chip.n発声時刻ms > nTime )\r
-                                       {\r
-                                               break;\r
-                                       }\r
-                                       num5 = num2;\r
-                               }\r
-                               else if( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )\r
-                               {\r
-                                       if( chip.n発声時刻ms > nTime )\r
-                                       {\r
-                                               break;\r
-                                       }\r
-                                       num5 = num2;\r
-                               }\r
-                               num2++;\r
-                       }\r
-                       int num3 = num5;\r
-                       while( num3 >= 0 )\r
-                       {\r
-                               CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];\r
-                               if( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) )\r
-                               {\r
-                                       if( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )\r
-                                       {\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               else if( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) )\r
-                               {\r
-                                       if( ( chip2.nチャンネル番号 >= 0x20 ) && ( chip2.nチャンネル番号 <= 40 ) )\r
-                                       {\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               else if( ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) && ( ( chip2.nチャンネル番号 >= 160 ) && ( chip2.nチャンネル番号 <= 0xa8 ) ) )\r
-                               {\r
-                                       break;\r
-                               }\r
-                               num3--;\r
-                       }\r
-                       if( ( num2 == count ) && ( num3 < 0 ) )\r
-                       {\r
-                               return null;\r
-                       }\r
-                       if( num2 == count )\r
-                       {\r
-                               return CDTXMania.DTX.listChip[ num3 ];\r
-                       }\r
-                       if( num3 < 0 )\r
-                       {\r
-                               return CDTXMania.DTX.listChip[ num2 ];\r
-                       }\r
-                       CDTX.CChip chip3 = CDTXMania.DTX.listChip[ num2 ];\r
-                       CDTX.CChip chip4 = CDTXMania.DTX.listChip[ num3 ];\r
-                       int num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );\r
-                       int num7 = Math.Abs( (int) ( nTime - chip4.n発声時刻ms ) );\r
-                       if( num6 >= num7 )\r
-                       {\r
-                               return chip4;\r
-                       }\r
-                       return chip3;\r
-               }\r
-               private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag )\r
-               {\r
-                       return this.r指定時刻に一番近い未ヒットChip( nTime, nChannelFlag, 0 );\r
-               }\r
-               private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int n検索範囲時間ms )\r
-               {\r
-                       int num5;\r
-                       int num6;\r
-                       if( this.n現在のトップChip == -1 )\r
-                       {\r
-                               return null;\r
-                       }\r
-                       int count = CDTXMania.DTX.listChip.Count;\r
-                       int num4 = num5 = this.n現在のトップChip;\r
-                       if( this.n現在のトップChip >= count )\r
-                       {\r
-                               num4 = num5 = count - 1;\r
-                       }\r
-                       int num2 = num4;\r
-                       while( num2 < count )\r
-                       {\r
-                               CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];\r
-                               if( ( !chip.bHit && ( nChannelFlag >= 0x11 ) ) && ( nChannelFlag <= 0x1a ) )\r
-                               {\r
-                                       if( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )\r
-                                       {\r
-                                               if( chip.n発声時刻ms > nTime )\r
-                                               {\r
-                                                       break;\r
-                                               }\r
-                                               num5 = num2;\r
-                                       }\r
-                               }\r
-                               else if( !chip.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )\r
-                               {\r
-                                       if( chip.n発声時刻ms > nTime )\r
-                                       {\r
-                                               break;\r
-                                       }\r
-                                       num5 = num2;\r
-                               }\r
-                               else if( !chip.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )\r
-                               {\r
-                                       if( chip.n発声時刻ms > nTime )\r
-                                       {\r
-                                               break;\r
-                                       }\r
-                                       num5 = num2;\r
-                               }\r
-                               num2++;\r
-                       }\r
-                       int num3 = num5;\r
-                       while( num3 >= 0 )\r
-                       {\r
-                               CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];\r
-                               if( ( ( ( !chip2.bHit && ( nChannelFlag >= 0x11 ) ) && ( ( nChannelFlag <= 0x1a ) && ( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) ) ) || ( !chip2.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) ) ) || ( !chip2.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) ) )\r
-                               {\r
-                                       break;\r
-                               }\r
-                               num3--;\r
-                       }\r
-                       if( ( num2 == count ) && ( num3 < 0 ) )\r
-                       {\r
-                               return null;\r
-                       }\r
-                       CDTX.CChip chip3 = null;\r
-                       if( num2 == count )\r
-                       {\r
-                               chip3 = CDTXMania.DTX.listChip[ num3 ];\r
-                               num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
-                       }\r
-                       else if( num3 < 0 )\r
-                       {\r
-                               chip3 = CDTXMania.DTX.listChip[ num2 ];\r
-                               num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
-                       }\r
-                       else\r
-                       {\r
-                               int num7 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
-                               int num8 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
-                               if( num7 < num8 )\r
-                               {\r
-                                       chip3 = CDTXMania.DTX.listChip[ num2 ];\r
-                                       num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
-                               }\r
-                               else\r
-                               {\r
-                                       chip3 = CDTXMania.DTX.listChip[ num3 ];\r
-                                       num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
-                               }\r
-                       }\r
-                       if( ( n検索範囲時間ms > 0 ) && ( num6 > n検索範囲時間ms ) )\r
-                       {\r
-                               return null;\r
-                       }\r
-                       return chip3;\r
-               }\r
-               private CDTX.CChip r次にくるギターChipを更新して返す()\r
-               {\r
-                       this.r次にくるギターChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0x2f, 500 );\r
-                       return this.r次にくるギターChip;\r
-               }\r
-               private CDTX.CChip r次にくるベースChipを更新して返す()\r
+               //private CDTX.CChip r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( long nTime, int nChannelFlag, int nInputAdjustTime )\r
+               //{\r
+               //    nTime += nInputAdjustTime;                                                // #24239 2011.1.23 yyagi InputAdjust\r
+       \r
+               //    int num5;\r
+               //    if( this.n現在のトップChip == -1 )\r
+               //    {\r
+               //        return null;\r
+               //    }\r
+               //    int count = CDTXMania.DTX.listChip.Count;\r
+               //    int num4 = num5 = this.n現在のトップChip;\r
+               //    if( this.n現在のトップChip >= count )\r
+               //    {\r
+               //        num4 = num5 = count - 1;\r
+               //    }\r
+               //    int num2 = num4;\r
+               //    while( num2 < count )\r
+               //    {\r
+               //        CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];\r
+               //        if( ( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) ) && ( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) )\r
+               //        {\r
+               //            if( chip.n発声時刻ms > nTime )\r
+               //            {\r
+               //                break;\r
+               //            }\r
+               //            num5 = num2;\r
+               //        }\r
+               //        else if( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 0x28 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )\r
+               //        {\r
+               //            if( chip.n発声時刻ms > nTime )\r
+               //            {\r
+               //                break;\r
+               //            }\r
+               //            num5 = num2;\r
+               //        }\r
+               //        else if( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 0xa0 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) )\r
+               //        {\r
+               //            if( chip.n発声時刻ms > nTime )\r
+               //            {\r
+               //                break;\r
+               //            }\r
+               //            num5 = num2;\r
+               //        }\r
+               //        num2++;\r
+               //    }\r
+               //    int num3 = num5;\r
+               //    while( num3 >= 0 )\r
+               //    {\r
+               //        CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];\r
+               //        if( ( nChannelFlag >= 0x11 ) && ( nChannelFlag <= 0x1a ) )\r
+               //        {\r
+               //            if( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )\r
+               //            {\r
+               //                break;\r
+               //            }\r
+               //        }\r
+               //        else if( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) )\r
+               //        {\r
+               //            if( ( chip2.nチャンネル番号 >= 0x20 ) && ( chip2.nチャンネル番号 <= 0x28 ) )\r
+               //            {\r
+               //                break;\r
+               //            }\r
+               //        }\r
+               //        else if( ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 0xa0 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) && ( ( chip2.nチャンネル番号 >= 0xa0 ) && ( chip2.nチャンネル番号 <= 0xa8 ) ) )\r
+               //        {\r
+               //            break;\r
+               //        }\r
+               //        num3--;\r
+               //    }\r
+               //    if( ( num2 == count ) && ( num3 < 0 ) )\r
+               //    {\r
+               //        return null;\r
+               //    }\r
+               //    if( num2 == count )\r
+               //    {\r
+               //        return CDTXMania.DTX.listChip[ num3 ];\r
+               //    }\r
+               //    if( num3 < 0 )\r
+               //    {\r
+               //        return CDTXMania.DTX.listChip[ num2 ];\r
+               //    }\r
+               //    CDTX.CChip chip3 = CDTXMania.DTX.listChip[ num2 ];\r
+               //    CDTX.CChip chip4 = CDTXMania.DTX.listChip[ num3 ];\r
+               //    int num6 = Math.Abs( (int) ( nTime - chip3.n発声時刻ms ) );\r
+               //    int num7 = Math.Abs( (int) ( nTime - chip4.n発声時刻ms ) );\r
+               //    if( num6 >= num7 )\r
+               //    {\r
+               //        return chip4;\r
+               //    }\r
+               //    return chip3;\r
+               //}\r
+               private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime )\r
                {\r
-                       this.r次にくるベースChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0xaf, 500 );\r
-                       return this.r次にくるベースChip;\r
+                       return this.r指定時刻に一番近い未ヒットChip( nTime, nChannelFlag, nInputAdjustTime, 0 );\r
                }\r
+               //private CDTX.CChip r指定時刻に一番近い未ヒットChip( long nTime, int nChannelFlag, int nInputAdjustTime, int n検索範囲時間ms )\r
+               //{\r
+               //    nTime += nInputAdjustTime;\r
+\r
+               //    int num5;\r
+               //    int num6;\r
+               //    if( this.n現在のトップChip == -1 )\r
+               //    {\r
+               //        return null;\r
+               //    }\r
+               //    int count = CDTXMania.DTX.listChip.Count;\r
+               //    int num4 = num5 = this.n現在のトップChip;\r
+               //    if( this.n現在のトップChip >= count )\r
+               //    {\r
+               //        num4 = num5 = count - 1;\r
+               //    }\r
+               //    int num2 = num4;\r
+               //    while( num2 < count )\r
+               //    {\r
+               //        CDTX.CChip chip = CDTXMania.DTX.listChip[ num2 ];\r
+               //        if( ( !chip.bHit && ( nChannelFlag >= 0x11 ) ) && ( nChannelFlag <= 0x1a ) )\r
+               //        {\r
+               //            if( ( chip.nチャンネル番号 == nChannelFlag ) || ( chip.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) )\r
+               //            {\r
+               //                if( chip.n発声時刻ms > nTime )\r
+               //                {\r
+               //                    break;\r
+               //                }\r
+               //                num5 = num2;\r
+               //            }\r
+               //        }\r
+               //        else if( !chip.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )\r
+               //        {\r
+               //            if( chip.n発声時刻ms > nTime )\r
+               //            {\r
+               //                break;\r
+               //            }\r
+               //            num5 = num2;\r
+               //        }\r
+               //        else if( !chip.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannelFlag ) ) ) )\r
+               //        {\r
+               //            if( chip.n発声時刻ms > nTime )\r
+               //            {\r
+               //                break;\r
+               //            }\r
+               //            num5 = num2;\r
+               //        }\r
+               //        num2++;\r
+               //    }\r
+               //    int num3 = num5;\r
+               //    while( num3 >= 0 )\r
+               //    {\r
+               //        CDTX.CChip chip2 = CDTXMania.DTX.listChip[ num3 ];\r
+               //        if( ( ( ( !chip2.bHit && ( nChannelFlag >= 0x11 ) ) && ( ( nChannelFlag <= 0x1a ) && ( ( chip2.nチャンネル番号 == nChannelFlag ) || ( chip2.nチャンネル番号 == ( nChannelFlag + 0x20 ) ) ) ) ) || ( !chip2.bHit && ( ( ( nChannelFlag == 0x2f ) && ( chip2.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannelFlag >= 0x20 ) && ( nChannelFlag <= 40 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) ) ) || ( !chip2.bHit && ( ( ( nChannelFlag == 0xaf ) && ( chip2.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannelFlag >= 160 ) && ( nChannelFlag <= 0xa8 ) ) && ( chip2.nチャンネル番号 == nChannelFlag ) ) ) ) )\r
+               //        {\r
+               //            break;\r
+               //        }\r
+               //        num3--;\r
+               //    }\r
+               //    if( ( num2 == count ) && ( num3 < 0 ) )\r
+               //    {\r
+               //        return null;\r
+               //    }\r
+               //    CDTX.CChip chip3 = null;\r
+               //    if( num2 == count )\r
+               //    {\r
+               //        chip3 = CDTXMania.DTX.listChip[ num3 ];\r
+               //        num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
+               //    }\r
+               //    else if( num3 < 0 )\r
+               //    {\r
+               //        chip3 = CDTXMania.DTX.listChip[ num2 ];\r
+               //        num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
+               //    }\r
+               //    else\r
+               //    {\r
+               //        int num7 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
+               //        int num8 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
+               //        if( num7 < num8 )\r
+               //        {\r
+               //            chip3 = CDTXMania.DTX.listChip[ num2 ];\r
+               //            num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num2 ].n発声時刻ms ) );\r
+               //        }\r
+               //        else\r
+               //        {\r
+               //            chip3 = CDTXMania.DTX.listChip[ num3 ];\r
+               //            num6 = Math.Abs( (int) ( nTime - CDTXMania.DTX.listChip[ num3 ].n発声時刻ms ) );\r
+               //        }\r
+               //    }\r
+               //    if( ( n検索範囲時間ms > 0 ) && ( num6 > n検索範囲時間ms ) )\r
+               //    {\r
+               //        return null;\r
+               //    }\r
+               //    return chip3;\r
+               //}\r
+               //private CDTX.CChip r次にくるギターChipを更新して返す()\r
+               //{\r
+               //    int nInputAdjustTime = this.bIsAutoPlay.Guitar ? 0 : this.nInputAdjustTimeMs.Guitar;\r
+               //    this.r次にくるギターChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0x2f, nInputAdjustTime, 500 );\r
+               //    return this.r次にくるギターChip;\r
+               //}\r
+               //private CDTX.CChip r次にくるベースChipを更新して返す()\r
+               //{\r
+               //    int nInputAdjustTime = this.bIsAutoPlay.Bass? 0 : this.nInputAdjustTimeMs.Bass;\r
+               //    this.r次にくるベースChip = this.r指定時刻に一番近い未ヒットChip( CDTXMania.Timer.n現在時刻, 0xaf, nInputAdjustTime, 500 );\r
+               //    return this.r次にくるベースChip;\r
+               //}\r
                private void tサウンド再生( CDTX.CChip rChip, long n再生開始システム時刻ms, E楽器パート part )\r
                {\r
                        this.tサウンド再生( rChip, n再生開始システム時刻ms, part, CDTXMania.ConfigIni.n手動再生音量, false, false );\r
@@ -1135,7 +1141,7 @@ namespace DTXMania
                private E判定 tチップのヒット処理( long nHitTime, CDTX.CChip pChip )\r
                {\r
                        pChip.bHit = true;\r
-                       bool bIsAutoPlay = false;\r
+                       bool bPChipIsAutoPlay = false;\r
                        if( (\r
                                        ( ( pChip.e楽器パート == E楽器パート.DRUMS ) && CDTXMania.ConfigIni.bAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ) ||\r
                                        ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && CDTXMania.ConfigIni.bAutoPlay.Guitar )\r
@@ -1143,7 +1149,7 @@ namespace DTXMania
                                        ( ( pChip.e楽器パート == E楽器パート.BASS ) && CDTXMania.ConfigIni.bAutoPlay.Bass )\r
                          )\r
                        {\r
-                               bIsAutoPlay = true;\r
+                               bPChipIsAutoPlay = true;\r
                        }\r
                        else\r
                        {\r
@@ -1153,47 +1159,56 @@ namespace DTXMania
                        switch (pChip.e楽器パート)\r
                        {\r
                                case E楽器パート.DRUMS:\r
-                                       eJudgeResult = this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, bIsAutoPlay? 0 : this.nInputAdjustTimeMs_Drums);\r
-                                       this.actJudgeString.Start(this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11], bIsAutoPlay ? E判定.Auto : eJudgeResult);\r
+                                       {\r
+                                               int nInputAdjustTime = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ? 0 : this.nInputAdjustTimeMs.Drums;\r
+                                               eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
+                                               this.actJudgeString.Start( this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ], bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ? E判定.Auto : eJudgeResult, pChip.nLag );\r
+                                       }\r
                                        break;\r
 \r
                                case E楽器パート.GUITAR:\r
-                                       eJudgeResult = this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, bIsAutoPlay? 0 : this.nInputAdjustTimeMs_Guitar);\r
-                                       this.actJudgeString.Start(10, bIsAutoPlay ? E判定.Auto : eJudgeResult);\r
+                                       {\r
+                                               int nInputAdjustTime = bIsAutoPlay.Guitar ? 0 : this.nInputAdjustTimeMs.Guitar;\r
+                                               eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
+                                               this.actJudgeString.Start( 10, bIsAutoPlay.Guitar ? E判定.Auto : eJudgeResult, pChip.nLag );\r
+                                       }\r
                                        break;\r
 \r
                                case E楽器パート.BASS:\r
-                                       eJudgeResult = this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, bIsAutoPlay? 0 : this.nInputAdjustTimeMs_Bass);\r
-                                       this.actJudgeString.Start(11, bIsAutoPlay ? E判定.Auto : eJudgeResult);\r
+                                       {\r
+                                               int nInputAdjustTime = bIsAutoPlay.Bass ? 0 : this.nInputAdjustTimeMs.Bass;\r
+                                               eJudgeResult = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
+                                               this.actJudgeString.Start( 11, bIsAutoPlay.Bass ? E判定.Auto : eJudgeResult, pChip.nLag );\r
+                                       }\r
                                        break;\r
                        }\r
-                       if( !bIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) )\r
+                       if( !bPChipIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) )\r
                        {\r
-                               this.t判定にあわせてゲージを増減する( pChip.e楽器パート, eJudgeResult );\r
+                               this.t判定にあわせてゲージを増減する( E楽器パート.DRUMS, pChip.e楽器パート, eJudgeResult );\r
                        }\r
                        switch( pChip.e楽器パート )\r
                        {\r
                                case E楽器パート.DRUMS:\r
-                                       if ((eJudgeResult != E判定.Miss) && (eJudgeResult != E判定.Bad))\r
-                                       {\r
-                                               this.nヒット数・Auto含む.Drums[(int)eJudgeResult]++;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               this.nヒット数・Auto含む.Drums.Miss++;\r
-                                       }\r
-                                       if (!bIsAutoPlay)\r
+                                       switch ( eJudgeResult )\r
                                        {\r
-                                               switch (eJudgeResult)\r
-                                               {\r
-                                                       case E判定.Miss:\r
-                                                       case E判定.Bad:\r
+                                               case E判定.Miss:\r
+                                               case E判定.Bad:\r
+                                                       this.nヒット数・Auto含む.Drums.Miss++;\r
+                                                       if ( !bPChipIsAutoPlay )\r
+                                                       {\r
                                                                this.nヒット数・Auto含まない.Drums.Miss++;\r
-                                                               break;\r
-                                               }\r
-                                               this.nヒット数・Auto含まない.Drums[(int)eJudgeResult]++;\r
+                                                       }\r
+                                                       break;\r
+                                               default:\r
+                                                       this.nヒット数・Auto含む.Drums[ (int) eJudgeResult ]++;\r
+                                                       if ( !bPChipIsAutoPlay )\r
+                                                       {\r
+                                                               this.nヒット数・Auto含まない.Drums[ (int) eJudgeResult ]++;\r
+                                                       }\r
+                                                       break;\r
                                        }\r
-                                       if (CDTXMania.ConfigIni.bドラムが全部オートプレイである || !bIsAutoPlay)\r
+\r
+                                       if (CDTXMania.ConfigIni.bドラムが全部オートプレイである || !bPChipIsAutoPlay)\r
                                        {\r
                                                switch (eJudgeResult)\r
                                                {\r
@@ -1211,24 +1226,23 @@ namespace DTXMania
                                        break;\r
 \r
                                case E楽器パート.GUITAR:\r
-                                       if( ( eJudgeResult != E判定.Miss ) && ( eJudgeResult != E判定.Bad ) )\r
-                                       {\r
-                                               this.nヒット数・Auto含む.Guitar[(int)eJudgeResult]++;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               this.nヒット数・Auto含む.Guitar.Miss++;\r
-                                       }\r
-                                       if( !bIsAutoPlay )\r
+                                       switch( eJudgeResult )\r
                                        {\r
-                                               switch( eJudgeResult )\r
-                                               {\r
-                                                       case E判定.Miss:\r
-                                                       case E判定.Bad:\r
+                                               case E判定.Miss:\r
+                                               case E判定.Bad:\r
+                                                       this.nヒット数・Auto含む.Guitar.Miss++;\r
+                                                       if ( !bIsAutoPlay.Guitar )\r
+                                                       {\r
                                                                this.nヒット数・Auto含まない.Guitar.Miss++;\r
-                                                               break;\r
-                                               }\r
-                                               this.nヒット数・Auto含まない.Guitar[(int)eJudgeResult]++;\r
+                                                       }\r
+                               break;\r
+                                               default:    // #24068 2011.1.10 ikanick changed\r
+                                                       this.nヒット数・Auto含む.Guitar[ (int) eJudgeResult ]++;\r
+                                                       if ( !bIsAutoPlay.Guitar )\r
+                                                       {\r
+                                                               this.nヒット数・Auto含まない.Guitar[ (int) eJudgeResult ]++;\r
+                                                       }\r
+                                                       break;\r
                                        }\r
                                        switch (eJudgeResult)\r
                                        {\r
@@ -1245,25 +1259,25 @@ namespace DTXMania
                                        break;\r
 \r
                                case E楽器パート.BASS:\r
-                                       if( ( eJudgeResult != E判定.Miss ) && ( eJudgeResult != E判定.Bad ) )\r
-                                       {\r
-                                               this.nヒット数・Auto含む.Bass[(int)eJudgeResult]++;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               this.nヒット数・Auto含む.Bass.Miss++;\r
-                                       }\r
-                                       if( !bIsAutoPlay )\r
+                                       switch( eJudgeResult )\r
                                        {\r
-                                               switch( eJudgeResult )\r
-                                               {\r
-                                                       case E判定.Miss:\r
-                                                       case E判定.Bad:\r
+                                               case E判定.Miss:\r
+                                               case E判定.Bad:\r
+                                                       this.nヒット数・Auto含む.Bass.Miss++;\r
+                                                       if ( !bIsAutoPlay.Bass )\r
+                                                       {\r
                                                                this.nヒット数・Auto含まない.Bass.Miss++;\r
-                                                               break;\r
-                                               }\r
-                                               this.nヒット数・Auto含まない.Bass[(int)eJudgeResult]++;\r
+                                                       }\r
+                                                       break;\r
+                                               default:    // #24068 2011.1.10 ikanick changed\r
+                                                       this.nヒット数・Auto含む.Bass[ (int) eJudgeResult ]++;\r
+                                                       if ( !bIsAutoPlay.Bass )\r
+                                                       {\r
+                                                               this.nヒット数・Auto含まない.Bass[ (int) eJudgeResult ]++;\r
+                                                       }\r
+                                                       break;\r
                                        }\r
+\r
                                        switch( eJudgeResult )\r
                                        {\r
                                                case E判定.Perfect:\r
@@ -1281,7 +1295,7 @@ namespace DTXMania
                                default:\r
                                        break;\r
                        }\r
-                       if( ( !bIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) ) && ( ( eJudgeResult != E判定.Miss ) && ( eJudgeResult != E判定.Bad ) ) )\r
+                       if( ( !bPChipIsAutoPlay && ( pChip.e楽器パート != E楽器パート.UNKNOWN ) ) && ( ( eJudgeResult != E判定.Miss ) && ( eJudgeResult != E判定.Bad ) ) )\r
                        {\r
                                int nCombos = 0;\r
                                switch (pChip.e楽器パート) {\r
@@ -1307,7 +1321,10 @@ namespace DTXMania
                                }\r
                                this.actScore.Set( pChip.e楽器パート, nScore );\r
                        }\r
-                       return eJudgeResult;\r
+            // #24074 2011.01.23 add ikanick\r
+                       this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す( CDTXMania.DTX.n可視チップ数.Drums, this.nヒット数・Auto含まない.Drums.Perfect, this.nヒット数・Auto含まない.Drums.Great, this.nヒット数・Auto含まない.Drums.Good, this.nヒット数・Auto含まない.Drums.Poor, this.nヒット数・Auto含まない.Drums.Miss );\r
+\r
+            return eJudgeResult;\r
                }\r
                private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part )\r
                {\r
@@ -1316,24 +1333,24 @@ namespace DTXMania
                private void tチップのヒット処理・BadならびにTight時のMiss( E楽器パート part, int nLane )\r
                {\r
                        this.bAUTOでないチップが1つでもバーを通過した = true;\r
-                       this.t判定にあわせてゲージを増減する( part, E判定.Miss );\r
+                       this.t判定にあわせてゲージを増減する( E楽器パート.DRUMS, part, E判定.Miss );\r
                        switch( part )\r
                        {\r
                                case E楽器パート.DRUMS:\r
                                        if( ( nLane >= 0 ) && ( nLane <= 7 ) )\r
                                        {\r
-                                               this.actJudgeString.Start( nLane, CDTXMania.ConfigIni.bAutoPlay[ nLane ] ? E判定.Auto : E判定.Miss );\r
+                                               this.actJudgeString.Start( nLane, CDTXMania.ConfigIni.bAutoPlay[ nLane ] ? E判定.Auto : E判定.Miss, 999 );\r
                                        }\r
                                        this.actCOMBO.n現在のコンボ数.Drums = 0;\r
                                        return;\r
 \r
                                case E楽器パート.GUITAR:\r
-                                       this.actJudgeString.Start( 10, E判定.Bad );\r
+                                       this.actJudgeString.Start( 10, E判定.Bad, 999 );\r
                                        this.actCOMBO.n現在のコンボ数.Guitar = 0;\r
                                        return;\r
 \r
                                case E楽器パート.BASS:\r
-                                       this.actJudgeString.Start( 11, E判定.Bad );\r
+                                       this.actJudgeString.Start( 11, E判定.Bad, 999 );\r
                                        this.actCOMBO.n現在のコンボ数.Bass = 0;\r
                                        return;\r
                        }\r
@@ -1344,7 +1361,9 @@ namespace DTXMania
                        {\r
                                return false;\r
                        }\r
-                       E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTimeMs_Drums );\r
+                       bool bPChipIsAutoPlay = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ];\r
+                       int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Drums;\r
+                       E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
                        if( e判定 == E判定.Miss )\r
                        {\r
                                return false;\r
@@ -1405,7 +1424,7 @@ namespace DTXMania
                                        {\r
                                                hH = Eパッド.HH;\r
                                        }\r
-                                       rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nHitTime, this.nパッド0Atoチャンネル0A[ (int) hH ] );\r
+                                       rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nHitTime, this.nパッド0Atoチャンネル0A[ (int) hH ], nInputAdjustTime );\r
                                        if( rChip == null )\r
                                        {\r
                                                rChip = pChip;\r
@@ -1415,87 +1434,101 @@ namespace DTXMania
                        }\r
                        return true;\r
                }\r
-               private void tパネル文字列の設定()\r
+               //private void tパネル文字列の設定()\r
+               //{\r
+               //    this.actPanel.SetPanelString( string.IsNullOrEmpty( CDTXMania.DTX.PANEL ) ? CDTXMania.DTX.TITLE : CDTXMania.DTX.PANEL );\r
+               //}\r
+               //private void tキー入力()\r
+               //{\r
+               //    IInputDevice keyboard = CDTXMania.Input管理.Keyboard;\r
+               //    if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F1 ) &&\r
+               //        ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift) ) )\r
+               //    { // shift+f1 (pause)\r
+               //        this.bPAUSE = !this.bPAUSE;\r
+               //        if( this.bPAUSE )\r
+               //        {\r
+               //            CDTXMania.Timer.t一時停止();\r
+               //            CDTXMania.DTX.t全チップの再生一時停止();\r
+               //        }\r
+               //        else\r
+               //        {\r
+               //            CDTXMania.Timer.t再開();\r
+               //            CDTXMania.DTX.t全チップの再生再開();\r
+               //        }\r
+               //    }\r
+               //    if( ( !this.bPAUSE && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
+               //    {\r
+               //        this.t入力処理・ドラム();\r
+               //        this.t入力処理・ギター();\r
+               //        this.t入力処理・ベース();\r
+               //        if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.UpArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )\r
+               //        {     // shift + UpArrow (BGMAdjust)\r
+               //            CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl) ) ? 1 : 10 );\r
+               //            CDTXMania.DTX.tWave再生位置自動補正();\r
+               //        }\r
+               //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.DownArrow ) && ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightShift ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftShift ) ) )\r
+               //        {     // shift + DownArrow (BGMAdjust)\r
+               //            CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.LeftControl ) || keyboard.bキーが押されている( (int)SlimDX.DirectInput.Key.RightControl ) ) ? -1 : -10 );\r
+               //            CDTXMania.DTX.tWave再生位置自動補正();\r
+               //        }\r
+               //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.UpArrow ) )\r
+               //        {     // UpArrow(scrollspeed up)\r
+               //            CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1, 1999 );\r
+               //        }\r
+               //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.DownArrow ) )\r
+               //        {     // DownArrow (scrollspeed down)\r
+               //            CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Drums - 1, 0 );\r
+               //        }\r
+               //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Delete ) )\r
+               //        {     // del (debug info)\r
+               //            CDTXMania.ConfigIni.b演奏情報を表示する = !CDTXMania.ConfigIni.b演奏情報を表示する;\r
+               //        }\r
+               //        else if ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.LeftArrow ) )          // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
+               //        {\r
+               //            ChangeInputAdjustTimeInPlaying( keyboard, -1 );\r
+               //        }\r
+               //        else if ( keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.RightArrow ) )                // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
+               //        {\r
+               //            ChangeInputAdjustTimeInPlaying( keyboard, +1 );\r
+               //        }\r
+               //        else if ( ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) && ( keyboard.bキーが押された( (int)SlimDX.DirectInput.Key.Escape ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) ) )\r
+               //        {     // escape (exit)\r
+               //            this.actFO.tフェードアウト開始();\r
+               //            base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
+               //            this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.演奏中断;\r
+               //        }\r
+               //    }\r
+               //}\r
+\r
+               protected override void ドラムスクロール速度アップ()\r
                {\r
-                       this.actPanel.SetPanelString( string.IsNullOrEmpty( CDTXMania.DTX.PANEL ) ? CDTXMania.DTX.TITLE : CDTXMania.DTX.PANEL );\r
+                       CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1, 1999 );\r
                }\r
-               private void tキー入力()\r
+               protected override void ドラムスクロール速度ダウン()\r
                {\r
-                       IInputDevice keyboard = CDTXMania.Input管理.Keyboard;\r
-                       if( keyboard.bキーが押された( 0x36 ) && ( keyboard.bキーが押されている( 120 ) || keyboard.bキーが押されている( 0x4e ) ) )\r
-                       {\r
-                               this.bPAUSE = !this.bPAUSE;\r
-                               if( this.bPAUSE )\r
-                               {\r
-                                       CDTXMania.Timer.t一時停止();\r
-                                       CDTXMania.DTX.t全チップの再生一時停止();\r
-                               }\r
-                               else\r
-                               {\r
-                                       CDTXMania.Timer.t再開();\r
-                                       CDTXMania.DTX.t全チップの再生再開();\r
-                               }\r
-                       }\r
-                       if( ( !this.bPAUSE && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
-                       {\r
-                               this.t入力処理・ドラム();\r
-                               this.t入力処理・ギター();\r
-                               this.t入力処理・ベース();\r
-                               if( keyboard.bキーが押された( 0x84 ) && ( keyboard.bキーが押されている( 120 ) || keyboard.bキーが押されている( 0x4e ) ) )\r
-                               {\r
-                                       CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( 0x4b ) || keyboard.bキーが押されている( 0x74 ) ) ? 1 : 10 );\r
-                                       CDTXMania.DTX.tWave再生位置自動補正();\r
-                               }\r
-                               else if( keyboard.bキーが押された( 50 ) && ( keyboard.bキーが押されている( 120 ) || keyboard.bキーが押されている( 0x4e ) ) )\r
-                               {\r
-                                       CDTXMania.DTX.t各自動再生音チップの再生時刻を変更する( ( keyboard.bキーが押されている( 0x4b ) || keyboard.bキーが押されている( 0x74 ) ) ? -1 : -10 );\r
-                                       CDTXMania.DTX.tWave再生位置自動補正();\r
-                               }\r
-                               else if( keyboard.bキーが押された( 0x84 ) )\r
-                               {\r
-                                       CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Drums + 1, 0x7cf );\r
-                               }\r
-                               else if( keyboard.bキーが押された( 50 ) )\r
-                               {\r
-                                       CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Drums - 1, 0 );\r
-                               }\r
-                               else if( keyboard.bキーが押された( 0x31 ) )\r
-                               {\r
-                                       CDTXMania.ConfigIni.b演奏情報を表示する = !CDTXMania.ConfigIni.b演奏情報を表示する;\r
-                               }\r
-                               else if( ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) && ( keyboard.bキーが押された( 0x35 ) || CDTXMania.Pad.b押されたGB( Eパッド.FT ) ) )\r
-                               {\r
-                                       this.actFO.tフェードアウト開始();\r
-                                       base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
-                                       this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.演奏中断;\r
-                               }\r
-                       }\r
+                       CDTXMania.ConfigIni.n譜面スクロール速度.Drums = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Drums - 1, 0 );\r
                }\r
-               private void t進行描画・AVI()\r
+\r
+       \r
+               protected override void t進行描画・AVI()\r
                {\r
-                       if( ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( !CDTXMania.ConfigIni.bストイックモード && CDTXMania.ConfigIni.bAVI有効 ) )\r
-                       {\r
-                               this.actAVI.t進行描画( 0x152, 0x39 );\r
-                       }\r
+                       base.t進行描画・AVI( 0x152, 0x39 );\r
                }\r
-               private void t進行描画・BGA()\r
+               protected override void t進行描画・BGA()\r
                {\r
-                       if( ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( !CDTXMania.ConfigIni.bストイックモード && CDTXMania.ConfigIni.bBGA有効 ) )\r
-                       {\r
-                               this.actBGA.t進行描画( 0x152, 0x39 );\r
-                       }\r
+                       base.t進行描画・BGA( 0x152, 0x39 );\r
                }\r
                private void t進行描画・DANGER()\r
                {\r
-                       this.actDANGER.t進行描画( this.actGauge.db現在のゲージ値 < 0.3 );\r
-               }\r
-               private void t進行描画・MIDIBGM()\r
-               {\r
-                       if( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED )\r
-                       {\r
-                               CStage.Eフェーズ eフェーズid1 = base.eフェーズID;\r
-                       }\r
+                       this.actDANGER.t進行描画( this.actGauge.db現在のゲージ値.Drums < 0.3 );\r
                }\r
+               //private void t進行描画・MIDIBGM()\r
+               //{\r
+               //    if( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED )\r
+               //    {\r
+               //        CStage.Eフェーズ eフェーズid1 = base.eフェーズID;\r
+               //    }\r
+               //}\r
                private void t進行描画・RGBボタン()\r
                {\r
                        if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )\r
@@ -1503,35 +1536,28 @@ namespace DTXMania
                                this.actRGB.On進行描画();\r
                        }\r
                }\r
-               private void t進行描画・STAGEFAILED()\r
-               {\r
-                       if( ( ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( ( this.actStageFailed.On進行描画() != 0 ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )\r
-                       {\r
-                               this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;\r
-                               base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;\r
-                               this.actFO.tフェードアウト開始();\r
-                       }\r
-               }\r
-               private void t進行描画・WailingBonus()\r
+               //private void t進行描画・STAGEFAILED()\r
+               //{\r
+               //    if( ( ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED ) || ( base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) && ( ( this.actStageFailed.On進行描画() != 0 ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )\r
+               //    {\r
+               //        this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;\r
+               //        base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;\r
+               //        this.actFO.tフェードアウト開始();\r
+               //    }\r
+               //}\r
+               //private void t進行描画・WailingBonus()\r
+               //{\r
+               //    if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
+               //    {\r
+               //        this.actWailingBonus.On進行描画();\r
+               //    }\r
+               //}\r
+               protected override void t進行描画・Wailing枠()\r
                {\r
-                       if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
-                       {\r
-                               this.actWailingBonus.On進行描画();\r
-                       }\r
-               }\r
-               private void t進行描画・Wailing枠()\r
-               {\r
-                       if( ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) && CDTXMania.ConfigIni.bGuitar有効 )\r
-                       {\r
-                               if( CDTXMania.DTX.bチップがある.Guitar && ( this.txWailing枠 != null ) )\r
-                               {\r
-                                       this.txWailing枠.t2D描画( CDTXMania.app.Device, 0x24b, CDTXMania.ConfigIni.bReverse.Guitar ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45 );\r
-                               }\r
-                               if( CDTXMania.DTX.bチップがある.Bass && ( this.txWailing枠 != null ) )\r
-                               {\r
-                                       this.txWailing枠.t2D描画( CDTXMania.app.Device, 0x1de, CDTXMania.ConfigIni.bReverse.Bass ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45 );\r
-                               }\r
-                       }\r
+                       base.t進行描画・Wailing枠( 0x24b, 0x1de,\r
+                               CDTXMania.ConfigIni.bReverse.Guitar ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45,\r
+                               CDTXMania.ConfigIni.bReverse.Bass ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45\r
+                       );\r
                }\r
                private void t進行描画・ギターベースフレーム()\r
                {\r
@@ -1599,13 +1625,22 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               private void t進行描画・ゲージ()\r
-               {\r
-                       if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )\r
+               //private void t進行描画・ゲージ()\r
+               //{\r
+               //    if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )\r
+               //    {\r
+               //        this.actGauge.On進行描画();\r
+               //    }\r
+               //}\r
+        // #24074 2011.01.23 add ikanick\r
+        private void t進行描画・グラフ()        \r
+        {\r
+                       if ( !CDTXMania.ConfigIni.bストイックモード && !CDTXMania.ConfigIni.bドラムが全部オートプレイである && CDTXMania.ConfigIni.bGraph.Drums )\r
                        {\r
-                               this.actGauge.On進行描画();\r
-                       }\r
-               }\r
+                this.actGraph.On進行描画();\r
+            }\r
+        }\r
+        //------------------------------------------------\r
                private void t進行描画・コンボ()\r
                {\r
                        this.actCOMBO.On進行描画();\r
@@ -1660,7 +1695,7 @@ namespace DTXMania
                                        continue;\r
                                }\r
 \r
-                               bool bIsAutoPlay = false;\r
+                               bool bPChipIsAutoPlay = false;\r
                                if ((\r
                                                ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]]) ||\r
                                                ((pChip.e楽器パート == E楽器パート.GUITAR) && CDTXMania.ConfigIni.bAutoPlay.Guitar)\r
@@ -1669,11 +1704,11 @@ namespace DTXMania
                                  )\r
 //                             if ((pChip.e楽器パート == E楽器パート.DRUMS) && CDTXMania.ConfigIni.bAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]])\r
                                {\r
-                                       bIsAutoPlay = true;\r
+                                       bPChipIsAutoPlay = true;\r
                                }\r
 \r
                                int nInputAdjustTime = 0;\r
-                               if (bIsAutoPlay)\r
+                               if (bPChipIsAutoPlay)\r
                                {\r
                                        //nInputAdjustTime = 0;\r
                                }\r
@@ -1683,8 +1718,9 @@ namespace DTXMania
                                }\r
                                else\r
                                {\r
-                                       int[] nInputAdjustTimes = new int[] { this.nInputAdjustTimeMs_Drums, this.nInputAdjustTimeMs_Guitar, this.nInputAdjustTimeMs_Bass };\r
-                                       nInputAdjustTime = nInputAdjustTimes[(int)pChip.e楽器パート];\r
+                                       // int[] nInputAdjustTimes = new int[] { this.nInputAdjustTimeMs_Drums, this.nInputAdjustTimeMs_Guitar, this.nInputAdjustTimeMs_Bass };\r
+                                       // nInputAdjustTime = nInputAdjustTimes[(int)pChip.e楽器パート];\r
+                                       nInputAdjustTime = this.nInputAdjustTimeMs[(int)pChip.e楽器パート];\r
                                }\r
                                if( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) &&\r
                                        ( ( pChip.nバーからの距離dot.Drums < 0 ) && ( this.e指定時刻からChipのJUDGEを返す( CDTXMania.Timer.n現在時刻, pChip, nInputAdjustTime ) == E判定.Miss ) ) )\r
@@ -2550,41 +2586,38 @@ namespace DTXMania
                                this.actPad.On進行描画();\r
                        }\r
                }\r
-               private void t進行描画・パネル文字列()\r
-               {\r
-                       if( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) )\r
-                       {\r
-                               this.actPanel.t進行描画( 0x150, 0x1ab );\r
-                       }\r
-               }\r
-               private bool t進行描画・フェードイン・アウト()\r
+               protected override void t進行描画・パネル文字列()\r
                {\r
-                       switch( base.eフェーズID )\r
-                       {\r
-                               case CStage.Eフェーズ.共通_フェードイン:\r
-                                       if( this.actFI.On進行描画() != 0 )\r
-                                       {\r
-                                               base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
-                                       }\r
-                                       break;\r
-\r
-                               case CStage.Eフェーズ.共通_フェードアウト:\r
-                               case CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト:\r
-                                       if( this.actFO.On進行描画() != 0 )\r
-                                       {\r
-                                               return true;\r
-                                       }\r
-                                       break;\r
-\r
-                               case CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト:\r
-                                       if( this.actFOClear.On進行描画() == 0 )\r
-                                       {\r
-                                               break;\r
-                                       }\r
-                                       return true;\r
-                       }\r
-                       return false;\r
+                       base.t進行描画・パネル文字列( 0x150, 0x1ab );\r
                }\r
+               //private bool t進行描画・フェードイン・アウト()\r
+               //{\r
+               //    switch( base.eフェーズID )\r
+               //    {\r
+               //        case CStage.Eフェーズ.共通_フェードイン:\r
+               //            if( this.actFI.On進行描画() != 0 )\r
+               //            {\r
+               //                base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
+               //            }\r
+               //            break;\r
+\r
+               //        case CStage.Eフェーズ.共通_フェードアウト:\r
+               //        case CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト:\r
+               //            if( this.actFO.On進行描画() != 0 )\r
+               //            {\r
+               //                return true;\r
+               //            }\r
+               //            break;\r
+\r
+               //        case CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト:\r
+               //            if( this.actFOClear.On進行描画() == 0 )\r
+               //            {\r
+               //                break;\r
+               //            }\r
+               //            return true;\r
+               //    }\r
+               //    return false;\r
+               //}\r
                private void t進行描画・レーンフラッシュD()\r
                {\r
                        if( ( ( CDTXMania.ConfigIni.eDark != Eダークモード.HALF ) && ( CDTXMania.ConfigIni.eDark != Eダークモード.FULL ) ) && ( ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED ) && ( base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト ) ) )\r
@@ -2599,27 +2632,24 @@ namespace DTXMania
                                this.actLaneFlushGB.On進行描画();\r
                        }\r
                }\r
-               private void t進行描画・演奏情報()\r
-               {\r
-                       if( !CDTXMania.ConfigIni.b演奏情報を表示しない )\r
-                       {\r
-                               this.actPlayInfo.t進行描画( 0x152, 0x39 );\r
-                       }\r
-               }\r
-               private void t進行描画・背景()\r
+               protected override void t進行描画・演奏情報()\r
                {\r
-                       if( CDTXMania.ConfigIni.eDark == Eダークモード.OFF )\r
-                       {\r
-                               if( this.tx背景 != null )\r
-                               {\r
-                                       this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               CDTXMania.app.Device.Clear( ClearFlags.ZBuffer | ClearFlags.Target, Color.Black, 0f, 0 );\r
-                       }\r
+                       base.t進行描画・演奏情報( 0x152, 0x39 );\r
                }\r
+               //private void t進行描画・背景()\r
+               //{\r
+               //    if( CDTXMania.ConfigIni.eDark == Eダークモード.OFF )\r
+               //    {\r
+               //        if( this.tx背景 != null )\r
+               //        {\r
+               //            this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );\r
+               //        }\r
+               //    }\r
+               //    else\r
+               //    {\r
+               //        CDTXMania.app.Device.Clear( ClearFlags.ZBuffer | ClearFlags.Target, Color.Black, 0f, 0 );\r
+               //    }\r
+               //}\r
                private void t進行描画・判定ライン()\r
                {\r
                        if( CDTXMania.ConfigIni.eDark != Eダークモード.FULL )\r
@@ -2648,34 +2678,43 @@ namespace DTXMania
                                this.actJudgeString.On進行描画();\r
                        }\r
                }\r
-               private void t進行描画・譜面スクロール速度()\r
-               {\r
-                       this.act譜面スクロール速度.On進行描画();\r
-               }\r
-               private void t入力メソッド記憶( E楽器パート part )\r
+               //private void t進行描画・譜面スクロール速度()\r
+               //{\r
+               //    this.act譜面スクロール速度.On進行描画();\r
+               //}\r
+               //private void t入力メソッド記憶( E楽器パート part )\r
+               //{\r
+               //    if( CDTXMania.Pad.st検知したデバイス.Keyboard )\r
+               //    {\r
+               //        this.b演奏にキーボードを使った[ (int) part ] = true;\r
+               //    }\r
+               //    if( CDTXMania.Pad.st検知したデバイス.Joypad )\r
+               //    {\r
+               //        this.b演奏にジョイパッドを使った[ (int) part ] = true;\r
+               //    }\r
+               //    if( CDTXMania.Pad.st検知したデバイス.MIDIIN )\r
+               //    {\r
+               //        this.b演奏にMIDI入力を使った[ (int) part ] = true;\r
+               //    }\r
+               //    if( CDTXMania.Pad.st検知したデバイス.Mouse )\r
+               //    {\r
+               //        this.b演奏にマウスを使った[ (int) part ] = true;\r
+               //    }\r
+               //}\r
+               protected override void t入力処理・ギター()\r
                {\r
-                       if( CDTXMania.Pad.st検知したデバイス.Keyboard )\r
-                       {\r
-                               this.b演奏にキーボードを使った[ (int) part ] = true;\r
-                       }\r
-                       if( CDTXMania.Pad.st検知したデバイス.Joypad )\r
-                       {\r
-                               this.b演奏にジョイパッドを使った[ (int) part ] = true;\r
-                       }\r
-                       if( CDTXMania.Pad.st検知したデバイス.MIDIIN )\r
+                       if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.B ) )\r
                        {\r
-                               this.b演奏にMIDI入力を使った[ (int) part ] = true;\r
+                               CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1, 0x7cf );\r
                        }\r
-                       if( CDTXMania.Pad.st検知したデバイス.Mouse )\r
+                       if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.R ) )\r
                        {\r
-                               this.b演奏にマウスを使った[ (int) part ] = true;\r
+                               CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar - 1, 0 );\r
                        }\r
-               }\r
-               private void t入力処理・ギター()\r
-               {\r
-                       if( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Guitar )\r
+\r
+                       if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Guitar )\r
                        {\r
-                               if( CDTXMania.ConfigIni.bAutoPlay.Guitar )\r
+                               if ( bIsAutoPlay.Guitar )\r
                                {\r
                                        CDTX.CChip chip = this.r次にくるギターChipを更新して返す();\r
                                        if( chip != null )\r
@@ -2699,37 +2738,29 @@ namespace DTXMania
                                }\r
                                else\r
                                {\r
-                                       if( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.CY ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.BD ) )\r
-                                       {\r
-                                               CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1, 0x7cf );\r
-                                       }\r
-                                       if( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.CY ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.HH ) )\r
-                                       {\r
-                                               CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar - 1, 0 );\r
-                                       }\r
-                                       int num = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.HH ) ? 4 : 0;\r
+                                       int flagR = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.R) ? 4 : 0;\r
                                        this.t入力メソッド記憶( E楽器パート.GUITAR );\r
-                                       int num2 = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.SD ) ? 2 : 0;\r
+                                       int flagG = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.G ) ? 2 : 0;\r
                                        this.t入力メソッド記憶( E楽器パート.GUITAR );\r
-                                       int num3 = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.BD ) ? 1 : 0;\r
+                                       int flagB = CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.B ) ? 1 : 0;\r
                                        this.t入力メソッド記憶( E楽器パート.GUITAR );\r
-                                       int num4 = ( num | num2 ) | num3;\r
-                                       if( num != 0 )\r
+                                       int flagRGB =  flagR | flagG  | flagB;\r
+                                       if( flagR != 0 )\r
                                        {\r
                                                this.actLaneFlushGB.Start( 0 );\r
                                                this.actRGB.Push( 0 );\r
                                        }\r
-                                       if( num2 != 0 )\r
+                                       if( flagG != 0 )\r
                                        {\r
                                                this.actLaneFlushGB.Start( 1 );\r
                                                this.actRGB.Push( 1 );\r
                                        }\r
-                                       if( num3 != 0 )\r
+                                       if( flagB != 0 )\r
                                        {\r
                                                this.actLaneFlushGB.Start( 2 );\r
                                                this.actRGB.Push( 2 );\r
                                        }\r
-                                       List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.HT );\r
+                                       List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Pick );\r
                                        if( ( events != null ) && ( events.Count > 0 ) )\r
                                        {\r
                                                this.t入力メソッド記憶( E楽器パート.GUITAR );\r
@@ -2741,32 +2772,32 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                        long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
-                                                       CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0x2f );\r
-                                                       E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip, this.nInputAdjustTimeMs_Guitar );\r
-                                                       if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == num4 ) ) && ( e判定 != E判定.Miss ) )\r
+                                                       CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar );\r
+                                                       E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip, this.nInputAdjustTimeMs.Guitar );\r
+                                                       if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == flagRGB ) ) && ( e判定 != E判定.Miss ) )\r
                                                        {\r
-                                                               if( ( num != 0 ) || ( num4 == 0 ) )\r
+                                                               if( ( flagR != 0 ) || ( flagRGB == 0 ) )\r
                                                                {\r
                                                                        this.actChipFireGB.Start( 0 );\r
                                                                }\r
-                                                               if( ( num2 != 0 ) || ( num4 == 0 ) )\r
+                                                               if( ( flagG != 0 ) || ( flagRGB == 0 ) )\r
                                                                {\r
                                                                        this.actChipFireGB.Start( 1 );\r
                                                                }\r
-                                                               if( ( num3 != 0 ) || ( num4 == 0 ) )\r
+                                                               if( ( flagB != 0 ) || ( flagRGB == 0 ) )\r
                                                                {\r
                                                                        this.actChipFireGB.Start( 2 );\r
                                                                }\r
                                                                this.tチップのヒット処理( nTime, pChip );\r
                                                                this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, e判定 == E判定.Poor );\r
-                                                               CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 40, 140 );\r
+                                                               CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 40, this.nInputAdjustTimeMs.Guitar, 140 );\r
                                                                if( item != null )\r
                                                                {\r
                                                                        this.queWailing.Guitar.Enqueue( item );\r
                                                                }\r
                                                                continue;\r
                                                        }\r
-                                                       if( ( ( chip4 = this.r現在の空うちギターChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f ) ) != null ) )\r
+                                                       if( ( ( chip4 = this.r現在の空うちギターChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar ) ) != null ) )\r
                                                        {\r
                                                                this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );\r
                                                        }\r
@@ -2776,7 +2807,7 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                        }\r
-                                       List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.LT );\r
+                                       List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Wail );\r
                                        if( ( list2 != null ) && ( list2.Count > 0 ) )\r
                                        {\r
                                                foreach( STInputEvent event3 in list2 )\r
@@ -2789,13 +2820,14 @@ namespace DTXMania
                                                        long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
                                                        while( ( this.queWailing.Guitar.Count > 0 ) && ( ( chip5 = this.queWailing.Guitar.Dequeue() ) != null ) )\r
                                                        {\r
-                                                               if( ( num6 - chip5.n発声時刻ms ) <= 800 )\r
+                                                               if( ( num6 - chip5.n発声時刻ms ) <= 800 )           // #24245 2011.1.26 yyagi: 800 -> 1000\r
                                                                {\r
                                                                        chip5.bHit = true;\r
                                                                        this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );\r
-                                                                       if( !CDTXMania.ConfigIni.bAutoPlay.Guitar )\r
+                                                                       if( !bIsAutoPlay.Guitar )\r
                                                                        {\r
-                                                                               this.actScore.Set( E楽器パート.GUITAR, this.actScore.Get( E楽器パート.GUITAR ) + ( this.actCOMBO.n現在のコンボ数.Guitar * 0xbb8L ) );\r
+                                                                               int nCombo = ( this.actCOMBO.n現在のコンボ数.Guitar < 500 ) ? this.actCOMBO.n現在のコンボ数.Guitar : 500;\r
+                                                                               this.actScore.Set( E楽器パート.GUITAR, this.actScore.Get( E楽器パート.GUITAR ) + ( nCombo * 3000L ) );                // #24245 2011.1.26 yyagi changed DRUMS->GUITAR, add nCombo conditions\r
                                                                        }\r
                                                                }\r
                                                        }\r
@@ -2804,7 +2836,7 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               private void t入力処理・ドラム()\r
+               protected override void t入力処理・ドラム()\r
                {\r
                        for( int nPad = 0; nPad < 10; nPad++ )\r
                        {\r
@@ -2867,6 +2899,8 @@ namespace DTXMania
                                                        continue;\r
 \r
                                                long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
+                                               int nInputAdjustTime = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ (int)nPad ] ] ? 0 : nInputAdjustTimeMs.Drums;\r
+\r
                                                bool flag = false;\r
 \r
 \r
@@ -2877,223 +2911,225 @@ namespace DTXMania
                                                        case Eパッド.HH:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               if( event2.nVelocity <= CDTXMania.ConfigIni.nハイハット切り捨て下限Velocity )\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-\r
-                                                               CDTX.CChip chip1 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11 );    // HiHat Close\r
-                                                               CDTX.CChip chip2 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18 );    // HiHat Open\r
-                                                               CDTX.CChip chip3 = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a );    // LC\r
-                                                               E判定 e判定1 = (chip1 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip1, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               E判定 e判定2 = (chip2 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip2, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               E判定 e判定3 = (chip3 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip3, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               switch( eHHGroup )\r
                                                                {\r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                               #region [ *** ]\r
-                                                                               //-----------------------------\r
-                                                                               if( ( e判定1 != E判定.Miss ) && ( e判定3 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip1.n発声位置 < chip3.n発声位置 )\r
-                                                                                       {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
-                                                                                       }\r
-                                                                                       else if( chip1.n発声位置 > chip3.n発声位置 )\r
-                                                                                       {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );\r
-                                                                                       }\r
-                                                                                       else\r
-                                                                                       {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );\r
-                                                                                       }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定1 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定3 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               if( !flag )\r
-                                                                                       break;\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                               #endregion\r
+                                                                       if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )\r
+                                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
 \r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                               #region [ *** ]\r
-                                                                               //-----------------------------\r
-                                                                               if( ( e判定1 != E判定.Miss ) && ( e判定2 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip1.n発声位置 < chip2.n発声位置 )\r
+                                                                       CDTX.CChip chipHC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11, nInputAdjustTime ); // HiHat Close\r
+                                                                       CDTX.CChip chipHO = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18, nInputAdjustTime ); // HiHat Open\r
+                                                                       CDTX.CChip chipLC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ); // LC\r
+                                                                       E判定 e判定HC = ( chipHC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHC, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定HO = ( chipHO != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHO, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       switch ( eHHGroup )\r
+                                                                       {\r
+                                                                               case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                                       #region [ *** ]\r
+                                                                                       //-----------------------------\r
+                                                                                       if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
+                                                                                               if ( chipHC.n発声位置 < chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHC.n発声位置 > chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip1.n発声位置 > chip2.n発声位置 )\r
+                                                                                       else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       else if ( e判定LC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定1 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定2 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               if( !flag )\r
-                                                                                       break;\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                               #endregion\r
-\r
-                                                                       case EHHGroup.全部共通:\r
-                                                                               #region [ *** ]\r
+                                                                                       if ( !flag )\r
+                                                                                               break;\r
+                                                                                       continue;\r
                                                                                //-----------------------------\r
-                                                                               if( ( ( e判定1 != E判定.Miss ) && ( e判定2 != E判定.Miss ) ) && ( e判定3 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       CDTX.CChip chip4;\r
-                                                                                       CDTX.CChip[] chipArray = new CDTX.CChip[] { chip1, chip2, chip3 };\r
-                                                                                       if( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
-                                                                                       {\r
-                                                                                               chip4 = chipArray[ 1 ];\r
-                                                                                               chipArray[ 1 ] = chipArray[ 2 ];\r
-                                                                                               chipArray[ 2 ] = chip4;\r
-                                                                                       }\r
-                                                                                       if( chipArray[ 0 ].n発声位置 > chipArray[ 1 ].n発声位置 )\r
-                                                                                       {\r
-                                                                                               chip4 = chipArray[ 0 ];\r
-                                                                                               chipArray[ 0 ] = chipArray[ 1 ];\r
-                                                                                               chipArray[ 1 ] = chip4;\r
-                                                                                       }\r
-                                                                                       if( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
-                                                                                       {\r
-                                                                                               chip4 = chipArray[ 1 ];\r
-                                                                                               chipArray[ 1 ] = chipArray[ 2 ];\r
-                                                                                               chipArray[ 2 ] = chip4;\r
-                                                                                       }\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 0 ], event2.nVelocity );\r
-                                                                                       if( chipArray[ 0 ].n発声位置 == chipArray[ 1 ].n発声位置 )\r
+                                                                                       #endregion\r
+\r
+                                                                               case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       #region [ *** ]\r
+                                                                                       //-----------------------------\r
+                                                                                       if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 1 ], event2.nVelocity );\r
+                                                                                               if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHC.n発声位置 > chipHO.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       if( chipArray[ 0 ].n発声位置 == chipArray[ 2 ].n発声位置 )\r
+                                                                                       else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 2 ], event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( ( e判定1 != E判定.Miss ) && ( e判定2 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip1.n発声位置 < chip2.n発声位置 )\r
+                                                                                       else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip1.n発声位置 > chip2.n発声位置 )\r
+                                                                                       if ( !flag )\r
+                                                                                               break;\r
+                                                                                       continue;\r
+                                                                               //-----------------------------\r
+                                                                                       #endregion\r
+\r
+                                                                               case EHHGroup.全部共通:\r
+                                                                                       #region [ *** ]\r
+                                                                                       //-----------------------------\r
+                                                                                       if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );\r
+                                                                                               CDTX.CChip chip4;\r
+                                                                                               CDTX.CChip[] chipArray = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
+                                                                                               if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       chip4 = chipArray[ 1 ];\r
+                                                                                                       chipArray[ 1 ] = chipArray[ 2 ];\r
+                                                                                                       chipArray[ 2 ] = chip4;\r
+                                                                                               }\r
+                                                                                               if ( chipArray[ 0 ].n発声位置 > chipArray[ 1 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       chip4 = chipArray[ 0 ];\r
+                                                                                                       chipArray[ 0 ] = chipArray[ 1 ];\r
+                                                                                                       chipArray[ 1 ] = chip4;\r
+                                                                                               }\r
+                                                                                               if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       chip4 = chipArray[ 1 ];\r
+                                                                                                       chipArray[ 1 ] = chipArray[ 2 ];\r
+                                                                                                       chipArray[ 2 ] = chip4;\r
+                                                                                               }\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 0 ], event2.nVelocity );\r
+                                                                                               if ( chipArray[ 0 ].n発声位置 == chipArray[ 1 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 1 ], event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               if ( chipArray[ 0 ].n発声位置 == chipArray[ 2 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 2 ], event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );\r
+                                                                                               if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHC.n発声位置 > chipHO.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( ( e判定1 != E判定.Miss ) && ( e判定3 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip1.n発声位置 < chip3.n発声位置 )\r
+                                                                                       else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
+                                                                                               if ( chipHC.n発声位置 < chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHC.n発声位置 > chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip1.n発声位置 > chip3.n発声位置 )\r
+                                                                                       else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );\r
+                                                                                               if ( chipHO.n発声位置 < chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHO.n発声位置 > chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( ( e判定2 != E判定.Miss ) && ( e判定3 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip2.n発声位置 < chip3.n発声位置 )\r
+                                                                                       else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip2.n発声位置 > chip3.n発声位置 )\r
+                                                                                       else if ( e判定LC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       if ( !flag )\r
+                                                                                               break;\r
+                                                                                       continue;\r
+                                                                               //-----------------------------\r
+                                                                                       #endregion\r
+\r
+                                                                               default:\r
+                                                                                       #region [ *** ]\r
+                                                                                       //-----------------------------\r
+                                                                                       if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定1 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定2 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chip2, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定3 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chip3, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               if( !flag )\r
-                                                                                       break;\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                               #endregion\r
-\r
-                                                                       default:\r
-                                                                               #region [ *** ]\r
+                                                                                       if ( !flag )\r
+                                                                                               break;\r
+                                                                                       continue;\r
                                                                                //-----------------------------\r
-                                                                               if( e判定1 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HH, chip1, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               if( !flag )\r
-                                                                                       break;\r
-                                                                               continue;\r
-                                                                       //-----------------------------\r
-                                                                               #endregion\r
+                                                                                       #endregion\r
+                                                                       }\r
+                                                                       if ( !flag )\r
+                                                                               break;\r
+                                                                       continue;\r
                                                                }\r
-                                                               if( !flag )\r
-                                                                       break;\r
-                                                               continue;\r
                                                        //-----------------------------\r
                                                                #endregion\r
 \r
                                                        case Eパッド.SD:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               if (event2.nVelocity <= CDTXMania.ConfigIni.n切り捨て下限Velocity)        // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                               if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.SD)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
                                                                        continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               if( !this.tドラムヒット処理(nTime, Eパッド.SD, this.r指定時刻に一番近い未ヒットChip(nTime, 0x12), event2.nVelocity ) )\r
+                                                               if( !this.tドラムヒット処理(nTime, Eパッド.SD, this.r指定時刻に一番近い未ヒットChip(nTime, 0x12, nInputAdjustTime ), event2.nVelocity ) )\r
                                                                        break;\r
                                                                continue;\r
                                                        //-----------------------------\r
@@ -3102,9 +3138,9 @@ namespace DTXMania
                                                        case Eパッド.BD:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               if (event2.nVelocity <= CDTXMania.ConfigIni.n切り捨て下限Velocity)        // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                               if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.BD)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
                                                                        continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               if( !this.tドラムヒット処理(nTime, Eパッド.BD, this.r指定時刻に一番近い未ヒットChip(nTime, 0x13), event2.nVelocity ) )\r
+                                                               if ( !this.tドラムヒット処理( nTime, Eパッド.BD, this.r指定時刻に一番近い未ヒットChip( nTime, 0x13, nInputAdjustTime ), event2.nVelocity ) )\r
                                                                        break;\r
                                                                continue;\r
                                                        //-----------------------------\r
@@ -3113,9 +3149,9 @@ namespace DTXMania
                                                        case Eパッド.HT:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               if (event2.nVelocity <= CDTXMania.ConfigIni.n切り捨て下限Velocity)        // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                               if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HT)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
                                                                        continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               if( this.tドラムヒット処理( nTime, Eパッド.HT, this.r指定時刻に一番近い未ヒットChip( nTime, 20 ), event2.nVelocity ) )\r
+                                                               if ( this.tドラムヒット処理( nTime, Eパッド.HT, this.r指定時刻に一番近い未ヒットChip( nTime, 20, nInputAdjustTime ), event2.nVelocity ) )\r
                                                                        continue;\r
                                                                break;\r
                                                        //-----------------------------\r
@@ -3124,126 +3160,130 @@ namespace DTXMania
                                                        case Eパッド.LT:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               if (event2.nVelocity <= CDTXMania.ConfigIni.n切り捨て下限Velocity)        // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CDTX.CChip chip15 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x15);     // LT\r
-                                                               CDTX.CChip chip16 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x17);     // FT\r
-                                                               E判定 e判定13 = (chip15 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip15, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               E判定 e判定14 = (chip16 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip16, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               switch( eFTGroup )\r
                                                                {\r
-                                                                       case EFTGroup.打ち分ける:\r
-                                                                               #region [ *** ]\r
+                                                                       if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LT )  // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                                       CDTX.CChip chipLT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x15, nInputAdjustTime ); // LT\r
+                                                                       CDTX.CChip chipFT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x17, nInputAdjustTime ); // FT\r
+                                                                       E判定 e判定LT = ( chipLT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLT, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定FT = ( chipFT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipFT, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       switch ( eFTGroup )\r
+                                                                       {\r
+                                                                               case EFTGroup.打ち分ける:\r
+                                                                                       #region [ *** ]\r
+                                                                                       //-----------------------------\r
+                                                                                       if ( e判定LT != E判定.Miss )\r
+                                                                                       {\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
+                                                                                               flag = true;\r
+                                                                                       }\r
+                                                                                       break;\r
                                                                                //-----------------------------\r
-                                                                               if( e判定13 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.LT, chip15, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               break;\r
-                                                                       //-----------------------------\r
-                                                                               #endregion\r
+                                                                                       #endregion\r
 \r
-                                                                       case EFTGroup.共通:\r
-                                                                               #region [ *** ]\r
-                                                                               //-----------------------------\r
-                                                                               if( ( e判定13 != E判定.Miss ) && ( e判定14 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip15.n発声位置 < chip16.n発声位置 )\r
+                                                                               case EFTGroup.共通:\r
+                                                                                       #region [ *** ]\r
+                                                                                       //-----------------------------\r
+                                                                                       if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.LT, chip15, event2.nVelocity );\r
+                                                                                               if ( chipLT.n発声位置 < chipFT.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipLT.n発声位置 > chipFT.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip15.n発声位置 > chip16.n発声位置 )\r
+                                                                                       else if ( e判定LT != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.LT, chip16, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       else if ( e判定FT != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.LT, chip15, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.LT, chip16, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定13 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.LT, chip15, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定14 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.LT, chip16, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
+                                                                                       break;\r
+                                                                               //-----------------------------\r
+                                                                                       #endregion\r
+                                                                       }\r
+                                                                       if ( !flag )\r
                                                                                break;\r
-                                                                       //-----------------------------\r
-                                                                               #endregion\r
+                                                                       continue;\r
                                                                }\r
-                                                               if( !flag )\r
-                                                                       break;\r
-                                                               continue;\r
                                                        //-----------------------------\r
                                                                #endregion\r
 \r
                                                        case Eパッド.FT:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               if (event2.nVelocity <= CDTXMania.ConfigIni.n切り捨て下限Velocity)        // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CDTX.CChip chip17 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x15);\r
-                                                               CDTX.CChip chip18 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x17);\r
-                                                               E判定 e判定15 = (chip17 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip17, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               E判定 e判定16 = (chip18 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip18, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               switch( eFTGroup )\r
                                                                {\r
-                                                                       case EFTGroup.打ち分ける:\r
-                                                                               #region [ *** ]\r
-                                                                               //-----------------------------\r
-                                                                               if( e判定16 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.FT, chip18, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               //-----------------------------\r
-                                                                               #endregion\r
-                                                                               break;\r
+                                                                       if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.FT )  // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                                       CDTX.CChip chipLT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x15, nInputAdjustTime ); // LT\r
+                                                                       CDTX.CChip chipFT = this.r指定時刻に一番近い未ヒットChip( nTime, 0x17, nInputAdjustTime ); // FT\r
+                                                                       E判定 e判定LT = ( chipLT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLT, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定FT = ( chipFT != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipFT, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       switch ( eFTGroup )\r
+                                                                       {\r
+                                                                               case EFTGroup.打ち分ける:\r
+                                                                                       #region [ *** ]\r
+                                                                                       //-----------------------------\r
+                                                                                       if ( e判定FT != E判定.Miss )\r
+                                                                                       {\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
+                                                                                               flag = true;\r
+                                                                                       }\r
+                                                                                       //-----------------------------\r
+                                                                                       #endregion\r
+                                                                                       break;\r
 \r
-                                                                       case EFTGroup.共通:\r
-                                                                               #region [ *** ]\r
-                                                                               //-----------------------------\r
-                                                                               if( ( e判定15 != E判定.Miss ) && ( e判定16 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip17.n発声位置 < chip18.n発声位置 )\r
+                                                                               case EFTGroup.共通:\r
+                                                                                       #region [ *** ]\r
+                                                                                       //-----------------------------\r
+                                                                                       if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.FT, chip17, event2.nVelocity );\r
+                                                                                               if ( chipLT.n発声位置 < chipFT.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipLT.n発声位置 > chipFT.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip17.n発声位置 > chip18.n発声位置 )\r
+                                                                                       else if ( e判定LT != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.FT, chip18, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       else if ( e判定FT != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.FT, chip17, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.FT, chip18, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定15 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.FT, chip17, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定16 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.FT, chip18, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               //-----------------------------\r
-                                                                               #endregion\r
+                                                                                       //-----------------------------\r
+                                                                                       #endregion\r
+                                                                                       break;\r
+                                                                       }\r
+                                                                       if ( !flag )\r
                                                                                break;\r
+                                                                       continue;\r
                                                                }\r
-                                                               if( !flag )\r
-                                                                       break;\r
-                                                               continue;\r
                                                        //-----------------------------\r
                                                                #endregion\r
 \r
@@ -3251,16 +3291,16 @@ namespace DTXMania
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
                                                                {\r
-                                                                       if (event2.nVelocity <= CDTXMania.ConfigIni.n切り捨て下限Velocity)        // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.CY)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
                                                                                continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                                       CDTX.CChip chip19 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x16);\r
-                                                                       CDTX.CChip chip20 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x19);\r
-                                                                       CDTX.CChip chip21 = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, 0x1a) : null;\r
-                                                                       E判定 e判定17 = ( chip19 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip19, this.nInputAdjustTimeMs_Drums ) : E判定.Miss;\r
-                                                                       E判定 e判定18 = ( chip20 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip20, this.nInputAdjustTimeMs_Drums ) : E判定.Miss;\r
-                                                                       E判定 e判定19 = ( chip21 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip21, this.nInputAdjustTimeMs_Drums ) : E判定.Miss;\r
-                                                                       CDTX.CChip[] chipArray4 = new CDTX.CChip[] { chip19, chip20, chip21 };\r
-                                                                       E判定[] e判定Array2 = new E判定[] { e判定17, e判定18, e判定19 };\r
+                                                                       CDTX.CChip chipCY = this.r指定時刻に一番近い未ヒットChip( nTime, 0x16, nInputAdjustTime ); // CY\r
+                                                                       CDTX.CChip chipRD = this.r指定時刻に一番近い未ヒットChip( nTime, 0x19, nInputAdjustTime ); // RD\r
+                                                                       CDTX.CChip chipLC = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ) : null;\r
+                                                                       E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       CDTX.CChip[] chipArray4 = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
+                                                                       E判定[] e判定Array2 = new E判定[] { e判定CY, e判定RD, e判定LC };\r
                                                                        num8 = 0;\r
                                                                        while( num8 < 2 )\r
                                                                        {\r
@@ -3285,9 +3325,9 @@ namespace DTXMania
                                                                                case ECYGroup.打ち分ける:\r
                                                                                        if( !CDTXMania.ConfigIni.bシンバルフリー )\r
                                                                                        {\r
-                                                                                               if( e判定17 != E判定.Miss )\r
+                                                                                               if( e判定CY != E判定.Miss )\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理( nTime, Eパッド.CY, chip19, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );\r
                                                                                                        flag = true;\r
                                                                                                }\r
                                                                                                if( !flag )\r
@@ -3297,7 +3337,7 @@ namespace DTXMania
                                                                                        num10 = 0;\r
                                                                                        while( num10 < 3 )\r
                                                                                        {\r
-                                                                                               if( ( e判定Array2[ num10 ] != E判定.Miss ) && ( ( chipArray4[ num10 ] == chip19 ) || ( chipArray4[ num10 ] == chip21 ) ) )\r
+                                                                                               if( ( e判定Array2[ num10 ] != E判定.Miss ) && ( ( chipArray4[ num10 ] == chipCY ) || ( chipArray4[ num10 ] == chipLC ) ) )\r
                                                                                                {\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num10 ], event2.nVelocity );\r
                                                                                                        flag = true;\r
@@ -3305,9 +3345,9 @@ namespace DTXMania
                                                                                                }\r
                                                                                                num10++;\r
                                                                                        }\r
-                                                                                       if( e判定17 != E判定.Miss )\r
+                                                                                       if( e判定CY != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.CY, chip19, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );\r
                                                                                                flag = true;\r
                                                                                        }\r
                                                                                        if( !flag )\r
@@ -3320,7 +3360,7 @@ namespace DTXMania
                                                                                                num12 = 0;\r
                                                                                                while( num12 < 3 )\r
                                                                                                {\r
-                                                                                                       if( ( e判定Array2[ num12 ] != E判定.Miss ) && ( ( chipArray4[ num12 ] == chip19 ) || ( chipArray4[ num12 ] == chip20 ) ) )\r
+                                                                                                       if( ( e判定Array2[ num12 ] != E判定.Miss ) && ( ( chipArray4[ num12 ] == chipCY ) || ( chipArray4[ num12 ] == chipRD ) ) )\r
                                                                                                        {\r
                                                                                                                this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num12 ], event2.nVelocity );\r
                                                                                                                flag = true;\r
@@ -3357,198 +3397,200 @@ namespace DTXMania
                                                        case Eパッド.HHO:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               if( event2.nVelocity <= CDTXMania.ConfigIni.nハイハット切り捨て下限Velocity )\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-\r
-                                                               CDTX.CChip chip5 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x11);\r
-                                                               CDTX.CChip chip6 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x18);\r
-                                                               CDTX.CChip chip7 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x1a);\r
-                                                               E判定 e判定4 = (chip5 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip5, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               E判定 e判定5 = (chip6 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip6, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               E判定 e判定6 = (chip7 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip7, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                               switch( eHHGroup )\r
                                                                {\r
-                                                                       case EHHGroup.全部打ち分ける:\r
-                                                                               if( e判定5 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               if( !flag )\r
-                                                                                       break;\r
-                                                                               continue;\r
+                                                                       if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )\r
+                                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
 \r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                               if( ( e判定5 != E判定.Miss ) && ( e判定6 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip6.n発声位置 < chip7.n発声位置 )\r
-                                                                                       {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
-                                                                                       }\r
-                                                                                       else if( chip6.n発声位置 > chip7.n発声位置 )\r
-                                                                                       {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );\r
-                                                                                       }\r
-                                                                                       else\r
+                                                                       CDTX.CChip chipHC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11, nInputAdjustTime ); // HC\r
+                                                                       CDTX.CChip chipHO = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18, nInputAdjustTime ); // HO\r
+                                                                       CDTX.CChip chipLC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ); // LC\r
+                                                                       E判定 e判定HC = ( chipHC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHC, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定HO = ( chipHO != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHO, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       switch ( eHHGroup )\r
+                                                                       {\r
+                                                                               case EHHGroup.全部打ち分ける:\r
+                                                                                       if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定5 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定6 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               if( !flag )\r
-                                                                                       break;\r
-                                                                               continue;\r
+                                                                                       if ( !flag )\r
+                                                                                               break;\r
+                                                                                       continue;\r
 \r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                               if( ( e判定4 != E判定.Miss ) && ( e判定5 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip5.n発声位置 < chip6.n発声位置 )\r
+                                                                               case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                                       if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );\r
+                                                                                               if ( chipHO.n発声位置 < chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHO.n発声位置 > chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip5.n発声位置 > chip6.n発声位置 )\r
+                                                                                       else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       else if ( e判定LC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定4 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定5 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               if( !flag )\r
-                                                                                       break;\r
-                                                                               continue;\r
+                                                                                       if ( !flag )\r
+                                                                                               break;\r
+                                                                                       continue;\r
 \r
-                                                                       case EHHGroup.全部共通:\r
-                                                                               if( ( ( e判定4 != E判定.Miss ) && ( e判定5 != E判定.Miss ) ) && ( e判定6 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       CDTX.CChip chip8;\r
-                                                                                       CDTX.CChip[] chipArray2 = new CDTX.CChip[] { chip5, chip6, chip7 };\r
-                                                                                       if( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
-                                                                                       {\r
-                                                                                               chip8 = chipArray2[ 1 ];\r
-                                                                                               chipArray2[ 1 ] = chipArray2[ 2 ];\r
-                                                                                               chipArray2[ 2 ] = chip8;\r
-                                                                                       }\r
-                                                                                       if( chipArray2[ 0 ].n発声位置 > chipArray2[ 1 ].n発声位置 )\r
-                                                                                       {\r
-                                                                                               chip8 = chipArray2[ 0 ];\r
-                                                                                               chipArray2[ 0 ] = chipArray2[ 1 ];\r
-                                                                                               chipArray2[ 1 ] = chip8;\r
-                                                                                       }\r
-                                                                                       if( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
-                                                                                       {\r
-                                                                                               chip8 = chipArray2[ 1 ];\r
-                                                                                               chipArray2[ 1 ] = chipArray2[ 2 ];\r
-                                                                                               chipArray2[ 2 ] = chip8;\r
-                                                                                       }\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 0 ], event2.nVelocity );\r
-                                                                                       if( chipArray2[ 0 ].n発声位置 == chipArray2[ 1 ].n発声位置 )\r
-                                                                                       {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 1 ], event2.nVelocity );\r
-                                                                                       }\r
-                                                                                       if( chipArray2[ 0 ].n発声位置 == chipArray2[ 2 ].n発声位置 )\r
+                                                                               case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 2 ], event2.nVelocity );\r
+                                                                                               if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHC.n発声位置 > chipHO.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( ( e判定4 != E判定.Miss ) && ( e判定5 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip5.n発声位置 < chip6.n発声位置 )\r
+                                                                                       else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip5.n発声位置 > chip6.n発声位置 )\r
+                                                                                       else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       if ( !flag )\r
+                                                                                               break;\r
+                                                                                       continue;\r
+\r
+                                                                               case EHHGroup.全部共通:\r
+                                                                                       if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
+                                                                                               CDTX.CChip chip8;\r
+                                                                                               CDTX.CChip[] chipArray2 = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
+                                                                                               if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       chip8 = chipArray2[ 1 ];\r
+                                                                                                       chipArray2[ 1 ] = chipArray2[ 2 ];\r
+                                                                                                       chipArray2[ 2 ] = chip8;\r
+                                                                                               }\r
+                                                                                               if ( chipArray2[ 0 ].n発声位置 > chipArray2[ 1 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       chip8 = chipArray2[ 0 ];\r
+                                                                                                       chipArray2[ 0 ] = chipArray2[ 1 ];\r
+                                                                                                       chipArray2[ 1 ] = chip8;\r
+                                                                                               }\r
+                                                                                               if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       chip8 = chipArray2[ 1 ];\r
+                                                                                                       chipArray2[ 1 ] = chipArray2[ 2 ];\r
+                                                                                                       chipArray2[ 2 ] = chip8;\r
+                                                                                               }\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 0 ], event2.nVelocity );\r
+                                                                                               if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 1 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 1 ], event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 2 ].n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 2 ], event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( ( e判定4 != E判定.Miss ) && ( e判定6 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip5.n発声位置 < chip7.n発声位置 )\r
+                                                                                       else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );\r
+                                                                                               if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHC.n発声位置 > chipHO.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip5.n発声位置 > chip7.n発声位置 )\r
+                                                                                       else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );\r
+                                                                                               if ( chipHC.n発声位置 < chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHC.n発声位置 > chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );\r
+                                                                                               if ( chipHO.n発声位置 < chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else if ( chipHO.n発声位置 > chipLC.n発声位置 )\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               else\r
+                                                                                               {\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
+                                                                                               }\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( ( e判定5 != E判定.Miss ) && ( e判定6 != E判定.Miss ) )\r
-                                                                               {\r
-                                                                                       if( chip6.n発声位置 < chip7.n発声位置 )\r
+                                                                                       else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else if( chip6.n発声位置 > chip7.n発声位置 )\r
+                                                                                       else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       else\r
+                                                                                       else if ( e判定LC != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
+                                                                                               flag = true;\r
                                                                                        }\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定4 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chip5, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定5 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chip6, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               else if( e判定6 != E判定.Miss )\r
-                                                                               {\r
-                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chip7, event2.nVelocity );\r
-                                                                                       flag = true;\r
-                                                                               }\r
-                                                                               if( !flag )\r
-                                                                                       break;\r
-                                                                               continue;\r
+                                                                                       if ( !flag )\r
+                                                                                               break;\r
+                                                                                       continue;\r
+                                                                       }\r
+                                                                       if ( !flag )\r
+                                                                               break;\r
+                                                                       continue;\r
                                                                }\r
-                                                               if( !flag )\r
-                                                                       break;\r
-                                                               continue;\r
                                                        //-----------------------------\r
                                                                #endregion\r
 \r
@@ -3556,16 +3598,16 @@ namespace DTXMania
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
                                                                {\r
-                                                                       if (event2.nVelocity <= CDTXMania.ConfigIni.n切り捨て下限Velocity)        // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.RD)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
                                                                                continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                                       CDTX.CChip chip23 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x16);\r
-                                                                       CDTX.CChip chip24 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x19);\r
-                                                                       CDTX.CChip pChip = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a ) : null;\r
-                                                                       E判定 e判定21 = ( chip23 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip23, this.nInputAdjustTimeMs_Drums ) : E判定.Miss;\r
-                                                                       E判定 e判定22 = (chip24 != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip24, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                                       E判定 e判定23 = ( pChip != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, pChip, this.nInputAdjustTimeMs_Drums ) : E判定.Miss;\r
-                                                                       CDTX.CChip[] chipArray5 = new CDTX.CChip[] { chip23, chip24, pChip };\r
-                                                                       E判定[] e判定Array3 = new E判定[] { e判定21, e判定22, e判定23 };\r
+                                                                       CDTX.CChip chipCY = this.r指定時刻に一番近い未ヒットChip( nTime, 0x16, nInputAdjustTime ); // CY\r
+                                                                       CDTX.CChip chipRD = this.r指定時刻に一番近い未ヒットChip( nTime, 0x19, nInputAdjustTime ); // RD\r
+                                                                       CDTX.CChip chipLC = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ) : null;\r
+                                                                       E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       CDTX.CChip[] chipArray5 = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
+                                                                       E判定[] e判定Array3 = new E判定[] { e判定CY, e判定RD, e判定LC };\r
                                                                        num13 = 0;\r
                                                                        while( num13 < 2 )\r
                                                                        {\r
@@ -3588,9 +3630,9 @@ namespace DTXMania
                                                                        switch( eCYGroup )\r
                                                                        {\r
                                                                                case ECYGroup.打ち分ける:\r
-                                                                                       if( e判定22 != E判定.Miss )\r
+                                                                                       if( e判定RD != E判定.Miss )\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.RD, chip24, event2.nVelocity );\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.RD, chipRD, event2.nVelocity );\r
                                                                                                flag = true;\r
                                                                                        }\r
                                                                                        break;\r
@@ -3601,7 +3643,7 @@ namespace DTXMania
                                                                                                num16 = 0;\r
                                                                                                while( num16 < 3 )\r
                                                                                                {\r
-                                                                                                       if( ( e判定Array3[ num16 ] != E判定.Miss ) && ( ( chipArray5[ num16 ] == chip23 ) || ( chipArray5[ num16 ] == chip24 ) ) )\r
+                                                                                                       if( ( e判定Array3[ num16 ] != E判定.Miss ) && ( ( chipArray5[ num16 ] == chipCY ) || ( chipArray5[ num16 ] == chipRD ) ) )\r
                                                                                                        {\r
                                                                                                                this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num16 ], event2.nVelocity );\r
                                                                                                                flag = true;\r
@@ -3637,20 +3679,20 @@ namespace DTXMania
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
                                                                {\r
-                                                                       if (event2.nVelocity <= CDTXMania.ConfigIni.n切り捨て下限Velocity)        // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LC)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
                                                                                continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                                       CDTX.CChip chip9 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x11);\r
-                                                                       CDTX.CChip chip10 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x18);\r
-                                                                       CDTX.CChip chip11 = this.r指定時刻に一番近い未ヒットChip(nTime, 0x1a);\r
-                                                                       CDTX.CChip chip12 = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, 0x16) : null;\r
-                                                                       CDTX.CChip chip13 = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, 0x19) : null;\r
-                                                                       E判定 e判定7 = ( chip9 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip9, this.nInputAdjustTimeMs_Drums ) : E判定.Miss;\r
-                                                                       E判定 e判定8 = ( chip10 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip10, this.nInputAdjustTimeMs_Drums ) : E判定.Miss;\r
-                                                                       E判定 e判定9 = ( chip11 != null ) ? this.e指定時刻からChipのJUDGEを返す(nTime, chip11, this.nInputAdjustTimeMs_Drums) : E判定.Miss;\r
-                                                                       E判定 e判定10 = ( chip12 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip12, this.nInputAdjustTimeMs_Drums ) : E判定.Miss;\r
-                                                                       E判定 e判定11 = ( chip13 != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chip13, this.nInputAdjustTimeMs_Drums ) : E判定.Miss;\r
-                                                                       CDTX.CChip[] chipArray3 = new CDTX.CChip[] { chip9, chip10, chip11, chip12, chip13 };\r
-                                                                       E判定[]  e判定Array = new E判定[] { e判定7, e判定8, e判定9, e判定10, e判定11 };\r
+                                                                       CDTX.CChip chipHC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x11, nInputAdjustTime ); // HC\r
+                                                                       CDTX.CChip chipHO = this.r指定時刻に一番近い未ヒットChip( nTime, 0x18, nInputAdjustTime ); // HO\r
+                                                                       CDTX.CChip chipLC = this.r指定時刻に一番近い未ヒットChip( nTime, 0x1a, nInputAdjustTime ); // LC\r
+                                                                       CDTX.CChip chipCY = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x16, nInputAdjustTime ) : null;\r
+                                                                       CDTX.CChip chipRD = CDTXMania.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip( nTime, 0x19, nInputAdjustTime ) : null;\r
+                                                                       E判定 e判定HC = ( chipHC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHC, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定HO = ( chipHO != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipHO, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
+                                                                       CDTX.CChip[] chipArray3 = new CDTX.CChip[] { chipHC, chipHO, chipLC, chipCY, chipRD };\r
+                                                                       E判定[]  e判定Array = new E判定[] { e判定HC, e判定HO, e判定LC, e判定CY, e判定RD };\r
                                                                        num3 = 0;\r
                                                                        while( num3 < 4 )\r
                                                                        {\r
@@ -3676,9 +3718,9 @@ namespace DTXMania
                                                                                case EHHGroup.左シンバルのみ打ち分ける:\r
                                                                                        if( !CDTXMania.ConfigIni.bシンバルフリー )\r
                                                                                        {\r
-                                                                                               if( e判定9 != E判定.Miss )\r
+                                                                                               if( e判定LC != E判定.Miss )\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LC, chip11, event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LC, chipLC, event2.nVelocity );\r
                                                                                                        flag = true;\r
                                                                                                }\r
                                                                                                if( !flag )\r
@@ -3688,7 +3730,7 @@ namespace DTXMania
                                                                                        num5 = 0;\r
                                                                                        while( num5 < 5 )\r
                                                                                        {\r
-                                                                                               if( ( e判定Array[ num5 ] != E判定.Miss ) && ( ( ( chipArray3[ num5 ] == chip11 ) || ( chipArray3[ num5 ] == chip12 ) ) || ( ( chipArray3[ num5 ] == chip13 ) && ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) ) )\r
+                                                                                               if( ( e判定Array[ num5 ] != E判定.Miss ) && ( ( ( chipArray3[ num5 ] == chipLC ) || ( chipArray3[ num5 ] == chipCY ) ) || ( ( chipArray3[ num5 ] == chipRD ) && ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) ) )\r
                                                                                                {\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num5 ], event2.nVelocity );\r
                                                                                                        flag = true;\r
@@ -3707,7 +3749,7 @@ namespace DTXMania
                                                                                                num7 = 0;\r
                                                                                                while( num7 < 5 )\r
                                                                                                {\r
-                                                                                                       if( ( e判定Array[ num7 ] != E判定.Miss ) && ( ( ( chipArray3[ num7 ] == chip11 ) || ( chipArray3[ num7 ] == chip9 ) ) || ( chipArray3[ num7 ] == chip10 ) ) )\r
+                                                                                                       if( ( e判定Array[ num7 ] != E判定.Miss ) && ( ( ( chipArray3[ num7 ] == chipLC ) || ( chipArray3[ num7 ] == chipHC ) ) || ( chipArray3[ num7 ] == chipHO ) ) )\r
                                                                                                        {\r
                                                                                                                this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num7 ], event2.nVelocity );\r
                                                                                                                flag = true;\r
@@ -3722,7 +3764,7 @@ namespace DTXMania
                                                                                        num6 = 0;\r
                                                                                        while( num6 < 5 )\r
                                                                                        {\r
-                                                                                               if( ( e判定Array[ num6 ] != E判定.Miss ) && ( ( chipArray3[ num6 ] != chip13 ) || ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) )\r
+                                                                                               if( ( e判定Array[ num6 ] != E判定.Miss ) && ( ( chipArray3[ num6 ] != chipRD ) || ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) )\r
                                                                                                {\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num6 ], event2.nVelocity );\r
                                                                                                        flag = true;\r
@@ -3769,13 +3811,6 @@ namespace DTXMania
                                                        }\r
                                                        continue;\r
                                                }\r
-                                               CDTX.CChip chip28 = null;\r
-                                               CDTX.CChip chip29 = null;\r
-                                               CDTX.CChip chip30 = null;\r
-                                               CDTX.CChip chip31 = null;\r
-                                               CDTX.CChip chip32 = null;\r
-                                               CDTX.CChip chip33 = null;\r
-                                               CDTX.CChip chip34 = null;\r
                                                //-----------------------------\r
                                                #endregion\r
 \r
@@ -3786,45 +3821,47 @@ namespace DTXMania
                                                        case Eパッド.HH:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               chip28 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ] );\r
-                                                               chip29 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ] );\r
-                                                               chip30 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ] );\r
-                                                               switch( CDTXMania.ConfigIni.eHHGroup )\r
                                                                {\r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                               rChip = ( chip28 != null ) ? chip28 : chip30;\r
-                                                                               break;\r
+                                                                       CDTX.CChip chipHC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipHO = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipLC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ], nInputAdjustTime );\r
+                                                                       switch ( CDTXMania.ConfigIni.eHHGroup )\r
+                                                                       {\r
+                                                                               case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                                       rChip = ( chipHC != null ) ? chipHC : chipLC;\r
+                                                                                       break;\r
 \r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                               rChip = ( chip28 != null ) ? chip28 : chip29;\r
-                                                                               break;\r
+                                                                               case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       rChip = ( chipHC != null ) ? chipHC : chipHO;\r
+                                                                                       break;\r
 \r
-                                                                       case EHHGroup.全部共通:\r
-                                                                               if( chip28 != null )\r
-                                                                               {\r
-                                                                                       rChip = chip28;\r
-                                                                               }\r
-                                                                               else if( chip29 == null )\r
-                                                                               {\r
-                                                                                       rChip = chip30;\r
-                                                                               }\r
-                                                                               else if( chip30 == null )\r
-                                                                               {\r
-                                                                                       rChip = chip29;\r
-                                                                               }\r
-                                                                               else if( chip29.n発声位置 < chip30.n発声位置 )\r
-                                                                               {\r
-                                                                                       rChip = chip29;\r
-                                                                               }\r
-                                                                               else\r
-                                                                               {\r
-                                                                                       rChip = chip30;\r
-                                                                               }\r
-                                                                               break;\r
+                                                                               case EHHGroup.全部共通:\r
+                                                                                       if ( chipHC != null )\r
+                                                                                       {\r
+                                                                                               rChip = chipHC;\r
+                                                                                       }\r
+                                                                                       else if ( chipHO == null )\r
+                                                                                       {\r
+                                                                                               rChip = chipLC;\r
+                                                                                       }\r
+                                                                                       else if ( chipLC == null )\r
+                                                                                       {\r
+                                                                                               rChip = chipHO;\r
+                                                                                       }\r
+                                                                                       else if ( chipHO.n発声位置 < chipLC.n発声位置 )\r
+                                                                                       {\r
+                                                                                               rChip = chipHO;\r
+                                                                                       }\r
+                                                                                       else\r
+                                                                                       {\r
+                                                                                               rChip = chipLC;\r
+                                                                                       }\r
+                                                                                       break;\r
 \r
-                                                                       default:\r
-                                                                               rChip = chip28;\r
-                                                                               break;\r
+                                                                               default:\r
+                                                                                       rChip = chipHC;\r
+                                                                                       break;\r
+                                                                       }\r
                                                                }\r
                                                                //-----------------------------\r
                                                                #endregion\r
@@ -3833,12 +3870,14 @@ namespace DTXMania
                                                        case Eパッド.LT:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               chip31 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ] );\r
-                                                               chip32 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ] );\r
-                                                               if( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )\r
-                                                                       rChip = ( chip31 != null ) ? chip31 : chip32;\r
-                                                               else\r
-                                                                       rChip = chip31;\r
+                                                               {\r
+                                                                       CDTX.CChip chipLT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipFT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ], nInputAdjustTime );\r
+                                                                       if ( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )\r
+                                                                               rChip = ( chipLT != null ) ? chipLT : chipFT;\r
+                                                                       else\r
+                                                                               rChip = chipLT;\r
+                                                               }\r
                                                                //-----------------------------\r
                                                                #endregion\r
                                                                break;\r
@@ -3846,12 +3885,14 @@ namespace DTXMania
                                                        case Eパッド.FT:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               chip31 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ] );\r
-                                                               chip32 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ] );\r
-                                                               if( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )\r
-                                                                       rChip = ( chip32 != null ) ? chip32 : chip31;\r
-                                                               else\r
-                                                                       rChip = chip32;\r
+                                                               {\r
+                                                                       CDTX.CChip chipLT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 4 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipFT = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 5 ], nInputAdjustTime );\r
+                                                                       if ( CDTXMania.ConfigIni.eFTGroup != EFTGroup.打ち分ける )\r
+                                                                               rChip = ( chipFT != null ) ? chipFT : chipLT;\r
+                                                                       else\r
+                                                                               rChip = chipFT;\r
+                                                               }\r
                                                                //-----------------------------\r
                                                                #endregion\r
                                                                break;\r
@@ -3859,12 +3900,14 @@ namespace DTXMania
                                                        case Eパッド.CY:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               chip33 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ] );\r
-                                                               chip34 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ] );\r
-                                                               if( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )\r
-                                                                       rChip = ( chip33 != null ) ? chip33 : chip34;\r
-                                                               else\r
-                                                                       rChip = chip33;\r
+                                                               {\r
+                                                                       CDTX.CChip chipCY = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipRD = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ], nInputAdjustTime );\r
+                                                                       if ( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )\r
+                                                                               rChip = ( chipCY != null ) ? chipCY : chipRD;\r
+                                                                       else\r
+                                                                               rChip = chipCY;\r
+                                                               }\r
                                                                //-----------------------------\r
                                                                #endregion\r
                                                                break;\r
@@ -3872,45 +3915,47 @@ namespace DTXMania
                                                        case Eパッド.HHO:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               chip28 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ] );\r
-                                                               chip29 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ] );\r
-                                                               chip30 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ] );\r
-                                                               switch( CDTXMania.ConfigIni.eHHGroup )\r
                                                                {\r
-                                                                       case EHHGroup.全部打ち分ける:\r
-                                                                               rChip = chip29;\r
-                                                                               break;\r
+                                                                       CDTX.CChip chipHC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipHO = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipLC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ], nInputAdjustTime );\r
+                                                                       switch ( CDTXMania.ConfigIni.eHHGroup )\r
+                                                                       {\r
+                                                                               case EHHGroup.全部打ち分ける:\r
+                                                                                       rChip = chipHO;\r
+                                                                                       break;\r
 \r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                               rChip = ( chip29 != null ) ? chip29 : chip30;\r
-                                                                               break;\r
+                                                                               case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                                       rChip = ( chipHO != null ) ? chipHO : chipLC;\r
+                                                                                       break;\r
 \r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                               rChip = ( chip29 != null ) ? chip29 : chip28;\r
-                                                                               break;\r
+                                                                               case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       rChip = ( chipHO != null ) ? chipHO : chipHC;\r
+                                                                                       break;\r
 \r
-                                                                       case EHHGroup.全部共通:\r
-                                                                               if( chip29 != null )\r
-                                                                               {\r
-                                                                                       rChip = chip29;\r
-                                                                               }\r
-                                                                               else if( chip28 == null )\r
-                                                                               {\r
-                                                                                       rChip = chip30;\r
-                                                                               }\r
-                                                                               else if( chip30 == null )\r
-                                                                               {\r
-                                                                                       rChip = chip28;\r
-                                                                               }\r
-                                                                               else if( chip28.n発声位置 < chip30.n発声位置 )\r
-                                                                               {\r
-                                                                                       rChip = chip28;\r
-                                                                               }\r
-                                                                               else\r
-                                                                               {\r
-                                                                                       rChip = chip30;\r
-                                                                               }\r
-                                                                               break;\r
+                                                                               case EHHGroup.全部共通:\r
+                                                                                       if ( chipHO != null )\r
+                                                                                       {\r
+                                                                                               rChip = chipHO;\r
+                                                                                       }\r
+                                                                                       else if ( chipHC == null )\r
+                                                                                       {\r
+                                                                                               rChip = chipLC;\r
+                                                                                       }\r
+                                                                                       else if ( chipLC == null )\r
+                                                                                       {\r
+                                                                                               rChip = chipHC;\r
+                                                                                       }\r
+                                                                                       else if ( chipHC.n発声位置 < chipLC.n発声位置 )\r
+                                                                                       {\r
+                                                                                               rChip = chipHC;\r
+                                                                                       }\r
+                                                                                       else\r
+                                                                                       {\r
+                                                                                               rChip = chipLC;\r
+                                                                                       }\r
+                                                                                       break;\r
+                                                                       }\r
                                                                }\r
                                                                //-----------------------------\r
                                                                #endregion\r
@@ -3919,12 +3964,14 @@ namespace DTXMania
                                                        case Eパッド.RD:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               chip33 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ] );\r
-                                                               chip34 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ] );\r
-                                                               if( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )\r
-                                                                       rChip = ( chip34 != null ) ? chip34 : chip33;\r
-                                                               else\r
-                                                                       rChip = chip34;\r
+                                                               {\r
+                                                                       CDTX.CChip chipCY = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 6 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipRD = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 8 ], nInputAdjustTime );\r
+                                                                       if ( CDTXMania.ConfigIni.eCYGroup != ECYGroup.打ち分ける )\r
+                                                                               rChip = ( chipRD != null ) ? chipRD : chipCY;\r
+                                                                       else\r
+                                                                               rChip = chipRD;\r
+                                                               }\r
                                                                //-----------------------------\r
                                                                #endregion\r
                                                                break;\r
@@ -3932,39 +3979,41 @@ namespace DTXMania
                                                        case Eパッド.LC:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               chip28 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ] );\r
-                                                               chip29 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ] );\r
-                                                               chip30 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ] );\r
-                                                               switch( CDTXMania.ConfigIni.eHHGroup )\r
                                                                {\r
-                                                                       case EHHGroup.全部打ち分ける:\r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                               rChip = chip30;\r
-                                                                               break;\r
+                                                                       CDTX.CChip chipHC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 0 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipHO = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 7 ], nInputAdjustTime );\r
+                                                                       CDTX.CChip chipLC = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ 9 ], nInputAdjustTime );\r
+                                                                       switch ( CDTXMania.ConfigIni.eHHGroup )\r
+                                                                       {\r
+                                                                               case EHHGroup.全部打ち分ける:\r
+                                                                               case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       rChip = chipLC;\r
+                                                                                       break;\r
 \r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                       case EHHGroup.全部共通:\r
-                                                                               if( chip30 != null )\r
-                                                                               {\r
-                                                                                       rChip = chip30;\r
-                                                                               }\r
-                                                                               else if( chip28 == null )\r
-                                                                               {\r
-                                                                                       rChip = chip29;\r
-                                                                               }\r
-                                                                               else if( chip29 == null )\r
-                                                                               {\r
-                                                                                       rChip = chip28;\r
-                                                                               }\r
-                                                                               else if( chip28.n発声位置 < chip29.n発声位置 )\r
-                                                                               {\r
-                                                                                       rChip = chip28;\r
-                                                                               }\r
-                                                                               else\r
-                                                                               {\r
-                                                                                       rChip = chip29;\r
-                                                                               }\r
-                                                                               break;\r
+                                                                               case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                               case EHHGroup.全部共通:\r
+                                                                                       if ( chipLC != null )\r
+                                                                                       {\r
+                                                                                               rChip = chipLC;\r
+                                                                                       }\r
+                                                                                       else if ( chipHC == null )\r
+                                                                                       {\r
+                                                                                               rChip = chipHO;\r
+                                                                                       }\r
+                                                                                       else if ( chipHO == null )\r
+                                                                                       {\r
+                                                                                               rChip = chipHC;\r
+                                                                                       }\r
+                                                                                       else if ( chipHC.n発声位置 < chipHO.n発声位置 )\r
+                                                                                       {\r
+                                                                                               rChip = chipHC;\r
+                                                                                       }\r
+                                                                                       else\r
+                                                                                       {\r
+                                                                                               rChip = chipHO;\r
+                                                                                       }\r
+                                                                                       break;\r
+                                                                       }\r
                                                                }\r
                                                                //-----------------------------\r
                                                                #endregion\r
@@ -3973,7 +4022,7 @@ namespace DTXMania
                                                        default:\r
                                                                #region [ *** ]\r
                                                                //-----------------------------\r
-                                                               rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ nPad ] );\r
+                                                               rChip = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, this.nパッド0Atoチャンネル0A[ nPad ], nInputAdjustTime );\r
                                                                //-----------------------------\r
                                                                #endregion\r
                                                                break;\r
@@ -3998,11 +4047,20 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               private void t入力処理・ベース()\r
+               protected override void t入力処理・ベース()\r
                {\r
-                       if( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Bass )\r
+                       if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.B ) )\r
+                       {\r
+                               CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1, 0x7cf );\r
+                       }\r
+                       if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.R ) )\r
                        {\r
-                               if( CDTXMania.ConfigIni.bAutoPlay.Bass )\r
+                               CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Bass - 1, 0 );\r
+                       }\r
+\r
+                       if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Bass )\r
+                       {\r
+                               if( bIsAutoPlay.Bass )\r
                                {\r
                                        CDTX.CChip chip = this.r次にくるベースChipを更新して返す();\r
                                        if( chip != null )\r
@@ -4026,37 +4084,29 @@ namespace DTXMania
                                }\r
                                else\r
                                {\r
-                                       if( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.CY ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.BD ) )\r
-                                       {\r
-                                               CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1, 0x7cf );\r
-                                       }\r
-                                       if( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.CY ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.HH ) )\r
-                                       {\r
-                                               CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Bass - 1, 0 );\r
-                                       }\r
-                                       int num = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.HH ) ? 4 : 0;\r
+                                       int flagR = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.R ) ? 4 : 0;\r
                                        this.t入力メソッド記憶( E楽器パート.BASS );\r
-                                       int num2 = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.SD ) ? 2 : 0;\r
+                                       int flagG = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.G ) ? 2 : 0;\r
                                        this.t入力メソッド記憶( E楽器パート.BASS );\r
-                                       int num3 = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.BD ) ? 1 : 0;\r
+                                       int flagB = CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.B ) ? 1 : 0;\r
                                        this.t入力メソッド記憶( E楽器パート.BASS );\r
-                                       int num4 = ( num | num2 ) | num3;\r
-                                       if( num != 0 )\r
+                                       int flagRGB = flagR | flagG | flagB;\r
+                                       if( flagR != 0 )\r
                                        {\r
                                                this.actLaneFlushGB.Start( 3 );\r
                                                this.actRGB.Push( 3 );\r
                                        }\r
-                                       if( num2 != 0 )\r
+                                       if( flagG != 0 )\r
                                        {\r
                                                this.actLaneFlushGB.Start( 4 );\r
                                                this.actRGB.Push( 4 );\r
                                        }\r
-                                       if( num3 != 0 )\r
+                                       if( flagB != 0 )\r
                                        {\r
                                                this.actLaneFlushGB.Start( 5 );\r
                                                this.actRGB.Push( 5 );\r
                                        }\r
-                                       List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.HT );\r
+                                       List<STInputEvent> events = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Pick );\r
                                        if( ( events != null ) && ( events.Count > 0 ) )\r
                                        {\r
                                                foreach( STInputEvent event2 in events )\r
@@ -4068,32 +4118,32 @@ namespace DTXMania
                                                        }\r
                                                        this.t入力メソッド記憶( E楽器パート.BASS );\r
                                                        long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
-                                                       CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0xaf );\r
-                                                       E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip, this.nInputAdjustTimeMs_Bass );\r
-                                                       if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == num4 ) ) && ( e判定 != E判定.Miss ) )\r
+                                                       CDTX.CChip pChip = this.r指定時刻に一番近い未ヒットChip( nTime, 0xaf, this.nInputAdjustTimeMs.Bass );\r
+                                                       E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nTime, pChip, this.nInputAdjustTimeMs.Bass );\r
+                                                       if( ( ( pChip != null ) && ( ( pChip.nチャンネル番号 & 15 ) == flagRGB ) ) && ( e判定 != E判定.Miss ) )\r
                                                        {\r
-                                                               if( ( num != 0 ) || ( num4 == 0 ) )\r
+                                                               if( ( flagR != 0 ) || ( flagRGB == 0 ) )\r
                                                                {\r
                                                                        this.actChipFireGB.Start( 3 );\r
                                                                }\r
-                                                               if( ( num2 != 0 ) || ( num4 == 0 ) )\r
+                                                               if( ( flagG != 0 ) || ( flagRGB == 0 ) )\r
                                                                {\r
                                                                        this.actChipFireGB.Start( 4 );\r
                                                                }\r
-                                                               if( ( num3 != 0 ) || ( num4 == 0 ) )\r
+                                                               if( ( flagB != 0 ) || ( flagRGB == 0 ) )\r
                                                                {\r
                                                                        this.actChipFireGB.Start( 5 );\r
                                                                }\r
                                                                this.tチップのヒット処理( nTime, pChip );\r
                                                                this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, e判定 == E判定.Poor );\r
-                                                               CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 0xa8, 140 );\r
+                                                               CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 0xa8, this.nInputAdjustTimeMs.Bass, 140 );\r
                                                                if( item != null )\r
                                                                {\r
                                                                        this.queWailing.Bass.Enqueue( item );\r
                                                                }\r
                                                                continue;\r
                                                        }\r
-                                                       if( ( ( chip4 = this.r現在の空うちベースChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf ) ) != null ) )\r
+                                                       if ( ( ( chip4 = this.r現在の空うちベースChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf, this.nInputAdjustTimeMs.Bass ) ) != null ) )\r
                                                        {\r
                                                                this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );\r
                                                        }\r
@@ -4103,7 +4153,7 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                        }\r
-                                       List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.LT );\r
+                                       List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Wail );\r
                                        if( ( list2 != null ) && ( list2.Count > 0 ) )\r
                                        {\r
                                                foreach( STInputEvent event3 in list2 )\r
@@ -4116,13 +4166,14 @@ namespace DTXMania
                                                        long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
                                                        while( ( this.queWailing.Bass.Count > 0 ) && ( ( chip5 = this.queWailing.Bass.Dequeue() ) != null ) )\r
                                                        {\r
-                                                               if( ( num6 - chip5.n発声時刻ms ) <= 800 )\r
+                                                               if( ( num6 - chip5.n発声時刻ms ) <= 1000 )          // #24245 2011.1.26 yyagi: 800 -> 1000\r
                                                                {\r
                                                                        chip5.bHit = true;\r
                                                                        this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );\r
-                                                                       if( !CDTXMania.ConfigIni.bAutoPlay.Bass )\r
+                                                                       if( !bIsAutoPlay.Bass )\r
                                                                        {\r
-                                                                               this.actScore.Set( E楽器パート.BASS, this.actScore.Get( E楽器パート.BASS ) + ( this.actCOMBO.n現在のコンボ数.Bass * 0xbb8L ) );\r
+                                                                               int nCombo = ( this.actCOMBO.n現在のコンボ数.Bass < 500 ) ? this.actCOMBO.n現在のコンボ数.Bass : 500;\r
+                                                                               this.actScore.Set( E楽器パート.BASS, this.actScore.Get( E楽器パート.BASS ) + ( nCombo * 3000L ) );            // #24245 2011.1.26 yyagi changed DRUMS->BASS, add nCombo conditions\r
                                                                        }\r
                                                                }\r
                                                        }\r
@@ -4131,183 +4182,198 @@ namespace DTXMania
                                }\r
                        }\r
                }\r
-               private void t背景テクスチャの生成()\r
+\r
+               protected override void t背景テクスチャの生成()\r
                {\r
-                       Bitmap image = null;\r
-                       string path = "";\r
-                       bool flag = true;\r
-                       if( ( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) ) && !CDTXMania.ConfigIni.bストイックモード )\r
+                       Rectangle bgrect = new Rectangle( 338, 57, 278, 355 );\r
+                       string DefaultBgFilename = @"Graphics\ScreenPlayDrums background.jpg";\r
+                       string BgFilename = "";\r
+                       if ( ( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) ) && !CDTXMania.ConfigIni.bストイックモード )\r
                        {\r
-                               path = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.BACKGROUND;\r
-                               if( File.Exists( path ) )\r
-                               {\r
-                                       try\r
-                                       {\r
-                                               Bitmap bitmap2 = null;\r
-                                               bitmap2 = new Bitmap( path );\r
-                                               if( ( bitmap2.Size.Width == 0 ) && ( bitmap2.Size.Height == 0 ) )\r
-                                               {\r
-                                                       this.tx背景 = null;\r
-                                                       return;\r
-                                               }\r
-                                               Bitmap bitmap3 = new Bitmap( 640, 480 );\r
-                                               Graphics graphics = Graphics.FromImage( bitmap3 );\r
-                                               for( int i = 0; i < 480; i += bitmap2.Size.Height )\r
-                                               {\r
-                                                       for( int j = 0; j < 640; j += bitmap2.Size.Width )\r
-                                                       {\r
-                                                               graphics.DrawImage( bitmap2, j, i, bitmap2.Width, bitmap2.Height );\r
-                                                       }\r
-                                               }\r
-                                               graphics.Dispose();\r
-                                               bitmap2.Dispose();\r
-                                               image = new Bitmap( CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" ) );\r
-                                               graphics = Graphics.FromImage( image );\r
-                                               ColorMatrix matrix2 = new ColorMatrix();\r
-                                               matrix2.Matrix00 = 1f;\r
-                                               matrix2.Matrix11 = 1f;\r
-                                               matrix2.Matrix22 = 1f;\r
-                                               matrix2.Matrix33 = ( (float) CDTXMania.ConfigIni.n背景の透過度 ) / 255f;\r
-                                               matrix2.Matrix44 = 1f;\r
-                                               ColorMatrix newColorMatrix = matrix2;\r
-                                               ImageAttributes imageAttr = new ImageAttributes();\r
-                                               imageAttr.SetColorMatrix( newColorMatrix );\r
-                                               graphics.DrawImage( bitmap3, new Rectangle( 0, 0, 640, 480 ), 0, 0, 640, 480, GraphicsUnit.Pixel, imageAttr );\r
-                                               imageAttr.Dispose();\r
-                                               graphics.DrawImage( bitmap3, new Rectangle( 0x152, 0x39, 0x116, 0x163 ), 0x152, 0x39, 0x116, 0x163, GraphicsUnit.Pixel );\r
-                                               graphics.Dispose();\r
-                                               bitmap3.Dispose();\r
-                                               flag = false;\r
-                                       }\r
-                                       catch\r
-                                       {\r
-                                               Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );\r
-                                       }\r
-                               }\r
-                       }\r
-                       if( flag )\r
-                       {\r
-                               path = CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" );\r
-                               try\r
-                               {\r
-                                       image = new Bitmap( path );\r
-                               }\r
-                               catch\r
-                               {\r
-                                       Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );\r
-                                       this.tx背景 = null;\r
-                                       return;\r
-                               }\r
-                       }\r
-                       if( ( CDTXMania.DTX.listBMP.Count > 0 ) || ( CDTXMania.DTX.listBMPTEX.Count > 0 ) )\r
-                       {\r
-                               Graphics graphics2 = Graphics.FromImage( image );\r
-                               graphics2.FillRectangle( Brushes.Black, 0x152, 0x39, 0x116, 0x163 );\r
-                               graphics2.Dispose();\r
+                               BgFilename = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.BACKGROUND;\r
                        }\r
-                       try\r
-                       {\r
-                               this.tx背景 = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
-                       }\r
-                       catch( CTextureCreateFailedException )\r
-                       {\r
-                               Trace.TraceError( "背景テクスチャの生成に失敗しました。" );\r
-                               this.tx背景 = null;\r
-                       }\r
-                       image.Dispose();\r
+                       base.t背景テクスチャの生成( DefaultBgFilename, bgrect, BgFilename );\r
                }\r
-               private void t判定にあわせてゲージを増減する( E楽器パート part, E判定 e今回の判定 )\r
-               {\r
-                       double num;\r
 \r
-#if DAMAGELEVELTUNING\r
-                       switch (e今回の判定)\r
-                       {\r
-                               case E判定.Perfect:\r
-                                       num = (part == E楽器パート.DRUMS) ? gaugeDelta[0, 0] : gaugeDelta[0, 1];\r
-                                       break;\r
-\r
-                               case E判定.Great:\r
-                                       num = (part == E楽器パート.DRUMS) ? gaugeDelta[1, 0] : gaugeDelta[1, 1];\r
-                                       break;\r
-\r
-                               case E判定.Good:\r
-                                       num = (part == E楽器パート.DRUMS) ? gaugeDelta[2, 0] : gaugeDelta[2, 1];\r
-                                       break;\r
-\r
-                               case E判定.Poor:\r
-                                       num = (part == E楽器パート.DRUMS) ? gaugeDelta[3, 0] : gaugeDelta[3, 1];\r
-                                       break;\r
-\r
-                               case E判定.Miss:\r
-                                       num = (part == E楽器パート.DRUMS) ? gaugeDelta[4, 0] : gaugeDelta[4, 1];\r
-                                       switch (CDTXMania.ConfigIni.eダメージレベル)\r
-                                       {\r
-                                               case Eダメージレベル.少ない:\r
-                                                       num *= damageLevelFactor[0];\r
-                                                       break;\r
-\r
-                                               case Eダメージレベル.普通:\r
-                                                       num *= damageLevelFactor[1];\r
-                                                       break;\r
-\r
-                                               case Eダメージレベル.大きい:\r
-                                                       num *= damageLevelFactor[2];\r
-                                                       break;\r
-                                       }\r
-                                       break;\r
-\r
-                               default:\r
-                                       num = 0.0;\r
-                                       break;\r
-                       }\r
-#else\r
-                       switch (e今回の判定)\r
-                       {\r
-                               case E判定.Perfect:\r
-                                       num = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015;\r
-                                       break;\r
-\r
-                               case E判定.Great:\r
-                                       num = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009;\r
-                                       break;\r
-\r
-                               case E判定.Good:\r
-                                       num = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003;\r
-                                       break;\r
-\r
-                               case E判定.Poor:\r
-                                       num = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0;\r
-                                       break;\r
-\r
-                               case E判定.Miss:\r
-                                       num = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035;\r
-                                       switch( CDTXMania.ConfigIni.eダメージレベル )\r
-                                       {\r
-                                               case Eダメージレベル.少ない:\r
-                                                       num *= 0.6;\r
-                                                       break;\r
-\r
-                                               case Eダメージレベル.普通:\r
-                                                       num *= 1.0;\r
-                                                       break;\r
-\r
-                                               case Eダメージレベル.大きい:\r
-                                                       num *= 1.6;\r
-                                                       break;\r
-                                       }\r
-                                       break;\r
-\r
-                               default:\r
-                                       num = 0.0;\r
-                                       break;\r
-                       }\r
-#endif\r
-                       this.actGauge.db現在のゲージ値 += num;\r
-\r
-                       if( this.actGauge.db現在のゲージ値 > 1.0 )\r
-                               this.actGauge.db現在のゲージ値 = 1.0;\r
-               }\r
+               //private void t背景テクスチャの生成()\r
+               //{\r
+               //    Bitmap image = null;\r
+               //    string path = "";\r
+               //    bool flag = true;\r
+               //    if( ( ( CDTXMania.DTX.BACKGROUND != null ) && ( CDTXMania.DTX.BACKGROUND.Length > 0 ) ) && !CDTXMania.ConfigIni.bストイックモード )\r
+               //    {\r
+               //        path = CDTXMania.DTX.strフォルダ名 + CDTXMania.DTX.BACKGROUND;\r
+               //        if( File.Exists( path ) )\r
+               //        {\r
+               //            try\r
+               //            {\r
+               //                Bitmap bitmap2 = null;\r
+               //                bitmap2 = new Bitmap( path );\r
+               //                if( ( bitmap2.Size.Width == 0 ) && ( bitmap2.Size.Height == 0 ) )\r
+               //                {\r
+               //                    this.tx背景 = null;\r
+               //                    return;\r
+               //                }\r
+               //                Bitmap bitmap3 = new Bitmap( 640, 480 );\r
+               //                Graphics graphics = Graphics.FromImage( bitmap3 );\r
+               //                for( int i = 0; i < 480; i += bitmap2.Size.Height )\r
+               //                {\r
+               //                    for( int j = 0; j < 640; j += bitmap2.Size.Width )\r
+               //                    {\r
+               //                        graphics.DrawImage( bitmap2, j, i, bitmap2.Width, bitmap2.Height );\r
+               //                    }\r
+               //                }\r
+               //                graphics.Dispose();\r
+               //                bitmap2.Dispose();\r
+               //                image = new Bitmap( CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" ) );\r
+               //                graphics = Graphics.FromImage( image );\r
+               //                ColorMatrix matrix2 = new ColorMatrix();\r
+               //                matrix2.Matrix00 = 1f;\r
+               //                matrix2.Matrix11 = 1f;\r
+               //                matrix2.Matrix22 = 1f;\r
+               //                matrix2.Matrix33 = ( (float) CDTXMania.ConfigIni.n背景の透過度 ) / 255f;\r
+               //                matrix2.Matrix44 = 1f;\r
+               //                ColorMatrix newColorMatrix = matrix2;\r
+               //                ImageAttributes imageAttr = new ImageAttributes();\r
+               //                imageAttr.SetColorMatrix( newColorMatrix );\r
+               //                graphics.DrawImage( bitmap3, new Rectangle( 0, 0, 640, 480 ), 0, 0, 640, 480, GraphicsUnit.Pixel, imageAttr );\r
+               //                imageAttr.Dispose();\r
+               //                graphics.DrawImage( bitmap3, new Rectangle( 0x152, 0x39, 0x116, 0x163 ), 0x152, 0x39, 0x116, 0x163, GraphicsUnit.Pixel );\r
+               //                graphics.Dispose();\r
+               //                bitmap3.Dispose();\r
+               //                flag = false;\r
+               //            }\r
+               //            catch\r
+               //            {\r
+               //                Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );\r
+               //            }\r
+               //        }\r
+               //    }\r
+               //    if( flag )\r
+               //    {\r
+               //        path = CSkin.Path( @"Graphics\ScreenPlayDrums background.jpg" );\r
+               //        try\r
+               //        {\r
+               //            image = new Bitmap( path );\r
+               //        }\r
+               //        catch\r
+               //        {\r
+               //            Trace.TraceError( "背景画像の読み込みに失敗しました。({0})", new object[] { path } );\r
+               //            this.tx背景 = null;\r
+               //            return;\r
+               //        }\r
+               //    }\r
+               //    if( ( CDTXMania.DTX.listBMP.Count > 0 ) || ( CDTXMania.DTX.listBMPTEX.Count > 0 ) )\r
+               //    {\r
+               //        Graphics graphics2 = Graphics.FromImage( image );\r
+               //        graphics2.FillRectangle( Brushes.Black, 0x152, 0x39, 0x116, 0x163 );\r
+               //        graphics2.Dispose();\r
+               //    }\r
+               //    try\r
+               //    {\r
+               //        this.tx背景 = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
+               //    }\r
+               //    catch( CTextureCreateFailedException )\r
+               //    {\r
+               //        Trace.TraceError( "背景テクスチャの生成に失敗しました。" );\r
+               //        this.tx背景 = null;\r
+               //    }\r
+               //    image.Dispose();\r
+               //}\r
+\r
+\r
+//#if true             // DAMAGELEVELTUNING\r
+//        // ----------------------------------\r
+//        public float[,] fDamageGaugeDelta = {                        // #23625 2011.1.10 ickw_284: tuned damage/recover factors\r
+//            // drums,   guitar,  bass\r
+//            {  0.004f,  0.006f,  0.006f  },\r
+//            {  0.002f,  0.003f,  0.003f  },\r
+//            {  0.000f,  0.000f,  0.000f  },\r
+//            { -0.020f, -0.030f,      -0.030f  },\r
+//            { -0.050f, -0.050f, -0.050f  }\r
+//        };\r
+//        public float[] fDamageLevelFactor = {\r
+//            0.5f, 1.0f, 1.5f\r
+//        };\r
+//        // ----------------------------------\r
+//#endif\r
+\r
+//        private void t判定にあわせてゲージを増減する( E楽器パート part, E判定 e今回の判定 )\r
+//        {\r
+//            double fDamage;\r
+\r
+//#if true     // DAMAGELEVELTUNING\r
+//            switch (e今回の判定)\r
+//            {\r
+//                case E判定.Perfect:\r
+//                case E判定.Great:\r
+//                case E判定.Good:\r
+//                case E判定.Poor:\r
+//                    fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];\r
+//                    break;\r
+//                case E判定.Miss:\r
+//                    fDamage = fDamageGaugeDelta[(int)e今回の判定, (int)part];\r
+//                    switch (CDTXMania.ConfigIni.eダメージレベル)\r
+//                    {\r
+//                        case Eダメージレベル.少ない:\r
+//                        case Eダメージレベル.普通:\r
+//                        case Eダメージレベル.大きい:\r
+//                            fDamage *= fDamageLevelFactor[(int)CDTXMania.ConfigIni.eダメージレベル];\r
+//                            break;\r
+//                    }\r
+//                    break;\r
+\r
+//                default:\r
+//                    fDamage = 0.0f;\r
+//                    break;\r
+//            }\r
+//#else                                                                                                        // before applying #23625 modifications\r
+//            switch (e今回の判定)\r
+//            {\r
+//                case E判定.Perfect:\r
+//                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.01 : 0.015;\r
+//                    break;\r
+\r
+//                case E判定.Great:\r
+//                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.006 : 0.009;\r
+//                    break;\r
+\r
+//                case E判定.Good:\r
+//                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.002 : 0.003;\r
+//                    break;\r
+\r
+//                case E判定.Poor:\r
+//                    fDamage = ( part == E楽器パート.DRUMS ) ? 0.0 : 0.0;\r
+//                    break;\r
+\r
+//                case E判定.Miss:\r
+//                    fDamage = ( part == E楽器パート.DRUMS ) ? -0.035 : -0.035;\r
+//                    switch( CDTXMania.ConfigIni.eダメージレベル )\r
+//                    {\r
+//                        case Eダメージレベル.少ない:\r
+//                            fDamage *= 0.6;\r
+//                            break;\r
+\r
+//                        case Eダメージレベル.普通:\r
+//                            fDamage *= 1.0;\r
+//                            break;\r
+\r
+//                        case Eダメージレベル.大きい:\r
+//                            fDamage *= 1.6;\r
+//                            break;\r
+//                    }\r
+//                    break;\r
+\r
+//                default:\r
+//                    fDamage = 0.0;\r
+//                    break;\r
+//            }\r
+//#endif\r
+//            this.actGauge.db現在のゲージ値 += fDamage;\r
+\r
+//            if( this.actGauge.db現在のゲージ値 > 1.0 )\r
+//                this.actGauge.db現在のゲージ値 = 1.0;\r
+//        }\r
                //-----------------\r
                #endregion\r
        }\r