OSDN Git Service

#35891 CONFIGURATION構成の見直しで、サウンド関連の設定を CONFIGURATION/System/Sound Options/に移動。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 07.演奏 / CStage演奏画面共通.cs
index 8d03b0b..37bf777 100644 (file)
@@ -17,163 +17,172 @@ namespace DTXMania
        /// <summary>\r
        /// 演奏画面の共通クラス (ドラム演奏画面, ギター演奏画面の継承元)\r
        /// </summary>\r
-       internal abstract partial class CStage演奏画面共通 : CStage\r
+       internal partial class CStage演奏画面共通 : CStage\r
        {\r
-               // members\r
-\r
                #region [Member_Activities]\r
-               protected CAct演奏AVI actAVI;\r
-               protected CAct演奏BGA actBGA;\r
-               protected CAct演奏チップファイアGB actChipFireGB;\r
-               protected CAct演奏Combo共通 actCombo;\r
-               protected CAct演奏Danger共通 actDANGER;\r
-               protected CActFIFOBlack actFI;\r
-               protected CActFIFOBlack actFO;\r
-               protected CActFIFOWhite actFOClear;\r
-               protected CAct演奏ゲージ共通 actGauge;\r
-               protected CAct演奏判定文字列共通 actJudgeString;\r
-               protected CAct演奏DrumsレーンフラッシュD actLaneFlushD;\r
-               protected CAct演奏レーンフラッシュGB共通 actLaneFlushGB;\r
-               protected CAct演奏パネル文字列 actPanel;\r
-               protected CAct演奏演奏情報 actPlayInfo;\r
-               protected CAct演奏RGB共通 actRGB;\r
-               protected CAct演奏スコア共通 actScore;\r
-               protected CAct演奏ステージ失敗 actStageFailed;\r
-               protected CAct演奏ステータスパネル共通 actStatusPanels;\r
-               protected CAct演奏WailingBonus共通 actWailingBonus;\r
-               protected CAct演奏スクロール速度 act譜面スクロール速度;\r
-               protected CAct演奏DrumsチップファイアD actChipFireD; // drums only\r
-               protected CAct演奏Drumsグラフ actGraph;   // drums only #24074 2011.01.23 add ikanick\r
-               protected CAct演奏Drumsパッド actPad; // drums only\r
-\r
+               CAct演奏AVI actAVI;\r
+               CAct演奏BGA actBGA;\r
+               CAct演奏チップファイアGB actChipFireGB;\r
+               CAct演奏Combo共通 actCombo;\r
+               CAct演奏Danger共通 actDANGER;\r
+               CActFIFOBlack actFI;\r
+               CActFIFOBlack actFO;\r
+               CActFIFOWhite actFOClear;\r
+               CAct演奏ゲージ共通 actGauge;\r
+               CAct演奏判定文字列共通 actJudgeString;\r
+               CAct演奏DrumsレーンフラッシュD actLaneFlushD;\r
+               CAct演奏レーンフラッシュGB共通 actLaneFlushGB;\r
+               CActオプションパネル actOptionPanel;\r
+               CAct演奏パネル文字列 actPanel;\r
+               CAct演奏演奏情報 actPlayInfo;\r
+               CAct演奏RGB共通 actRGB;\r
+               CAct演奏スコア共通 actScore;\r
+               CAct演奏ステージ失敗 actStageFailed;\r
+               CAct演奏WailingBonus共通 actWailingBonus;\r
+               CAct演奏スクロール速度 act譜面スクロール速度;\r
+               CAct演奏DrumsチップファイアD actChipFireD;\r
+               // #24074 2011.01.23 add ikanick\r
+               CAct演奏グラフ actGraph;\r
+               CAct演奏Drumsパッド actPad;\r
+               CAct演奏Lane actLane;\r
                #endregion\r
 \r
-               public C演奏判定ライン座標共通 演奏判定ライン座標;// #31602 2013.6.23 yyagi 表示遅延対策として、判定ラインの表示位置をずらす機能を追加する\r
-\r
-               protected bool bPAUSE;\r
-               protected STDGBVALUE<bool> b演奏にMIDI入力を使った;\r
-               protected STDGBVALUE<bool> b演奏にキーボードを使った;\r
-               protected STDGBVALUE<bool> b演奏にジョイパッドを使った;\r
-               protected STDGBVALUE<bool> b演奏にマウスを使った;\r
-               protected CCounter ctWailingチップ模様アニメ;\r
-               protected STDGBVALUE<CCounter> ctチップ模様アニメ;\r
-\r
-               protected E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
+               bool bPAUSE;\r
+               STDGBSValue<bool> b演奏にMIDI入力を使った;\r
+               STDGBSValue<bool> b演奏にキーボードを使った;\r
+               STDGBSValue<bool> b演奏にジョイパッドを使った;\r
+               STDGBSValue<bool> b演奏にマウスを使った;\r
+\r
+               CCounter ctWailingチップ模様アニメ;\r
+               STDGBSValue<CCounter> ctチップ模様アニメ;\r
+\r
+               E演奏画面の戻り値 eフェードアウト完了時の戻り値;\r
+\r
+               STDGBSValue<CHitCountOfRank> nヒット数_Auto含まない;\r
+               STDGBSValue<CHitCountOfRank> nヒット数_Auto含む;\r
+               // #35411 2015.08.21 chnmr0 add\r
+               STDGBSValue<CHitCountOfRank> nヒット数_TargetGhost;\r
+               STDGBSValue<int> nコンボ数_TargetGhost;\r
+               STDGBSValue<int> n最大コンボ数_TargetGhost;\r
+               int n現在のトップChip = -1;\r
+               int[] n最後に再生したBGMの実WAV番号 = new int[50];\r
+               EChannel e最後に再生したHHのチャンネル番号;\r
+               // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.\r
+               List<int> L最後に再生したHHの実WAV番号;\r
+               // #26388 2011.11.8 yyagi: change "n最後に再生した実WAV番号.GUITAR" and "n最後に再生した実WAV番号.BASS"\r
+               STPadValue<int> n最後に再生した実WAV番号;\r
+               // #24820 2013.1.21 yyagi まずは単純にAdd/Removeを1個のキューでまとめて管理するやり方で設計する\r
+               volatile Queue<STMixer> queueMixerSound;\r
+               DateTime dtLastQueueOperation;\r
+               bool bIsDirectSound;\r
+               double db再生速度;\r
+               bool bValidScore;\r
+               bool bフィルイン中; // drums only\r
+\r
+               STDGBSValue<Queue<CChip>> queWailing;\r
+               STDGBSValue<CChip> r現在の歓声Chip;\r
+               STPadValue<CChip> r空打ちドラムチップ = new STPadValue<CChip>();\r
+               CChip r現在の空うちギターChip;\r
+               ST空打ち r現在の空うちドラムChip;\r
+               CChip r現在の空うちベースChip;\r
+               CChip r次にくるギターChip;\r
+               CChip r次にくるベースChip;\r
+\r
+               CTexture txWailing枠;\r
+               CTexture txチップ;\r
+               CTexture txチップGB;\r
+               CTexture txヒットバー;\r
+               CTexture txヒットバーGB;\r
+               CTexture tx背景;\r
+\r
+               CInvisibleChip cInvisibleChip;\r
+               CWailingChip共通[] cWailingChip;\r
+\r
+               STDGBSValue<CScoreIni.C演奏記録> record;\r
+\r
+               public CStage演奏画面共通()\r
+               {\r
+                       base.eステージID = CStage.Eステージ.演奏;\r
+                       base.eフェーズID = CStage.Eフェーズ.共通_通常状態;\r
+                       base.b活性化してない = true;\r
+                       base.list子Activities.Add(this.actPad = new CAct演奏Drumsパッド());\r
+                       base.list子Activities.Add(this.actChipFireD = new CAct演奏DrumsチップファイアD());\r
+                       base.list子Activities.Add(this.actChipFireGB = new CAct演奏チップファイアGB());\r
+                       base.list子Activities.Add(this.actStageFailed = new CAct演奏ステージ失敗());\r
+                       base.list子Activities.Add(this.actDANGER = new CAct演奏Danger共通());\r
+                       base.list子Activities.Add(this.actAVI = new CAct演奏AVI());\r
+                       base.list子Activities.Add(this.actBGA = new CAct演奏BGA());\r
+                       base.list子Activities.Add(this.actPanel = new CAct演奏パネル文字列());\r
+                       base.list子Activities.Add(this.act譜面スクロール速度 = new CAct演奏スクロール速度());\r
+                       base.list子Activities.Add(this.actWailingBonus = new CAct演奏WailingBonus共通());\r
+                       base.list子Activities.Add(this.actScore = new CAct演奏スコア共通());\r
+                       base.list子Activities.Add(this.actRGB = new CAct演奏RGB共通());\r
+                       base.list子Activities.Add(this.actLaneFlushD = new CAct演奏DrumsレーンフラッシュD());\r
+                       base.list子Activities.Add(this.actLaneFlushGB = new CAct演奏レーンフラッシュGB共通());\r
+                       base.list子Activities.Add(this.actJudgeString = new CAct演奏判定文字列共通());\r
+                       base.list子Activities.Add(this.actGauge = new CAct演奏ゲージ共通());\r
+                       base.list子Activities.Add(this.actGraph = new CAct演奏グラフ());\r
+                       base.list子Activities.Add(this.actCombo = new CAct演奏Combo共通());\r
+                       base.list子Activities.Add(this.actPlayInfo = new CAct演奏演奏情報());\r
+                       base.list子Activities.Add(this.actFI = new CActFIFOBlack());\r
+                       base.list子Activities.Add(this.actFO = new CActFIFOBlack());\r
+                       base.list子Activities.Add(this.actFOClear = new CActFIFOWhite());\r
+                       base.list子Activities.Add(this.actLane = new CAct演奏Lane());\r
+                       list子Activities.Add(actOptionPanel = new CActオプションパネル(EOptionPanelDirection.Vertical));\r
+               }\r
 \r
-               protected readonly int[] nチャンネル0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 8, 0 };\r
-               public static readonly int[] nチャンネル0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 7, 6, 1, 7, 0 };\r
-               protected readonly Ech定義[] nパッド0Atoチャンネル0A = new Ech定義[]\r
-               {\r
-                       Ech定義.HiHatClose,\r
-                       Ech定義.Snare,\r
-                       Ech定義.BassDrum,\r
-                       Ech定義.HighTom,\r
-                       Ech定義.LowTom,\r
-                       Ech定義.FloorTom,\r
-                       Ech定義.Cymbal,\r
-                       Ech定義.HiHatOpen,\r
-                       Ech定義.RideCymbal,\r
-                       Ech定義.LeftCymbal\r
-               };\r
-\r
-               protected readonly int[] nパッド0Atoパッド08 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 8, 0 };        // パッド画像のヒット処理用\r
-               protected readonly int[] nパッド0Atoレーン07 = new int[] { 1, 2, 3, 4, 5, 6, 7, 1, 7, 0 };\r
-               protected STDGBVALUE<CHitCountOfRank> nヒット数_Auto含まない;\r
-               protected STDGBVALUE<CHitCountOfRank> nヒット数_Auto含む;\r
-               protected STDGBVALUE<CHitCountOfRank> nヒット数_TargetGhost; // #35411 2015.08.21 chnmr0 add\r
-               protected STDGBVALUE<int> nコンボ数_TargetGhost;\r
-               protected STDGBVALUE<int> n最大コンボ数_TargetGhost;\r
-               protected int n現在のトップChip = -1;\r
-               protected int[] n最後に再生したBGMの実WAV番号 = new int[50];\r
-               protected Ech定義 e最後に再生したHHのチャンネル番号;\r
-               protected List<int> L最後に再生したHHの実WAV番号;            // #23921 2011.1.4 yyagi: change "int" to "List<int>", for recording multiple wav No.\r
-               protected STLANEVALUE<int> n最後に再生した実WAV番号;  // #26388 2011.11.8 yyagi: change "n最後に再生した実WAV番号.GUITAR" and "n最後に再生した実WAV番号.BASS"\r
-\r
-               protected volatile Queue<STMixer> queueMixerSound;              // #24820 2013.1.21 yyagi まずは単純にAdd/Removeを1個のキューでまとめて管理するやり方で設計する\r
-               protected DateTime dtLastQueueOperation;\r
-               protected bool bIsDirectSound;\r
-               protected double db再生速度;\r
-               protected bool bValidScore;\r
-               protected STDGBVALUE<bool> bReverse;\r
-\r
-               protected STDGBVALUE<Queue<CChip>> queWailing;\r
-               protected STDGBVALUE<CChip> r現在の歓声Chip;\r
-               protected CChip[] r空打ちドラムチップ = new CChip[10];\r
-               protected CChip r現在の空うちギターChip;\r
-               protected ST空打ち r現在の空うちドラムChip;\r
-               protected CChip r現在の空うちベースChip;\r
-               protected CChip r次にくるギターChip;\r
-               protected CChip r次にくるベースChip;\r
-               protected CTexture txWailing枠;\r
-               protected CTexture txチップ;\r
-               protected CTexture txヒットバー;\r
-\r
-               protected CTexture tx背景;\r
-\r
-               protected STDGBVALUE<int> nInputAdjustTimeMs;           // #23580 2011.1.3 yyagi\r
-               protected STAUTOPLAY bIsAutoPlay;               // #24239 2011.1.23 yyagi\r
-               protected CInvisibleChip cInvisibleChip;\r
-               protected bool bUseOSTimer;\r
-               protected E判定表示優先度 e判定表示優先度;\r
-               protected CWailingChip共通[] cWailingChip;\r
-\r
-               private STDGBVALUE<CScoreIni.C演奏記録> record;\r
-\r
-               protected CTexture txレーンフレームGB; // drums only\r
-               protected bool bフィルイン中; // drums only\r
-\r
-               // メソッド\r
                #region [ PlayRecordSave ]\r
                private void t演奏結果を格納する_ドラム()\r
                {\r
                        record.Drums = new CScoreIni.C演奏記録();\r
                        CScoreIni.C演奏記録 Drums = Record.Drums;\r
-                       if (CDTXMania.Instance.DTX.bチップがある.Drums && !CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                       {\r
-                               Drums.nスコア = (long)this.actScore.Get(E楽器パート.DRUMS);\r
-                               Drums.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Drums, CDTXMania.Instance.DTX.n可視チップ数.Drums, this.nヒット数_Auto含まない.Drums.Perfect, this.actCombo.n現在のコンボ数.Drums最高値, E楽器パート.DRUMS, bIsAutoPlay);\r
-                               Drums.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.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, E楽器パート.DRUMS, bIsAutoPlay);\r
-                               Drums.nPerfect数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Perfect : this.nヒット数_Auto含まない.Drums.Perfect;\r
-                               Drums.nGreat数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Great : this.nヒット数_Auto含まない.Drums.Great;\r
-                               Drums.nGood数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Good : this.nヒット数_Auto含まない.Drums.Good;\r
-                               Drums.nPoor数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Poor : this.nヒット数_Auto含まない.Drums.Poor;\r
-                               Drums.nMiss数 = CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである ? this.nヒット数_Auto含む.Drums.Miss : this.nヒット数_Auto含まない.Drums.Miss;\r
+                       bool allauto = CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Drums);\r
+                       if (CDTXMania.Instance.DTX.bチップがある.Drums && CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                       {\r
+                               Drums.nスコア = (long)this.actScore.Get(EPart.Drums);\r
+                               Drums.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Drums, CDTXMania.Instance.DTX.n可視チップ数.Drums, this.nヒット数_Auto含まない.Drums.Perfect,\r
+                                               this.actCombo.dgbコンボ数.Drums.n最高値,\r
+                                               EPart.Drums);\r
+                               Drums.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.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, EPart.Drums, true);\r
+                               Drums.nPerfect数 = allauto ? this.nヒット数_Auto含む.Drums.Perfect : this.nヒット数_Auto含まない.Drums.Perfect;\r
+                               Drums.nGreat数 = allauto ? this.nヒット数_Auto含む.Drums.Great : this.nヒット数_Auto含まない.Drums.Great;\r
+                               Drums.nGood数 = allauto ? this.nヒット数_Auto含む.Drums.Good : this.nヒット数_Auto含まない.Drums.Good;\r
+                               Drums.nPoor数 = allauto ? this.nヒット数_Auto含む.Drums.Poor : this.nヒット数_Auto含まない.Drums.Poor;\r
+                               Drums.nMiss数 = allauto ? this.nヒット数_Auto含む.Drums.Miss : this.nヒット数_Auto含まない.Drums.Miss;\r
                                Drums.nPerfect数_Auto含まない = this.nヒット数_Auto含まない.Drums.Perfect;\r
                                Drums.nGreat数_Auto含まない = this.nヒット数_Auto含まない.Drums.Great;\r
                                Drums.nGood数_Auto含まない = this.nヒット数_Auto含まない.Drums.Good;\r
                                Drums.nPoor数_Auto含まない = this.nヒット数_Auto含まない.Drums.Poor;\r
                                Drums.nMiss数_Auto含まない = this.nヒット数_Auto含まない.Drums.Miss;\r
-                               Drums.n最大コンボ数 = this.actCombo.n現在のコンボ数.Drums最高値;\r
+                               Drums.n最大コンボ数 = this.actCombo.dgbコンボ数.Drums.n最高値;\r
                                Drums.n全チップ数 = CDTXMania.Instance.DTX.n可視チップ数.Drums;\r
-                               for (int i = 0; i < (int)Eレーン.MAX; i++)\r
+                               for (EPad i = EPad.Min; i < EPad.Max; i++)\r
                                {\r
-                                       Drums.bAutoPlay[i] = bIsAutoPlay[i];\r
+                                       Drums.bAutoPlay[i] = CDTXMania.Instance.ConfigIni.bAutoPlay[i];\r
                                }\r
                                Drums.bTight = CDTXMania.Instance.ConfigIni.bTight;\r
-                               for (int i = 0; i < 3; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
-                                       Drums.bSudden[i] = CDTXMania.Instance.ConfigIni.bSudden[i];\r
-                                       Drums.bHidden[i] = CDTXMania.Instance.ConfigIni.bHidden[i];\r
-                                       Drums.eInvisible[i] = CDTXMania.Instance.ConfigIni.eInvisible[i];\r
+                                       Drums.eSudHidInv[i] = CDTXMania.Instance.ConfigIni.eSudHidInv[i];\r
                                        Drums.bReverse[i] = CDTXMania.Instance.ConfigIni.bReverse[i];\r
                                        Drums.eRandom[i] = CDTXMania.Instance.ConfigIni.eRandom[i];\r
                                        Drums.bLight[i] = CDTXMania.Instance.ConfigIni.bLight[i];\r
-                                       Drums.bLeft[i] = CDTXMania.Instance.ConfigIni.bLeft[i];\r
-                                       Drums.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i] + 1)) * 0.5f;\r
+                                       Drums.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.nScrollSpeed[i] + 1)) * 0.5f;\r
                                }\r
                                Drums.eDark = CDTXMania.Instance.ConfigIni.eDark;\r
-                               Drums.n演奏速度分子 = CDTXMania.Instance.ConfigIni.n演奏速度;\r
+                               Drums.n演奏速度分子 = CDTXMania.Instance.ConfigIni.nPlaySpeed;\r
                                Drums.n演奏速度分母 = 20;\r
-                               Drums.eHHGroup = CDTXMania.Instance.ConfigIni.eHHGroup;\r
-                               Drums.eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup;\r
-                               Drums.eCYGroup = CDTXMania.Instance.ConfigIni.eCYGroup;\r
-                               Drums.eHitSoundPriorityHH = CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH;\r
-                               Drums.eHitSoundPriorityFT = CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT;\r
-                               Drums.eHitSoundPriorityCY = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY;\r
+                               Drums.eHHGroup = CDTXMania.Instance.ConfigIni.eHHGroup.Value;\r
+                               Drums.eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup.Value;\r
+                               Drums.eCYGroup = CDTXMania.Instance.ConfigIni.eCYGroup.Value;\r
+                               Drums.eHitSoundPriorityHH = CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH.Value;\r
+                               Drums.eHitSoundPriorityFT = CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT.Value;\r
+                               Drums.eHitSoundPriorityCY = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY.Value;\r
                                Drums.bGuitar有効 = CDTXMania.Instance.ConfigIni.bGuitar有効;\r
                                Drums.bDrums有効 = CDTXMania.Instance.ConfigIni.bDrums有効;\r
-                               Drums.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効;\r
-                               Drums.eダメージレベル = CDTXMania.Instance.ConfigIni.eダメージレベル;\r
+                               Drums.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bStageFailed;\r
+                               Drums.eダメージレベル = CDTXMania.Instance.ConfigIni.eDamageLevel;\r
+                               Drums.eMetronome = CDTXMania.Instance.ConfigIni.eClickType;\r
                                Drums.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Drums;\r
                                Drums.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Drums;\r
                                Drums.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Drums;\r
@@ -184,50 +193,49 @@ namespace DTXMania
                                Drums.nPoorになる範囲ms = CDTXMania.Instance.nPoor範囲ms;\r
                                Drums.strDTXManiaのバージョン = CDTXMania.VERSION;\r
                                Drums.最終更新日時 = DateTime.Now.ToString();\r
-                               Drums.Hash = CScoreIni.t演奏セクションのMD5を求めて返す(Drums);\r
-                               Drums.nRisky = CDTXMania.Instance.ConfigIni.nRisky; // #35461 chnmr0 add\r
-                               Drums.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass; // #35417 chnmr0 add\r
+                               // #35461 chnmr0 add\r
+                               Drums.nRisky = CDTXMania.Instance.ConfigIni.nRisky;\r
+                               // #35417 chnmr0 add\r
+                               Drums.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass;\r
                        }\r
                }\r
                private void t演奏結果を格納する_ギター()\r
                {\r
                        record.Guitar = new CScoreIni.C演奏記録();\r
                        CScoreIni.C演奏記録 Guitar = Record.Guitar;\r
+                       bool allauto = CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Guitar);\r
                        if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
                        {\r
-                               Guitar.nスコア = (long)this.actScore.Get(E楽器パート.GUITAR);\r
-                               Guitar.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Guitar, CDTXMania.Instance.DTX.n可視チップ数.Guitar, this.nヒット数_Auto含まない.Guitar.Perfect, this.actCombo.n現在のコンボ数.Guitar最高値, E楽器パート.GUITAR, bIsAutoPlay);\r
-                               Guitar.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Guitar, this.nヒット数_Auto含まない.Guitar.Perfect, this.nヒット数_Auto含まない.Guitar.Great, this.nヒット数_Auto含まない.Guitar.Good, this.nヒット数_Auto含まない.Guitar.Poor, this.nヒット数_Auto含まない.Guitar.Miss, E楽器パート.GUITAR, bIsAutoPlay);\r
-                               Guitar.nPerfect数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Perfect : this.nヒット数_Auto含まない.Guitar.Perfect;\r
-                               Guitar.nGreat数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Great : this.nヒット数_Auto含まない.Guitar.Great;\r
-                               Guitar.nGood数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Good : this.nヒット数_Auto含まない.Guitar.Good;\r
-                               Guitar.nPoor数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Poor : this.nヒット数_Auto含まない.Guitar.Poor;\r
-                               Guitar.nMiss数 = CDTXMania.Instance.ConfigIni.bギターが全部オートプレイである ? this.nヒット数_Auto含む.Guitar.Miss : this.nヒット数_Auto含まない.Guitar.Miss;\r
+                               Guitar.nスコア = (long)this.actScore.Get(EPart.Guitar);\r
+                               Guitar.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Guitar, CDTXMania.Instance.DTX.n可視チップ数.Guitar, this.nヒット数_Auto含まない.Guitar.Perfect, this.actCombo.dgbコンボ数.Guitar.n最高値, EPart.Guitar);\r
+                               Guitar.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Guitar, this.nヒット数_Auto含まない.Guitar.Perfect, this.nヒット数_Auto含まない.Guitar.Great, this.nヒット数_Auto含まない.Guitar.Good, this.nヒット数_Auto含まない.Guitar.Poor, this.nヒット数_Auto含まない.Guitar.Miss, EPart.Guitar, true);\r
+                               Guitar.nPerfect数 = allauto ? this.nヒット数_Auto含む.Guitar.Perfect : this.nヒット数_Auto含まない.Guitar.Perfect;\r
+                               Guitar.nGreat数 = allauto ? this.nヒット数_Auto含む.Guitar.Great : this.nヒット数_Auto含まない.Guitar.Great;\r
+                               Guitar.nGood数 = allauto ? this.nヒット数_Auto含む.Guitar.Good : this.nヒット数_Auto含まない.Guitar.Good;\r
+                               Guitar.nPoor数 = allauto ? this.nヒット数_Auto含む.Guitar.Poor : this.nヒット数_Auto含まない.Guitar.Poor;\r
+                               Guitar.nMiss数 = allauto ? this.nヒット数_Auto含む.Guitar.Miss : this.nヒット数_Auto含まない.Guitar.Miss;\r
                                Guitar.nPerfect数_Auto含まない = this.nヒット数_Auto含まない.Guitar.Perfect;\r
                                Guitar.nGreat数_Auto含まない = this.nヒット数_Auto含まない.Guitar.Great;\r
                                Guitar.nGood数_Auto含まない = this.nヒット数_Auto含まない.Guitar.Good;\r
                                Guitar.nPoor数_Auto含まない = this.nヒット数_Auto含まない.Guitar.Poor;\r
                                Guitar.nMiss数_Auto含まない = this.nヒット数_Auto含まない.Guitar.Miss;\r
-                               Guitar.n最大コンボ数 = this.actCombo.n現在のコンボ数.Guitar最高値;\r
+                               Guitar.n最大コンボ数 = this.actCombo.dgbコンボ数.Guitar.n最高値;\r
                                Guitar.n全チップ数 = CDTXMania.Instance.DTX.n可視チップ数.Guitar;\r
-                               for (int i = 0; i < (int)Eレーン.MAX; i++)\r
+                               for (EPad i = EPad.Min; i < EPad.Max; i++)\r
                                {\r
-                                       Guitar.bAutoPlay[i] = bIsAutoPlay[i];\r
+                                       Guitar.bAutoPlay[i] = CDTXMania.Instance.ConfigIni.bAutoPlay[i];\r
                                }\r
                                Guitar.bTight = CDTXMania.Instance.ConfigIni.bTight;\r
-                               for (int i = 0; i < 3; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
-                                       Guitar.bSudden[i] = CDTXMania.Instance.ConfigIni.bSudden[i];\r
-                                       Guitar.bHidden[i] = CDTXMania.Instance.ConfigIni.bHidden[i];\r
-                                       Guitar.eInvisible[i] = CDTXMania.Instance.ConfigIni.eInvisible[i];\r
+                                       Guitar.eSudHidInv[i] = CDTXMania.Instance.ConfigIni.eSudHidInv[i];\r
                                        Guitar.bReverse[i] = CDTXMania.Instance.ConfigIni.bReverse[i];\r
                                        Guitar.eRandom[i] = CDTXMania.Instance.ConfigIni.eRandom[i];\r
                                        Guitar.bLight[i] = CDTXMania.Instance.ConfigIni.bLight[i];\r
-                                       Guitar.bLeft[i] = CDTXMania.Instance.ConfigIni.bLeft[i];\r
-                                       Guitar.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i] + 1)) * 0.5f;\r
+                                       Guitar.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.nScrollSpeed[i] + 1)) * 0.5f;\r
                                }\r
                                Guitar.eDark = CDTXMania.Instance.ConfigIni.eDark;\r
-                               Guitar.n演奏速度分子 = CDTXMania.Instance.ConfigIni.n演奏速度;\r
+                               Guitar.n演奏速度分子 = CDTXMania.Instance.ConfigIni.nPlaySpeed;\r
                                Guitar.n演奏速度分母 = 20;\r
                                Guitar.eHHGroup = CDTXMania.Instance.ConfigIni.eHHGroup;\r
                                Guitar.eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup;\r
@@ -237,8 +245,9 @@ namespace DTXMania
                                Guitar.eHitSoundPriorityCY = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY;\r
                                Guitar.bGuitar有効 = CDTXMania.Instance.ConfigIni.bGuitar有効;\r
                                Guitar.bDrums有効 = CDTXMania.Instance.ConfigIni.bDrums有効;\r
-                               Guitar.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効;\r
-                               Guitar.eダメージレベル = CDTXMania.Instance.ConfigIni.eダメージレベル;\r
+                               Guitar.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bStageFailed;\r
+                               Guitar.eダメージレベル = CDTXMania.Instance.ConfigIni.eDamageLevel;\r
+                               Guitar.eMetronome = CDTXMania.Instance.ConfigIni.eClickType;\r
                                Guitar.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Guitar;\r
                                Guitar.b演奏にMIDI入力を使用した = this.b演奏にMIDI入力を使った.Guitar;\r
                                Guitar.b演奏にジョイパッドを使用した = this.b演奏にジョイパッドを使った.Guitar;\r
@@ -249,49 +258,47 @@ namespace DTXMania
                                Guitar.nPoorになる範囲ms = CDTXMania.Instance.nPoor範囲ms;\r
                                Guitar.strDTXManiaのバージョン = CDTXMania.VERSION;\r
                                Guitar.最終更新日時 = DateTime.Now.ToString();\r
-                               Guitar.Hash = CScoreIni.t演奏セクションのMD5を求めて返す(Guitar);\r
-                               Guitar.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass; // #35417 chnmr0 add\r
+                               // #35417 chnmr0 add\r
+                               Guitar.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass;\r
                        }\r
                }\r
                private void t演奏結果を格納する_ベース()\r
                {\r
                        record.Bass = new CScoreIni.C演奏記録();\r
                        CScoreIni.C演奏記録 Bass = Record.Bass;\r
+                       bool allauto = CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Bass);\r
                        if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
                        {\r
-                               Bass.nスコア = (long)this.actScore.Get(E楽器パート.BASS);\r
-                               Bass.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Bass, CDTXMania.Instance.DTX.n可視チップ数.Bass, this.nヒット数_Auto含まない.Bass.Perfect, this.actCombo.n現在のコンボ数.Bass最高値, E楽器パート.BASS, bIsAutoPlay);\r
-                               Bass.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Bass, this.nヒット数_Auto含まない.Bass.Perfect, this.nヒット数_Auto含まない.Bass.Great, this.nヒット数_Auto含まない.Bass.Good, this.nヒット数_Auto含まない.Bass.Poor, this.nヒット数_Auto含まない.Bass.Miss, E楽器パート.BASS, bIsAutoPlay);\r
-                               Bass.nPerfect数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Perfect : this.nヒット数_Auto含まない.Bass.Perfect;\r
-                               Bass.nGreat数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Great : this.nヒット数_Auto含まない.Bass.Great;\r
-                               Bass.nGood数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Good : this.nヒット数_Auto含まない.Bass.Good;\r
-                               Bass.nPoor数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Poor : this.nヒット数_Auto含まない.Bass.Poor;\r
-                               Bass.nMiss数 = CDTXMania.Instance.ConfigIni.bベースが全部オートプレイである ? this.nヒット数_Auto含む.Bass.Miss : this.nヒット数_Auto含まない.Bass.Miss;\r
+                               Bass.nスコア = (long)this.actScore.Get(EPart.Bass);\r
+                               Bass.dbゲーム型スキル値 = CScoreIni.tゲーム型スキルを計算して返す(CDTXMania.Instance.DTX.LEVEL.Bass, CDTXMania.Instance.DTX.n可視チップ数.Bass, this.nヒット数_Auto含まない.Bass.Perfect, this.actCombo.dgbコンボ数.Bass.n最高値, EPart.Bass);\r
+                               Bass.db演奏型スキル値 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.DTX.n可視チップ数.Bass, this.nヒット数_Auto含まない.Bass.Perfect, this.nヒット数_Auto含まない.Bass.Great, this.nヒット数_Auto含まない.Bass.Good, this.nヒット数_Auto含まない.Bass.Poor, this.nヒット数_Auto含まない.Bass.Miss, EPart.Bass, true);\r
+                               Bass.nPerfect数 = allauto ? this.nヒット数_Auto含む.Bass.Perfect : this.nヒット数_Auto含まない.Bass.Perfect;\r
+                               Bass.nGreat数 = allauto ? this.nヒット数_Auto含む.Bass.Great : this.nヒット数_Auto含まない.Bass.Great;\r
+                               Bass.nGood数 = allauto ? this.nヒット数_Auto含む.Bass.Good : this.nヒット数_Auto含まない.Bass.Good;\r
+                               Bass.nPoor数 = allauto ? this.nヒット数_Auto含む.Bass.Poor : this.nヒット数_Auto含まない.Bass.Poor;\r
+                               Bass.nMiss数 = allauto ? this.nヒット数_Auto含む.Bass.Miss : this.nヒット数_Auto含まない.Bass.Miss;\r
                                Bass.nPerfect数_Auto含まない = this.nヒット数_Auto含まない.Bass.Perfect;\r
                                Bass.nGreat数_Auto含まない = this.nヒット数_Auto含まない.Bass.Great;\r
                                Bass.nGood数_Auto含まない = this.nヒット数_Auto含まない.Bass.Good;\r
                                Bass.nPoor数_Auto含まない = this.nヒット数_Auto含まない.Bass.Poor;\r
                                Bass.nMiss数_Auto含まない = this.nヒット数_Auto含まない.Bass.Miss;\r
-                               Bass.n最大コンボ数 = this.actCombo.n現在のコンボ数.Bass最高値;\r
+                               Bass.n最大コンボ数 = this.actCombo.dgbコンボ数.Bass.n最高値;\r
                                Bass.n全チップ数 = CDTXMania.Instance.DTX.n可視チップ数.Bass;\r
-                               for (int i = 0; i < (int)Eレーン.MAX; i++)\r
+                               for (EPad i = EPad.Min; i < EPad.Max; i++)\r
                                {\r
-                                       Bass.bAutoPlay[i] = bIsAutoPlay[i];\r
+                                       Bass.bAutoPlay[i] = CDTXMania.Instance.ConfigIni.bAutoPlay[i];\r
                                }\r
                                Bass.bTight = CDTXMania.Instance.ConfigIni.bTight;\r
-                               for (int i = 0; i < 3; i++)\r
+                               for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                                {\r
-                                       Bass.bSudden[i] = CDTXMania.Instance.ConfigIni.bSudden[i];\r
-                                       Bass.bHidden[i] = CDTXMania.Instance.ConfigIni.bHidden[i];\r
-                                       Bass.eInvisible[i] = CDTXMania.Instance.ConfigIni.eInvisible[i];\r
+                                       Bass.eSudHidInv[i] = CDTXMania.Instance.ConfigIni.eSudHidInv[i];\r
                                        Bass.bReverse[i] = CDTXMania.Instance.ConfigIni.bReverse[i];\r
                                        Bass.eRandom[i] = CDTXMania.Instance.ConfigIni.eRandom[i];\r
                                        Bass.bLight[i] = CDTXMania.Instance.ConfigIni.bLight[i];\r
-                                       Bass.bLeft[i] = CDTXMania.Instance.ConfigIni.bLeft[i];\r
-                                       Bass.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i] + 1)) * 0.5f;\r
+                                       Bass.f譜面スクロール速度[i] = ((float)(CDTXMania.Instance.ConfigIni.nScrollSpeed[i] + 1)) * 0.5f;\r
                                }\r
                                Bass.eDark = CDTXMania.Instance.ConfigIni.eDark;\r
-                               Bass.n演奏速度分子 = CDTXMania.Instance.ConfigIni.n演奏速度;\r
+                               Bass.n演奏速度分子 = CDTXMania.Instance.ConfigIni.nPlaySpeed;\r
                                Bass.n演奏速度分母 = 20;\r
                                Bass.eHHGroup = CDTXMania.Instance.ConfigIni.eHHGroup;\r
                                Bass.eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup;\r
@@ -301,20 +308,22 @@ namespace DTXMania
                                Bass.eHitSoundPriorityCY = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY;\r
                                Bass.bGuitar有効 = CDTXMania.Instance.ConfigIni.bGuitar有効;\r
                                Bass.bDrums有効 = CDTXMania.Instance.ConfigIni.bDrums有効;\r
-                               Bass.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効;\r
-                               Bass.eダメージレベル = CDTXMania.Instance.ConfigIni.eダメージレベル;\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.bSTAGEFAILED有効 = CDTXMania.Instance.ConfigIni.bStageFailed;\r
+                               Bass.eダメージレベル = CDTXMania.Instance.ConfigIni.eDamageLevel;\r
+                               // #24280 2011.1.29 yyagi\r
+                               Bass.eMetronome = CDTXMania.Instance.ConfigIni.eClickType;\r
+                               Bass.b演奏にキーボードを使用した = this.b演奏にキーボードを使った.Bass;\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.Instance.nPerfect範囲ms;\r
                                Bass.nGreatになる範囲ms = CDTXMania.Instance.nGreat範囲ms;\r
                                Bass.nGoodになる範囲ms = CDTXMania.Instance.nGood範囲ms;\r
                                Bass.nPoorになる範囲ms = CDTXMania.Instance.nPoor範囲ms;\r
                                Bass.strDTXManiaのバージョン = CDTXMania.VERSION;\r
                                Bass.最終更新日時 = DateTime.Now.ToString();\r
-                               Bass.Hash = CScoreIni.t演奏セクションのMD5を求めて返す(Bass);\r
-                               Bass.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass; // #35417 chnmr0 add\r
+                               // #35417 chnmr0 add\r
+                               Bass.bギターとベースを入れ替えた = CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass;\r
                        }\r
                }\r
                #endregion\r
@@ -322,193 +331,238 @@ namespace DTXMania
                // CStage 実装\r
                public override void On活性化()\r
                {\r
-                       this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;\r
-                       this.n現在のトップChip = (CDTXMania.Instance.DTX.listChip.Count > 0) ? 0 : -1;\r
-                       this.L最後に再生したHHの実WAV番号 = new List<int>(16);\r
-                       this.e最後に再生したHHのチャンネル番号 = 0;\r
-                       this.n最後に再生した実WAV番号.Guitar = -1;\r
-                       this.n最後に再生した実WAV番号.Bass = -1;\r
-                       for (int i = 0; i < 50; i++)\r
-                       {\r
-                               this.n最後に再生したBGMの実WAV番号[i] = -1;\r
-                       }\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
-                       cInvisibleChip = new CInvisibleChip(CDTXMania.Instance.ConfigIni.nChipDisplayTimeMs, CDTXMania.Instance.ConfigIni.nChipFadeoutTimeMs);\r
-                       this.演奏判定ライン座標 = new C演奏判定ライン座標共通();\r
-                       this.n最大コンボ数_TargetGhost = new STDGBVALUE<int>(); // #35411 2015.08.21 chnmr0 add\r
-                       for (int k = 0; k < 3; k++)\r
+                       if (base.b活性化してない)\r
                        {\r
-                               //for ( int n = 0; n < 5; n++ )\r
-                               //{\r
-                               this.nヒット数_Auto含まない[k] = new CHitCountOfRank();\r
-                               this.nヒット数_Auto含む[k] = new CHitCountOfRank();\r
-                               this.nヒット数_TargetGhost[k] = new CHitCountOfRank(); // #35411 2015.08.21 chnmr0 add\r
-                               //}\r
-                               this.queWailing[k] = new Queue<CChip>();\r
-                               this.r現在の歓声Chip[k] = null;\r
-                               cInvisibleChip.eInvisibleMode[k] = CDTXMania.Instance.ConfigIni.eInvisible[k];\r
-                               if (CDTXMania.Instance.DTXVmode.Enabled)\r
+                               this.bフィルイン中 = false;\r
+                               this.dtLastQueueOperation = DateTime.MinValue;\r
+                               this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.継続;\r
+                               this.n現在のトップChip = (CDTXMania.Instance.DTX.listChip.Count > 0) ? 0 : -1;\r
+                               n最後に再生した実WAV番号 = new STPadValue<int>();\r
+                               this.L最後に再生したHHの実WAV番号 = new List<int>(16);\r
+                               this.e最後に再生したHHのチャンネル番号 = 0;\r
+                               this.n最後に再生した実WAV番号.GtPick = -1;\r
+                               this.n最後に再生した実WAV番号.BsPick = -1;\r
+                               for (int i = 0; i < 50; i++)\r
                                {\r
-                                       CDTXMania.Instance.ConfigIni.n譜面スクロール速度[k] = CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[k];\r
+                                       this.n最後に再生したBGMの実WAV番号[i] = -1;\r
                                }\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
+                               cInvisibleChip = new CInvisibleChip(CDTXMania.Instance.ConfigIni.nChipDisplayTimeMs, CDTXMania.Instance.ConfigIni.nChipFadeoutTimeMs);\r
+                               this.n最大コンボ数_TargetGhost = new STDGBSValue<int>();\r
 \r
-                               this.nInputAdjustTimeMs[k] = CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[k];                        // #23580 2011.1.3 yyagi\r
-                               //        2011.1.7 ikanick 修正\r
-                               this.演奏判定ライン座標.n判定位置[k] = CDTXMania.Instance.ConfigIni.e判定位置[k];//#31602 2013.6.23 yyagi\r
-                               this.演奏判定ライン座標.nJudgeLinePosY_delta[k] = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[k];\r
-                               this.bReverse[k] = CDTXMania.Instance.ConfigIni.bReverse[k];\r
+                               for (EPart k = EPart.Drums; k <= EPart.Bass; k++)\r
+                               {\r
+                                       this.nヒット数_Auto含まない[k] = new CHitCountOfRank();\r
+                                       this.nヒット数_Auto含む[k] = new CHitCountOfRank();\r
+                                       this.nヒット数_TargetGhost[k] = new CHitCountOfRank();\r
+                                       this.queWailing[k] = new Queue<CChip>();\r
+                                       this.r現在の歓声Chip[k] = null;\r
+                                       if (CDTXMania.Instance.DTXVmode.Enabled)\r
+                                       {\r
+                                               CDTXMania.Instance.ConfigIni.nScrollSpeed[k] = CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[k];\r
+                                       }\r
 \r
-                       }\r
-                       actCombo.演奏判定ライン座標 = 演奏判定ライン座標;\r
-                       for (int i = 0; i < 3; i++)\r
-                       {\r
-                               this.b演奏にキーボードを使った[i] = false;\r
-                               this.b演奏にジョイパッドを使った[i] = false;\r
-                               this.b演奏にMIDI入力を使った[i] = false;\r
-                               this.b演奏にマウスを使った[i] = false;\r
-                       }\r
-                       cInvisibleChip.Reset();\r
-                       base.On活性化();\r
-                       this.tステータスパネルの選択();\r
-                       this.tパネル文字列の設定();\r
+                                       this.b演奏にキーボードを使った[k] = false;\r
+                                       this.b演奏にジョイパッドを使った[k] = false;\r
+                                       this.b演奏にMIDI入力を使った[k] = false;\r
+                                       this.b演奏にマウスを使った[k] = false;\r
+                               }\r
 \r
-                       this.bIsAutoPlay = CDTXMania.Instance.ConfigIni.bAutoPlay;                                                                      // #24239 2011.1.23 yyagi\r
-                       actGauge.Init(CDTXMania.Instance.ConfigIni.nRisky);                                                                     // #23559 2011.7.28 yyagi\r
-                       e判定表示優先度 = CDTXMania.Instance.ConfigIni.e判定表示優先度;\r
+                               cInvisibleChip.Reset();\r
+                               actGauge.Init(CDTXMania.Instance.ConfigIni.nRisky);\r
+                               // 効果音のストリームをミキサーから解除しておく\r
+                               CDTXMania.Instance.Skin.tRemoveMixerAll();\r
+                               queueMixerSound = new Queue<STMixer>(64);\r
+                               bIsDirectSound = (CDTXMania.Instance.Sound管理.GetCurrentSoundDeviceType() == "DirectSound");\r
+                               this.bPAUSE = false;\r
 \r
-                       CDTXMania.Instance.Skin.tRemoveMixerAll();      // 効果音のストリームをミキサーから解除しておく\r
+                               if (CDTXMania.Instance.DTXVmode.Enabled)\r
+                               {\r
+                                       db再生速度 = CDTXMania.Instance.DTX.dbDTXVPlaySpeed;\r
+                                       CDTXMania.Instance.ConfigIni.nPlaySpeed.Value = (int)(CDTXMania.Instance.DTX.dbDTXVPlaySpeed * 20 + 0.5);\r
+                               }\r
+                               else\r
+                               {\r
+                                       db再生速度 = ((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0;\r
+                               }\r
 \r
-                       queueMixerSound = new Queue<STMixer>(64);\r
-                       bIsDirectSound = (CDTXMania.Instance.Sound管理.GetCurrentSoundDeviceType() == "DirectSound");\r
-                       bUseOSTimer = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
-                       this.bPAUSE = false;\r
-                       if (CDTXMania.Instance.DTXVmode.Enabled)\r
-                       {\r
-                               db再生速度 = CDTXMania.Instance.DTX.dbDTXVPlaySpeed;\r
-                               CDTXMania.Instance.ConfigIni.n演奏速度 = (int)(CDTXMania.Instance.DTX.dbDTXVPlaySpeed * 20 + 0.5);\r
-                       }\r
-                       else\r
-                       {\r
-                               db再生速度 = ((double)CDTXMania.Instance.ConfigIni.n演奏速度) / 20.0;\r
-                       }\r
-                       bValidScore = (CDTXMania.Instance.DTXVmode.Enabled) ? false : true;\r
+                               bValidScore = (CDTXMania.Instance.DTXVmode.Enabled) ? false : true;\r
 \r
-                       cWailingChip = new CWailingChip共通[3];       // 0:未使用, 1:Gutiar, 2:Bass\r
-                       if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
-                       {\r
-                               cWailingChip[1] = new CWailngChip_Guitar_Drum画面(ref 演奏判定ライン座標);\r
-                               cWailingChip[2] = new CWailngChip_Bass_Drum画面(ref 演奏判定ライン座標);\r
-                       }\r
-                       else\r
-                       {\r
-                               cWailingChip[1] = new CWailngChip_Guitar_GR画面(ref 演奏判定ライン座標);\r
-                               cWailingChip[2] = new CWailngChip_Bass_GR画面(ref 演奏判定ライン座標);\r
-                       }\r
+                               cWailingChip = new CWailingChip共通[3];\r
+                               // 0:未使用, 1:Gutiar, 2:Bass\r
+                               cWailingChip[1] = new CWailingChip共通();\r
+                               cWailingChip[2] = new CWailingChip共通();\r
 \r
-                       #region [ 演奏開始前にmixer登録しておくべきサウンド(開幕してすぐに鳴らすことになるチップ音)を登録しておく ]\r
-                       foreach (CChip pChip in CDTXMania.Instance.DTX.listChip)\r
-                       {\r
-                               //                              Debug.WriteLine( "CH=" + pChip.nチャンネル番号.ToString( "x2" ) + ", 整数値=" + pChip.n整数値 +  ", time=" + pChip.n発声時刻ms );\r
-                               if (pChip.n発声時刻ms <= 0)\r
+                               #region [ 演奏開始前にmixer登録しておくべきサウンド(開幕してすぐに鳴らすことになるチップ音)を登録しておく ]\r
+                               foreach (CChip pChip in CDTXMania.Instance.DTX.listChip)\r
                                {\r
-                                       if (pChip.eチャンネル番号 == Ech定義.MixerAdd)\r
+                                       //                              Debug.WriteLine( "CH=" + pChip.nチャンネル番号.ToString( "x2" ) + ", 整数値=" + pChip.n整数値 +  ", time=" + pChip.n発声時刻ms );\r
+                                       if (pChip.n発声時刻ms <= 0)\r
                                        {\r
-                                               pChip.bHit = true;\r
-                                               //                                              Trace.TraceInformation( "first [DA] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値 + ", time=" + pChip.n発声時刻ms );\r
-                                               if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))\r
+                                               if (pChip.eチャンネル番号 == EChannel.MixerAdd)\r
                                                {\r
-                                                       CDTX.CWAV wc = CDTXMania.Instance.DTX.listWAV[pChip.n整数値_内部番号];\r
-                                                       for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPoliphonicSounds; i++)\r
+                                                       pChip.bHit = true;\r
+                                                       //                                              Trace.TraceInformation( "first [DA] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値 + ", time=" + pChip.n発声時刻ms );\r
+                                                       if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))\r
                                                        {\r
-                                                               if (wc.rSound[i] != null)\r
+                                                               CDTX.CWAV wc = CDTXMania.Instance.DTX.listWAV[pChip.n整数値_内部番号];\r
+                                                               for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPolyphonicSounds; i++)\r
                                                                {\r
-                                                                       CDTXMania.Instance.Sound管理.AddMixer(wc.rSound[i], db再生速度, pChip.b演奏終了後も再生が続くチップである);\r
-                                                                       //AddMixer( wc.rSound[ i ] );           // 最初はqueueを介さず直接ミキサー登録する\r
+                                                                       if (wc.rSound[i] != null)\r
+                                                                       {\r
+                                                                               CDTXMania.Instance.Sound管理.AddMixer(wc.rSound[i], db再生速度, pChip.b演奏終了後も再生が続くチップである);\r
+                                                                               //AddMixer( wc.rSound[ i ] );           // 最初はqueueを介さず直接ミキサー登録する\r
+                                                                       }\r
                                                                }\r
                                                        }\r
                                                }\r
                                        }\r
+                                       else\r
+                                       {\r
+                                               break;\r
+                                       }\r
                                }\r
-                               else\r
+                               #endregion\r
+\r
+                               if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)  // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え\r
                                {\r
-                                       break;\r
+                                       CDTXMania.Instance.DTX.SwapGuitarBassInfos();\r
                                }\r
-                       }\r
-                       #endregion\r
 \r
-                       if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)  // #24063 2011.1.24 yyagi Gt/Bsの譜面情報入れ替え\r
-                       {\r
-                               CDTXMania.Instance.DTX.SwapGuitarBassInfos();\r
+\r
+                               for (EPart inst = EPart.Drums; inst <= EPart.Bass; ++inst)\r
+                               {\r
+                                       // MODIFY_BEGIN #25398 2011.06.07 FROM\r
+                                       if (CDTXMania.Instance.bコンパクトモード)\r
+                                       {\r
+                                               var score = new Cスコア();\r
+                                               CDTXMania.Instance.Songs管理.tScoreIniを読み込んで譜面情報を設定する(CDTXMania.Instance.strコンパクトモードファイル + ".score.ini", ref score);\r
+                                               this.actGraph.dbTarget[inst] = score.譜面情報.最大スキル[inst];\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               if (CDTXMania.Instance.ConfigIni.b楽器有効(inst))\r
+                                               {\r
+                                                       this.actGraph.dbTarget[inst] = CDTXMania.Instance.stage選曲.r確定されたスコア.譜面情報.最大スキル[inst];   // #24074 2011.01.23 add ikanick\r
+\r
+                                                       // ゴースト利用可のなとき、0で初期化\r
+                                                       if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] != ETargetGhostData.None)\r
+                                                       {\r
+                                                               if (CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null)\r
+                                                               {\r
+                                                                       this.actGraph.dbTarget[inst] = 0;\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                                       // MODIFY_END #25398\r
+                               }\r
+\r
+                               for (EPart part = EPart.Drums; part <= EPart.Bass; ++part)\r
+                               {\r
+                                       if (CDTXMania.Instance.ConfigIni.b楽器有効(part))\r
+                                       {\r
+                                               actOptionPanel.Pos[part] = new Coordinates.CXY(CDTXMania.Instance.ConfigIni.cdInstX[part][CDTXMania.Instance.ConfigIni.eActiveInst]\r
+                                                       - CDTXMania.Instance.Coordinates.ImgOptionPanel.W, 0);\r
+                                       }\r
+                               }\r
+\r
+                               base.On活性化();\r
+\r
+                               // PANELの設定は、base.On活性化()の後に(actPanelの活性化の後)行うこと。\r
+                               // さもないと、actPanelが活性化されていないため、パネル文字列の設定が機能しなくなる。\r
+                               string strLabel = CDTXMania.Instance.stage選曲.r確定された曲.ar難易度ラベル[ CDTXMania.Instance.stage選曲.n確定された曲の難易度 ];\r
+                               string strPanel = CDTXMania.Instance.DTX.TITLE;\r
+                               //string strSETDEFlabel = CDTXMania.Instance.stage選曲.r確定された曲.strタイトル;\r
+                               if ( !string.IsNullOrWhiteSpace( strLabel ) && !strPanel.Contains(strLabel)\r
+                               //      && (strPanel == strSETDEFlabel)\r
+                               )\r
+                               {\r
+                                       strPanel += " (" + strLabel + ")";\r
+                               }\r
+                               this.actPanel.SetPanelString( strPanel );\r
                        }\r
                }\r
                public override void On非活性化()\r
                {\r
-                       this.L最後に再生したHHの実WAV番号.Clear();   // #23921 2011.1.4 yyagi\r
-                       this.L最後に再生したHHの実WAV番号 = null;    //\r
-                       for (int i = 0; i < 3; i++)\r
+                       if (b活性化してる)\r
                        {\r
-                               this.queWailing[i].Clear();\r
-                               this.queWailing[i] = null;\r
+                               // #23921 2011.1.4 yyagi\r
+                               L最後に再生したHHの実WAV番号.Clear();\r
+                               L最後に再生したHHの実WAV番号 = null;\r
+                               for (EPart i = 0; i <= EPart.Bass; i++)\r
+                               {\r
+                                       queWailing[i].Clear();\r
+                                       queWailing[i] = null;\r
+                               }\r
+                               ctWailingチップ模様アニメ = null;\r
+                               ctチップ模様アニメ.Drums = null;\r
+                               ctチップ模様アニメ.Guitar = null;\r
+                               ctチップ模様アニメ.Bass = null;\r
+                               queueMixerSound.Clear();\r
+                               queueMixerSound = null;\r
+                               cInvisibleChip.Dispose();\r
+                               cInvisibleChip = null;\r
+                               base.On非活性化();\r
                        }\r
-                       this.ctWailingチップ模様アニメ = null;\r
-                       this.ctチップ模様アニメ.Drums = null;\r
-                       this.ctチップ模様アニメ.Guitar = null;\r
-                       this.ctチップ模様アニメ.Bass = null;\r
-                       queueMixerSound.Clear();\r
-                       queueMixerSound = null;\r
-                       cInvisibleChip.Dispose();\r
-                       cInvisibleChip = null;\r
-                       //                      GCSettings.LatencyMode = this.gclatencymode;\r
-                       base.On非活性化();\r
                }\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
-                               this.t背景テクスチャの生成();\r
-\r
-                               this.txWailing枠 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay wailing cursor.png"));\r
-\r
+                               txチップ = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums chips.png"));\r
+                               txチップGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayGuitar chips.png"));\r
+                               txヒットバー = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar.png"));\r
+                               txヒットバーGB = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlayDrums hit-bar guitar.png"));\r
+                               txWailing枠 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenPlay wailing cursor.png"));\r
+                               t背景テクスチャの生成();\r
                                base.OnManagedリソースの作成();\r
                        }\r
+\r
                }\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
                                TextureFactory.tテクスチャの解放(ref this.tx背景);\r
-\r
                                TextureFactory.tテクスチャの解放(ref this.txWailing枠);\r
+                               TextureFactory.tテクスチャの解放(ref this.txヒットバーGB);\r
+                               TextureFactory.tテクスチャの解放(ref this.txヒットバー);\r
+                               TextureFactory.tテクスチャの解放(ref this.txチップGB);\r
+                               TextureFactory.tテクスチャの解放(ref this.txチップ);\r
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
                public override int On進行描画()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (b活性化してる)\r
                        {\r
                                bool bIsFinishedPlaying = false;\r
                                bool bIsFinishedFadeout = false;\r
 \r
-                               if (base.b初めての進行描画)\r
+                               if (b初めての進行描画)\r
                                {\r
-                                       this.PrepareAVITexture();\r
+                                       PrepareAVITexture();\r
 \r
                                        CSound管理.rc演奏用タイマ.tリセット();\r
                                        CDTXMania.Instance.Timer.tリセット();\r
-                                       if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+                                       if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                                       {\r
+                                               ctチップ模様アニメ.Drums = new CCounter(0, 48, 10, CDTXMania.Instance.Timer);\r
+                                       }\r
+                                       if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
                                        {\r
-                                               this.ctチップ模様アニメ.Drums = new CCounter(0, 0x30, 10, CDTXMania.Instance.Timer);\r
+                                               ctチップ模様アニメ.Guitar = new CCounter(0, 48, 20, CDTXMania.Instance.Timer);\r
+                                               ctチップ模様アニメ.Bass = new CCounter(0, 48, 20, CDTXMania.Instance.Timer);\r
+                                               ctWailingチップ模様アニメ = new CCounter(0, 4, 50, CDTXMania.Instance.Timer);\r
                                        }\r
-                                       this.ctチップ模様アニメ.Guitar = new CCounter(0, 0x17, 20, CDTXMania.Instance.Timer);\r
-                                       this.ctチップ模様アニメ.Bass = new CCounter(0, 0x17, 20, CDTXMania.Instance.Timer);\r
-                                       this.ctWailingチップ模様アニメ = new CCounter(0, 4, 50, CDTXMania.Instance.Timer);\r
 \r
                                        // this.actChipFireD.Start( Eレーン.HH );    // #31554 2013.6.12 yyagi\r
                                        // 初チップヒット時のもたつき回避。最初にactChipFireD.Start()するときにJITが掛かって?\r
@@ -516,9 +570,9 @@ namespace DTXMania
                                        // 一発Start()を掛けてJITの結果を生成させておく。\r
 \r
                                        base.eフェーズID = CStage.Eフェーズ.共通_フェードイン;\r
-                                       this.actFI.tフェードイン開始();\r
+                                       actFI.tフェードイン開始();\r
 \r
-                                       if (CDTXMania.Instance.DTXVmode.Enabled)                        // DTXVモードなら\r
+                                       if (CDTXMania.Instance.DTXVmode.Enabled)\r
                                        {\r
                                                #region [ DTXV用の再生設定にする(全AUTOなど) ]\r
                                                tDTXV用の設定();\r
@@ -527,80 +581,116 @@ namespace DTXMania
                                        }\r
 \r
                                        CDTXMania.Instance.Sound管理.tDisableUpdateBufferAutomatically();\r
-                                       base.b初めての進行描画 = false;\r
+                                       b初めての進行描画 = false;\r
                                }\r
 \r
                                #region [ stage failed ]\r
-                               if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+                               if (CDTXMania.Instance.ConfigIni.bStageFailed && (base.eフェーズID == CStage.Eフェーズ.共通_通常状態))\r
                                {\r
-                                       if (CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効 && (base.eフェーズID == CStage.Eフェーズ.共通_通常状態))\r
+                                       if (actGauge.IsFailed)\r
                                        {\r
-                                               bool failedCondition = false;\r
-\r
-                                               if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                                               {\r
-                                                       bool bFailedGuitar = this.actGauge.IsFailed(E楽器パート.GUITAR); // #23630 2011.11.12 yyagi: deleted AutoPlay condition: not to be failed at once\r
-                                                       bool bFailedBass = this.actGauge.IsFailed(E楽器パート.BASS); // #23630\r
-                                                       bool bFailedNoChips = (!CDTXMania.Instance.DTX.bチップがある.Guitar && !CDTXMania.Instance.DTX.bチップがある.Bass); // #25216 2011.5.21 yyagi add condition\r
-                                                       failedCondition = bFailedGuitar || bFailedBass || bFailedNoChips; // #25216 2011.5.21 yyagi: changed codition: && -> ||\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       failedCondition = this.actGauge.IsFailed(E楽器パート.DRUMS);\r
-                                               }\r
-\r
-                                               if (failedCondition)\r
-                                               {\r
-                                                       this.actStageFailed.Start();\r
-                                                       CDTXMania.Instance.DTX.t全チップの再生停止();\r
-                                                       base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;\r
-                                               }\r
+                                               actStageFailed.Start();\r
+                                               CDTXMania.Instance.DTX.t全チップの再生停止();\r
+                                               base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED;\r
                                        }\r
                                }\r
                                #endregion\r
 \r
-                               this.t進行描画_AVI();\r
-                               this.t進行描画_背景();\r
-                               this.t進行描画_MIDIBGM();\r
-                               this.t進行描画_パネル文字列();\r
-                               this.t進行描画_スコア();\r
-                               this.t進行描画_BGA();\r
-                               this.t進行描画_ステータスパネル();\r
-\r
-                               this.t進行描画_ギターベース判定ライン();\r
-                               this.t進行描画_レーンフラッシュGB();\r
-                               this.t進行描画_ゲージ();\r
-\r
-                               this.t進行描画_DANGER();\r
-                               this.t進行描画_WailingBonus();\r
-                               this.t進行描画_譜面スクロール速度();\r
-                               this.t進行描画_チップアニメ();\r
-                               bIsFinishedPlaying = this.t進行描画_チップ(CDTXMania.Instance.ConfigIni.bギタレボモード ? E楽器パート.GUITAR : E楽器パート.DRUMS);\r
-                               this.t進行描画_演奏情報();\r
-                               this.t進行描画_RGBボタン();\r
-                               if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+                               // Background\r
+                               if (CDTXMania.Instance.ConfigIni.eDark == EDark.Off)\r
                                {\r
-                                       this.t進行描画_判定文字列();\r
+                                       if (tx背景 != null)\r
+                                       {\r
+                                               tx背景.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
+                                       }\r
                                }\r
-                               else\r
+\r
+                               // AVI / BGA\r
+                               if (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED &&\r
+                                       base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)\r
                                {\r
-                                       this.t進行描画_判定文字列1_通常位置指定の場合();\r
+                                       actAVI.t進行描画(\r
+                                               CDTXMania.Instance.ConfigIni.cdMovieX[CDTXMania.Instance.ConfigIni.eActiveInst],\r
+                                               CDTXMania.Instance.ConfigIni.cdMovieY[CDTXMania.Instance.ConfigIni.eActiveInst],\r
+                                               CDTXMania.Instance.Coordinates.Movie.W,\r
+                                               CDTXMania.Instance.Coordinates.Movie.H);\r
+                                       actBGA.On進行描画();\r
+                                       #region [MIDIBGM 処理?]\r
+                                       if (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED)\r
+                                       {\r
+                                               CStage.Eフェーズ eフェーズid1 = base.eフェーズID;\r
+                                       }\r
+                                       #endregion\r
+                                       actLane.On進行描画();\r
+                                       actLaneFlushGB.On進行描画();\r
+                                       actPanel.On進行描画();\r
+                                       actScore.On進行描画();\r
+                                       actOptionPanel.On進行描画();\r
+                                       actGauge.On進行描画();\r
+                                       actGraph.On進行描画();\r
+                                       actLaneFlushD.On進行描画();\r
+                                       actDANGER.t進行描画(actGauge.IsDanger);\r
+                                       act譜面スクロール速度.On進行描画();\r
+                                       t進行描画_判定ライン();\r
+                                       actWailingBonus.On進行描画();\r
+\r
+                                       // RGB, Judge, Combo (Priority Under Chip)\r
+                                       if (CDTXMania.Instance.ConfigIni.eJudgePriority == EJudgeDisplayPriority.Under)\r
+                                       {\r
+                                               actRGB.On進行描画();\r
+                                               actJudgeString.On進行描画();\r
+                                               actCombo.On進行描画();\r
+                                       }\r
+                                       t進行描画_チップアニメ();\r
+                                       bIsFinishedPlaying = t進行描画_チップ();\r
+                                       actPad.On進行描画();\r
+\r
+                                       // RGB, Judge, Combo (Priority Over Chip)\r
+                                       if (CDTXMania.Instance.ConfigIni.eJudgePriority == EJudgeDisplayPriority.Over)\r
+                                       {\r
+                                               actRGB.On進行描画();\r
+                                               actJudgeString.On進行描画();\r
+                                               actCombo.On進行描画();\r
+                                       }\r
+\r
+                                       actChipFireD.On進行描画();\r
+                                       actChipFireGB.On進行描画();\r
+                                       actPlayInfo.On進行描画();\r
+\r
+                                       // Wailing\r
+                                       if ((CDTXMania.Instance.ConfigIni.eDark != EDark.Full) &&\r
+                                               CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+                                       {\r
+                                               int GtWailingFrameX = CDTXMania.Instance.ConfigIni.GetLaneX(ELane.GtW) +\r
+                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(ELane.GtW) - CDTXMania.Instance.Coordinates.ImgGtWailingFrame.W) / 2;\r
+                                               int BsWailingFrameX = CDTXMania.Instance.ConfigIni.GetLaneX(ELane.BsW) +\r
+                                                       (CDTXMania.Instance.ConfigIni.GetLaneW(ELane.BsW) - CDTXMania.Instance.Coordinates.ImgGtWailingFrame.W) / 2;\r
+                                               int GtWailingFrameY = C演奏判定ライン座標共通.n判定ラインY座標(EPart.Guitar, true, true);\r
+                                               int BsWailingFrameY = C演奏判定ライン座標共通.n判定ラインY座標(EPart.Bass, true, true);\r
+\r
+                                               if (txWailing枠 != null)\r
+                                               {\r
+                                                       if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
+                                                       {\r
+                                                               txWailing枠.t2D描画(CDTXMania.Instance.Device, GtWailingFrameX, GtWailingFrameY);\r
+                                                       }\r
+                                                       if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
+                                                       {\r
+                                                               txWailing枠.t2D描画(CDTXMania.Instance.Device, BsWailingFrameX, BsWailingFrameY);\r
+                                                       }\r
+                                               }\r
+                                       }\r
                                }\r
-                               this.t進行描画_コンボ();\r
-                               this.t進行描画_Wailing枠();\r
-                               this.t進行描画_チップファイアGB();\r
-                               this.t進行描画_STAGEFAILED();\r
 \r
-                               if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+                               // Stage Failed\r
+                               if (((base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED) ||\r
+                                       (base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)) &&\r
+                                       ((actStageFailed.On進行描画() != 0) &&\r
+                                       (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)))\r
                                {\r
-                                       this.t進行描画_ギターベースフレーム();\r
-                                       this.t進行描画_判定文字列2_判定ライン上指定の場合();\r
-                                       this.t進行描画_チップファイアD();\r
-                                       this.t進行描画_ドラムパッド();\r
-                                       this.t進行描画_ギターベース判定ライン();\r
-                                       this.t進行描画_判定ライン();\r
-                                       this.t進行描画_レーンフラッシュD();\r
-                                       this.t進行描画_グラフ();   // #24074 2011.01.23 add ikanick\r
+                                       eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージ失敗;\r
+                                       base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト;\r
+                                       actFO.tフェードアウト開始();\r
                                }\r
 \r
                                bIsFinishedFadeout = this.t進行描画_フェードイン_アウト();\r
@@ -610,8 +700,8 @@ namespace DTXMania
                                        {\r
                                                if (CDTXMania.Instance.Timer.b停止していない)\r
                                                {\r
-                                                       this.actPanel.Stop();                           // PANEL表示停止\r
-                                                       CDTXMania.Instance.Timer.t一時停止();               // 再生時刻カウンタ停止\r
+                                                       actPanel.Stop();\r
+                                                       CDTXMania.Instance.Timer.t一時停止();\r
                                                }\r
                                                Thread.Sleep(5);\r
                                                // DTXCからの次のメッセージを待ち続ける\r
@@ -625,23 +715,22 @@ namespace DTXMania
                                                t演奏結果を格納する_ギター();\r
                                                t演奏結果を格納する_ベース();\r
 \r
-                                               if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+                                               if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
                                                {\r
-                                                       r空打ちドラムチップ = new CChip[10];\r
-                                                       for (int i = 0; i < 10; i++)\r
+                                                       for (EPad pad = EPad.DrumsPadMin; pad < EPad.DrumsPadMax; pad++)\r
                                                        {\r
-                                                               r空打ちドラムチップ[i] = this.r空うちChip(E楽器パート.DRUMS, (Eパッド)i);\r
-                                                               if (r空打ちドラムチップ[i] == null)\r
+                                                               r空打ちドラムチップ[pad] = r空うちChip(EPart.Drums, pad);\r
+                                                               if (r空打ちドラムチップ[pad] == null)\r
                                                                {\r
-                                                                       r空打ちドラムチップ[i] = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(\r
-                                                                               CSound管理.rc演奏用タイマ.n現在時刻,\r
-                                                                               this.nパッド0Atoチャンネル0A[i],\r
-                                                                               this.nInputAdjustTimeMs.Drums);\r
+                                                                       r空打ちドラムチップ[pad] = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(\r
+                                                                                       CSound管理.rc演奏用タイマ.n現在時刻,\r
+                                                                                       EnumConverter.ChannelFromPad(pad),\r
+                                                                                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums);\r
                                                                }\r
                                                        }\r
                                                }\r
 \r
-                                               if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)          // #24063 2011.1.24 yyagi Gt/Bsを入れ替えていたなら、演奏結果も入れ替える\r
+                                               if (CDTXMania.Instance.ConfigIni.bIsSwappedGuitarBass)      // #24063 2011.1.24 yyagi Gt/Bsを入れ替えていたなら、演奏結果も入れ替える\r
                                                {\r
                                                        CScoreIni.C演奏記録 t;\r
                                                        t = record.Guitar;\r
@@ -683,11 +772,11 @@ namespace DTXMania
                }\r
 \r
                // その他\r
-               public CChip[] GetNoChipDrums()\r
+               public STPadValue<CChip> GetNoChipDrums()\r
                {\r
                        return r空打ちドラムチップ;\r
                }\r
-               public STDGBVALUE<CScoreIni.C演奏記録> Record\r
+               public STDGBSValue<CScoreIni.C演奏記録> Record\r
                {\r
                        get\r
                        {\r
@@ -724,9 +813,11 @@ namespace DTXMania
                                //Debug.WriteLine( "☆queueLength=" + queueMixerSound.Count );\r
                                DateTime dtnow = DateTime.Now;\r
                                TimeSpan ts = dtnow - dtLastQueueOperation;\r
-                               if (ts.Milliseconds > 7)\r
+                               int nInterval = ( CDTXMania.Instance.ConfigIni.bVSyncWait ) ? 7 : 1;\r
+                               int nMaxDequeueCount = ( CDTXMania.Instance.ConfigIni.bVSyncWait ) ? 2 : 1;\r
+                               if (ts.Milliseconds > nInterval)\r
                                {\r
-                                       for (int i = 0; i < 2 && queueMixerSound.Count > 0; i++)\r
+                                       for (int i = 0; i < nMaxDequeueCount && queueMixerSound.Count > 0; i++)\r
                                        {\r
                                                dtLastQueueOperation = dtnow;\r
                                                STMixer stm = queueMixerSound.Dequeue();\r
@@ -748,11 +839,11 @@ namespace DTXMania
                /// </summary>\r
                protected void PrepareAVITexture()\r
                {\r
-                       if (CDTXMania.Instance.ConfigIni.bAVI有効)\r
+                       if (CDTXMania.Instance.ConfigIni.bAVI)\r
                        {\r
                                foreach (CChip pChip in CDTXMania.Instance.DTX.listChip)\r
                                {\r
-                                       if (pChip.eチャンネル番号 == Ech定義.Movie || pChip.eチャンネル番号 == Ech定義.MovieFull)\r
+                                       if (pChip.eチャンネル番号 == EChannel.Movie || pChip.eチャンネル番号 == EChannel.MovieFull)\r
                                        {\r
                                                // 最初に再生するAVIチップに合わせて、テクスチャを準備しておく\r
                                                if (pChip.rAVI != null)\r
@@ -765,7 +856,7 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               protected E判定 e指定時刻からChipのJUDGEを返す(long nTime, CChip pChip, int nInputAdjustTime, bool saveLag = true)\r
+               protected EJudge e指定時刻からChipのJUDGEを返す(long nTime, CChip pChip, int nInputAdjustTime, bool saveLag = true)\r
                {\r
                        if (pChip != null)\r
                        {\r
@@ -773,10 +864,11 @@ namespace DTXMania
                                int lag = (int)(nTime + nInputAdjustTime - pChip.n発声時刻ms);\r
                                if (saveLag)\r
                                {\r
-                                       pChip.nLag = lag;       // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
-                                       if (pChip.e楽器パート != E楽器パート.UNKNOWN)\r
+                                       pChip.nLag = lag;\r
+                                       // #23580 2011.1.3 yyagi: add "nInputAdjustTime" to add input timing adjust feature\r
+                                       if (pChip.e楽器パート != EPart.Unknown)\r
                                        {\r
-                                               pChip.extendInfoForGhost = this.actCombo.n現在のコンボ数[(int)pChip.e楽器パート] > 0 ? true : false;\r
+                                               pChip.extendInfoForGhost = this.actCombo.dgbコンボ数[pChip.e楽器パート].n現在値 > 0 ? true : false;\r
                                        }\r
                                }\r
                                // #35411 modify end\r
@@ -785,38 +877,39 @@ namespace DTXMania
                                //Debug.WriteLine("nAbsTime=" + (nTime - pChip.n発声時刻ms) + ", nDeltaTime=" + (nTime + nInputAdjustTime - pChip.n発声時刻ms));\r
                                if (nDeltaTime <= CDTXMania.Instance.nPerfect範囲ms)\r
                                {\r
-                                       return E判定.Perfect;\r
+                                       return EJudge.Perfect;\r
                                }\r
                                if (nDeltaTime <= CDTXMania.Instance.nGreat範囲ms)\r
                                {\r
-                                       return E判定.Great;\r
+                                       return EJudge.Great;\r
                                }\r
                                if (nDeltaTime <= CDTXMania.Instance.nGood範囲ms)\r
                                {\r
-                                       return E判定.Good;\r
+                                       return EJudge.Good;\r
                                }\r
                                if (nDeltaTime <= CDTXMania.Instance.nPoor範囲ms)\r
                                {\r
-                                       return E判定.Poor;\r
+                                       return EJudge.Poor;\r
                                }\r
                        }\r
-                       return E判定.Miss;\r
+                       return EJudge.Miss;\r
                }\r
-               protected CChip r空うちChip(E楽器パート part, Eパッド pad)\r
+\r
+               protected CChip r空うちChip(EPart part, EPad pad)\r
                {\r
                        switch (part)\r
                        {\r
-                               case E楽器パート.DRUMS:\r
+                               case EPart.Drums:\r
                                        switch (pad)\r
                                        {\r
-                                               case Eパッド.HH:\r
+                                               case EPad.HH:\r
                                                        if (this.r現在の空うちドラムChip.HH != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.HH;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.HO_HC)\r
                                                        {\r
-                                                               if (CDTXMania.Instance.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける)\r
+                                                               if (CDTXMania.Instance.ConfigIni.eHHGroup == EHHGroup.LC_HH)\r
                                                                {\r
                                                                        return this.r現在の空うちドラムChip.HHO;\r
                                                                }\r
@@ -827,56 +920,56 @@ namespace DTXMania
                                                        }\r
                                                        return this.r現在の空うちドラムChip.LC;\r
 \r
-                                               case Eパッド.SD:\r
+                                               case EPad.SD:\r
                                                        return this.r現在の空うちドラムChip.SD;\r
 \r
-                                               case Eパッド.BD:\r
+                                               case EPad.BD:\r
                                                        return this.r現在の空うちドラムChip.BD;\r
 \r
-                                               case Eパッド.HT:\r
+                                               case EPad.HT:\r
                                                        return this.r現在の空うちドラムChip.HT;\r
 \r
-                                               case Eパッド.LT:\r
+                                               case EPad.LT:\r
                                                        if (this.r現在の空うちドラムChip.LT != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.LT;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eFTGroup == EFTGroup.共通)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eFTGroup == EFTGroup.Group)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.FT;\r
                                                        }\r
                                                        return null;\r
 \r
-                                               case Eパッド.FT:\r
+                                               case EPad.FT:\r
                                                        if (this.r現在の空うちドラムChip.FT != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.FT;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eFTGroup == EFTGroup.共通)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eFTGroup == EFTGroup.Group)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.LT;\r
                                                        }\r
                                                        return null;\r
 \r
-                                               case Eパッド.CY:\r
+                                               case EPad.CY:\r
                                                        if (this.r現在の空うちドラムChip.CY != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.CY;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.共通)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.Group)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.RD;\r
                                                        }\r
                                                        return null;\r
 \r
-                                               case Eパッド.HHO:\r
+                                               case EPad.HHO:\r
                                                        if (this.r現在の空うちドラムChip.HHO != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.HHO;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.HO_HC)\r
                                                        {\r
-                                                               if (CDTXMania.Instance.ConfigIni.eHHGroup == EHHGroup.左シンバルのみ打ち分ける)\r
+                                                               if (CDTXMania.Instance.ConfigIni.eHHGroup == EHHGroup.LC_HH)\r
                                                                {\r
                                                                        return this.r現在の空うちドラムChip.HH;\r
                                                                }\r
@@ -887,23 +980,23 @@ namespace DTXMania
                                                        }\r
                                                        return this.r現在の空うちドラムChip.LC;\r
 \r
-                                               case Eパッド.RD:\r
+                                               case EPad.RD:\r
                                                        if (this.r現在の空うちドラムChip.RD != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.RD;\r
                                                        }\r
-                                                       if (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.共通)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.Group)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.CY;\r
                                                        }\r
                                                        return null;\r
 \r
-                                               case Eパッド.LC:\r
+                                               case EPad.LC:\r
                                                        if (this.r現在の空うちドラムChip.LC != null)\r
                                                        {\r
                                                                return this.r現在の空うちドラムChip.LC;\r
                                                        }\r
-                                                       if ((CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.ハイハットのみ打ち分ける) && (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.全部共通))\r
+                                                       if ((CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.HO_HC) && (CDTXMania.Instance.ConfigIni.eHHGroup != EHHGroup.Group))\r
                                                        {\r
                                                                return null;\r
                                                        }\r
@@ -915,31 +1008,26 @@ namespace DTXMania
                                        }\r
                                        break;\r
 \r
-                               case E楽器パート.GUITAR:\r
+                               case EPart.Guitar:\r
                                        return this.r現在の空うちギターChip;\r
 \r
-                               case E楽器パート.BASS:\r
+                               case EPart.Bass:\r
                                        return this.r現在の空うちベースChip;\r
                        }\r
                        return null;\r
                }\r
-               protected CChip r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(long nTime, Ech定義 eChannel, int nInputAdjustTime)\r
+\r
+               protected CChip r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(long nTime, EChannel eChannel, int nInputAdjustTime)\r
                {\r
                        return r指定時刻に一番近い未ヒットChip(nTime, eChannel, nInputAdjustTime, 0, HitState.DontCare);\r
                }\r
-               protected void tサウンド再生(CChip rChip, long n再生開始システム時刻ms, E楽器パート part)\r
-               {\r
-                       this.tサウンド再生(rChip, n再生開始システム時刻ms, part, CDTXMania.Instance.ConfigIni.n手動再生音量, false, false);\r
-               }\r
-               protected void tサウンド再生(CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量)\r
-               {\r
-                       this.tサウンド再生(rChip, n再生開始システム時刻ms, part, n音量, false, false);\r
-               }\r
-               protected void tサウンド再生(CChip rChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ)\r
+\r
+               protected void tサウンド再生(CChip rChip, long n再生開始システム時刻ms, EPart part)\r
                {\r
-                       this.tサウンド再生(rChip, n再生開始システム時刻ms, part, n音量, bモニタ, false);\r
+                       this.tサウンド再生(rChip, n再生開始システム時刻ms, part, CDTXMania.Instance.ConfigIni.nChipVolume);\r
                }\r
-               protected void tサウンド再生(CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生)\r
+\r
+               protected void tサウンド再生(CChip pChip, long n再生開始システム時刻ms, EPart part, int n音量, bool bモニタ = false, bool b音程をずらして再生 = false)\r
                {\r
                        // mute sound (auto)\r
                        // 4A: HH\r
@@ -955,7 +1043,7 @@ namespace DTXMania
                                bool overwrite = false;\r
                                switch (part)\r
                                {\r
-                                       case E楽器パート.DRUMS:\r
+                                       case EPart.Drums:\r
                                                #region [ DRUMS ]\r
                                                {\r
                                                        int index = -1;\r
@@ -974,27 +1062,27 @@ namespace DTXMania
                                                        // 4D: 87: LC\r
                                                        // 2A: 88: Gt\r
                                                        // AA: 89: Bs\r
-                                                       else if (Ech定義.SE24 == pChip.eチャンネル番号)        // 仮に今だけ追加 HHは消音処理があるので overwriteフラグ系の処理は改めて不要\r
+                                                       else if (EChannel.SE24 == pChip.eチャンネル番号)  // 仮に今だけ追加 HHは消音処理があるので overwriteフラグ系の処理は改めて不要\r
                                                        {\r
                                                                index = 0;\r
                                                        }\r
-                                                       else if ((Ech定義.SE25 <= pChip.eチャンネル番号) && (pChip.eチャンネル番号 <= Ech定義.SE27))  // 仮に今だけ追加\r
+                                                       else if ((EChannel.SE25 <= pChip.eチャンネル番号) && (pChip.eチャンネル番号 <= EChannel.SE27))  // 仮に今だけ追加\r
                                                        {\r
                                                                pChip.ConvertSE25_26_27toCY_RCY_LCY();\r
-                                                               index = pChip.eチャンネル番号 - Ech定義.HiHatClose;\r
+                                                               index = pChip.nDrumsIndex;\r
                                                                overwrite = true;\r
                                                        }\r
                                                        else\r
                                                        {\r
                                                                return;\r
                                                        }\r
-                                                       int nLane = CStage演奏画面共通.nチャンネル0Atoレーン07[index];\r
-                                                       if ((nLane == 1) &&     // 今回演奏するのがHC or HO\r
-                                                               (index == 0 || (\r
-                                                               index == 7 &&\r
-                                                               this.e最後に再生したHHのチャンネル番号 != Ech定義.HiHatOpen &&\r
-                                                               this.e最後に再生したHHのチャンネル番号 != Ech定義.HiHatOpen_Hidden))\r
-                                                               // HCを演奏するか、またはHO演奏&以前HO演奏でない&以前不可視HO演奏でない\r
+                                                       EChannel actChannel = EChannel.HiHatClose + index;\r
+                                                       ELane nLane = EnumConverter.LaneFromChannel(actChannel);\r
+                                                       if ((nLane == ELane.HH) && // 今回演奏するのがHC or HO\r
+                                                                       (index == 0 || (index == 7 &&\r
+                                                                       this.e最後に再生したHHのチャンネル番号 != EChannel.HiHatOpen &&\r
+                                                                       this.e最後に再生したHHのチャンネル番号 != EChannel.HiHatOpen_Hidden))\r
+                                                       // HCを演奏するか、またはHO演奏&以前HO演奏でない&以前不可視HO演奏でない\r
                                                        )\r
                                                        // #24772 2011.4.4 yyagi\r
                                                        // == HH mute condition == \r
@@ -1004,258 +1092,233 @@ namespace DTXMania
                                                        //                      HO      Yes     No\r
                                                        {\r
                                                                // #23921 2011.1.4 yyagi: 2種類以上のオープンハイハットが発音済みだと、最後のHHOしか消せない問題に対応。\r
-#if TEST_NOTEOFFMODE   // 2011.1.1 yyagi test\r
-                                                               if (CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH)\r
+                                                               for (int i = 0; i < this.L最後に再生したHHの実WAV番号.Count; i++)      // #23921 2011.1.4 yyagi\r
                                                                {\r
-#endif\r
-                                                               for (int i = 0; i < this.L最後に再生したHHの実WAV番号.Count; i++)            // #23921 2011.1.4 yyagi\r
-                                                               {\r
-                                                                       // CDTXMania.Instance.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号);\r
-                                                                       CDTXMania.Instance.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号[i]);    // #23921 yyagi ストック分全て消音する\r
+                                                                       CDTXMania.Instance.DTX.tWavの再生停止(this.L最後に再生したHHの実WAV番号[i]);    // #23921 yyagi ストック分全て消音する\r
                                                                }\r
                                                                this.L最後に再生したHHの実WAV番号.Clear();\r
-#if TEST_NOTEOFFMODE   // 2011.1.1 yyagi test\r
-                                                               }\r
-#endif\r
-                                                               //this.n最後に再生したHHの実WAV番号 = pChip.n整数値_内部番号;\r
                                                                this.e最後に再生したHHのチャンネル番号 = pChip.eチャンネル番号;\r
                                                        }\r
-#if TEST_NOTEOFFMODE   // 2011.1.4 yyagi test\r
-                                                       if (CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH)\r
+                                                       if (index == 0 || index == 7)\r
                                                        {\r
-#endif\r
-                                                       if (index == 0 || index == 7 || index == 0x20 || index == 0x27)                 // #23921 HOまたは不可視HO演奏時はそのチップ番号をストックしておく\r
-                                                       {                                                                                                                                                       // #24772 HC, 不可視HCも消音キューに追加\r
-                                                               if (this.L最後に再生したHHの実WAV番号.Count >= 16)   // #23921 ただしストック数が16以上になるようなら、頭の1個を削って常に16未満に抑える\r
-                                                               {                                                                                                       // (ストックが増えてList<>のrealloc()が発生するのを予防する)\r
+                                                               // #23921 HOまたは不可視HO演奏時はそのチップ番号をストックしておく\r
+                                                               // #24772 HC, 不可視HCも消音キューに追加\r
+                                                               if (this.L最後に再生したHHの実WAV番号.Count >= 16)\r
+                                                               {\r
+                                                                       // #23921 ただしストック数が16以上になるようなら、頭の1個を削って常に16未満に抑える\r
+                                                                       // (ストックが増えてList<>のrealloc()が発生するのを予防する)\r
                                                                        this.L最後に再生したHHの実WAV番号.RemoveAt(0);\r
                                                                }\r
-                                                               if (!this.L最後に再生したHHの実WAV番号.Contains(pChip.n整数値_内部番号))      // チップ音がまだストックされてなければ\r
+                                                               if (!this.L最後に再生したHHの実WAV番号.Contains(pChip.n整数値_内部番号))\r
                                                                {\r
-                                                                       this.L最後に再生したHHの実WAV番号.Add(pChip.n整数値_内部番号);                        // ストックする\r
+                                                                       // チップ音がまだストックされてなければストックする                                                             \r
+                                                                       this.L最後に再生したHHの実WAV番号.Add(pChip.n整数値_内部番号);\r
                                                                }\r
                                                        }\r
-#if TEST_NOTEOFFMODE   // 2011.1.4 yyagi test\r
-                                                       }\r
-#endif\r
                                                        if (overwrite)\r
                                                        {\r
-                                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号[index]);\r
+\r
+                                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号[EnumConverter.PadFromChannel(actChannel)]);\r
                                                        }\r
-                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, nLane, n音量, bモニタ);\r
-                                                       this.n最後に再生した実WAV番号[nLane] = pChip.n整数値_内部番号;         // nLaneでなくindexにすると、LC(1A-11=09)とギター(enumで09)がかぶってLC音が消されるので注意\r
+                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, n音量, bモニタ);\r
+                                                       this.n最後に再生した実WAV番号[EnumConverter.PadFromLane(nLane)] = pChip.n整数値_内部番号;\r
+                                                       // nLaneでなくindexにすると、LC(1A-11=09)とギター(enumで09)がかぶってLC音が消されるので注意\r
                                                        return;\r
                                                }\r
-                                               #endregion\r
-                                       case E楽器パート.GUITAR:\r
+                                       #endregion\r
+                                       case EPart.Guitar:\r
                                                #region [ GUITAR ]\r
-#if TEST_NOTEOFFMODE   // 2011.1.1 yyagi test\r
-                                               if (CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Guitar) {\r
-#endif\r
-                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号.Guitar);\r
-#if TEST_NOTEOFFMODE\r
-                                               }\r
-#endif\r
-                                               CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, (int)Eレーン.Guitar, n音量, bモニタ, b音程をずらして再生);\r
-                                               this.n最後に再生した実WAV番号.Guitar = pChip.n整数値_内部番号;\r
+                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号.GtPick);\r
+                                               CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, n音量, bモニタ, b音程をずらして再生);\r
+                                               this.n最後に再生した実WAV番号.GtPick = pChip.n整数値_内部番号;\r
                                                return;\r
-                                               #endregion\r
-                                       case E楽器パート.BASS:\r
+                                       #endregion\r
+                                       case EPart.Bass:\r
                                                #region [ BASS ]\r
-#if TEST_NOTEOFFMODE\r
-                                               if (CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass) {\r
-#endif\r
-                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号.Bass);\r
-#if TEST_NOTEOFFMODE\r
-                                               }\r
-#endif\r
-                                               CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, (int)Eレーン.Bass, n音量, bモニタ, b音程をずらして再生);\r
-                                               this.n最後に再生した実WAV番号.Bass = pChip.n整数値_内部番号;\r
+                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生した実WAV番号.BsPick);\r
+                                               CDTXMania.Instance.DTX.tチップの再生(pChip, n再生開始システム時刻ms, n音量, bモニタ, b音程をずらして再生);\r
+                                               this.n最後に再生した実WAV番号.BsPick = pChip.n整数値_内部番号;\r
                                                return;\r
-                                               #endregion\r
+                                       #endregion\r
 \r
                                        default:\r
                                                break;\r
                                }\r
                        }\r
                }\r
-               protected void tステータスパネルの選択()\r
-               {\r
-                       if (CDTXMania.Instance.bコンパクトモード)\r
-                       {\r
-                               this.actStatusPanels.tラベル名からステータスパネルを決定する(null);\r
-                       }\r
-                       else if (CDTXMania.Instance.stage選曲.r確定された曲 != null)\r
-                       {\r
-                               this.actStatusPanels.tラベル名からステータスパネルを決定する(CDTXMania.Instance.stage選曲.r確定された曲.ar難易度ラベル[CDTXMania.Instance.stage選曲.n確定された曲の難易度]);\r
-                       }\r
-               }\r
 \r
-               protected E判定 tチップのヒット処理(long nHitTime, CChip pChip, bool bCorrectLane = true)\r
+               protected EJudge tチップのヒット処理(long nHitTime, CChip pChip, bool bCorrectLane = true)\r
                {\r
-                       E楽器パート screenmode;\r
-                       if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                       {\r
-                               screenmode = E楽器パート.GUITAR;\r
-                       }\r
-                       else\r
-                       {\r
-                               screenmode = E楽器パート.DRUMS;\r
-                       }\r
-\r
                        pChip.bHit = true;\r
-                       if (pChip.e楽器パート != E楽器パート.UNKNOWN)\r
+                       if (pChip.e楽器パート != EPart.Unknown)\r
                        {\r
                                cInvisibleChip.StartSemiInvisible(pChip.e楽器パート);\r
                        }\r
-                       bool bPChipIsAutoPlay = pChip.bAssignAutoPlayState(bIsAutoPlay);// 2011.6.10 yyagi\r
-                       E判定 eJudgeResult = E判定.Auto;\r
+                       bool bPChipIsAutoPlay = pChip.bAssignAutoPlayState();// 2011.6.10 yyagi\r
+                       EJudge eJudgeResult = EJudge.Auto;\r
 \r
-                       // #35411 2015.08.20 chnmr0 modified (begin)\r
-                       bool bIsPerfectGhost = CDTXMania.Instance.ConfigIni.eAutoGhost[(int)pChip.e楽器パート] == EAutoGhostData.PERFECT ||\r
-                                       CDTXMania.Instance.DTX.listAutoGhostLag[(int)pChip.e楽器パート] == null;\r
-                       int nInputAdjustTime = bPChipIsAutoPlay && bIsPerfectGhost ? 0 : this.nInputAdjustTimeMs[(int)pChip.e楽器パート];\r
-                       eJudgeResult = (bCorrectLane) ? this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nInputAdjustTime) : E判定.Miss;\r
+                       // ゴースト処理 #35411 2015.08.20 chnmr0\r
+                       bool bIsPerfectGhost = CDTXMania.Instance.ConfigIni.eAutoGhost[pChip.e楽器パート] == EAutoGhostData.Perfect ||\r
+                                                       CDTXMania.Instance.DTX.listAutoGhostLag[pChip.e楽器パート] == null;\r
+                       int nInputAdjustTime = bPChipIsAutoPlay && bIsPerfectGhost ? 0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[pChip.e楽器パート];\r
+                       eJudgeResult = (bCorrectLane) ? this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nInputAdjustTime) : EJudge.Miss;\r
 \r
-                       if (pChip.e楽器パート != E楽器パート.UNKNOWN)\r
+                       if (pChip.e楽器パート != EPart.Unknown)\r
                        {\r
-                               int nLane = -1;\r
+                               ELane nLane = ELane.Max;\r
                                switch (pChip.e楽器パート)\r
                                {\r
-                                       case E楽器パート.DRUMS:\r
-                                               nLane = CStage演奏画面共通.nチャンネル0Atoレーン07[pChip.nDrumsIndex];\r
+                                       case EPart.Drums:\r
+                                               nLane = EnumConverter.LaneFromChannel(pChip.eチャンネル番号);\r
                                                break;\r
-                                       case E楽器パート.GUITAR:\r
-                                               nLane = 10;\r
+                                       case EPart.Guitar:\r
+                                               nLane = ELane.GtR;\r
                                                break;\r
-                                       case E楽器パート.BASS:\r
-                                               nLane = 11;\r
+                                       case EPart.Bass:\r
+                                               nLane = ELane.BsR;\r
                                                break;\r
                                }\r
-                               this.actJudgeString.Start(nLane, bPChipIsAutoPlay && bIsPerfectGhost ? E判定.Auto : eJudgeResult, pChip.nLag);\r
+                               this.actJudgeString.Start(nLane, bPChipIsAutoPlay && bIsPerfectGhost ? EJudge.Auto : eJudgeResult, pChip.nLag);\r
                        }\r
-                       // #35411 end\r
 \r
-                       if (!bPChipIsAutoPlay && (pChip.e楽器パート != E楽器パート.UNKNOWN))\r
+                       // ダメージ\r
+                       if (!bPChipIsAutoPlay && (pChip.e楽器パート != EPart.Unknown))\r
                        {\r
-                               actGauge.Damage(screenmode, pChip.e楽器パート, eJudgeResult);\r
+                               actGauge.Damage(pChip.e楽器パート, eJudgeResult);\r
                        }\r
-                       if (eJudgeResult == E判定.Poor || eJudgeResult == E判定.Miss || eJudgeResult == E判定.Bad)\r
+\r
+                       // インビジブル\r
+                       if (eJudgeResult == EJudge.Poor || eJudgeResult == EJudge.Miss || eJudgeResult == EJudge.Bad)\r
                        {\r
                                cInvisibleChip.ShowChipTemporally(pChip.e楽器パート);\r
                        }\r
 \r
-                       if (pChip.e楽器パート != E楽器パート.UNKNOWN)\r
+                       // コンボ\r
+                       if (pChip.e楽器パート != EPart.Unknown)\r
                        {\r
                                switch (eJudgeResult)\r
                                {\r
-                                       case E判定.Miss:\r
-                                       case E判定.Bad:\r
-                                               this.nヒット数_Auto含む[(int)pChip.e楽器パート].Miss++;\r
+                                       case EJudge.Miss:\r
+                                       case EJudge.Bad:\r
+                                               this.nヒット数_Auto含む[pChip.e楽器パート].Miss++;\r
                                                if (!bPChipIsAutoPlay)\r
                                                {\r
-                                                       this.nヒット数_Auto含まない[(int)pChip.e楽器パート].Miss++;\r
+                                                       this.nヒット数_Auto含まない[pChip.e楽器パート].Miss++;\r
                                                }\r
                                                break;\r
                                        default:\r
                                                // #24068 2011.1.10 ikanick changed (for Gt./Bs.)\r
                                                // #24167 2011.1.16 yyagi changed  (for Gt./Bs.)\r
-                                               this.nヒット数_Auto含む[(int)pChip.e楽器パート][(int)eJudgeResult]++;\r
+                                               this.nヒット数_Auto含む[pChip.e楽器パート][(int)eJudgeResult]++;\r
                                                if (!bPChipIsAutoPlay)\r
                                                {\r
-                                                       this.nヒット数_Auto含まない[(int)pChip.e楽器パート][(int)eJudgeResult]++;\r
+                                                       this.nヒット数_Auto含まない[pChip.e楽器パート][(int)eJudgeResult]++;\r
                                                }\r
                                                break;\r
                                }\r
-                       }\r
 \r
-                       if ((pChip.e楽器パート == E楽器パート.DRUMS && CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである || !bPChipIsAutoPlay) ||\r
-                               pChip.e楽器パート == E楽器パート.GUITAR || pChip.e楽器パート == E楽器パート.BASS)\r
-                       {\r
-                               // Dr. : 演奏したレーンだけコンボを増やす\r
-                               switch (eJudgeResult)\r
-                               {\r
-                                       case E判定.Perfect:\r
-                                       case E判定.Great:\r
-                                       case E判定.Good:\r
-                                               this.actCombo.n現在のコンボ数.Drums++;\r
-                                               break;\r
+                               bool incrementCombo = false;\r
 \r
-                                       default:\r
-                                               this.actCombo.n現在のコンボ数.Drums = 0;\r
-                                               break;\r
+                               if (pChip.e楽器パート == EPart.Drums)\r
+                               {\r
+                                       if (CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Drums) || !bPChipIsAutoPlay)\r
+                                       {\r
+                                               // Dr. : 演奏したレーンだけコンボを増やす\r
+                                               incrementCombo = true;\r
+                                       }\r
                                }\r
+                               else if (pChip.e楽器パート == EPart.Guitar || pChip.e楽器パート == EPart.Bass)\r
+                               {\r
+                                       incrementCombo = true;\r
+                               }\r
+\r
+                if( incrementCombo == true )\r
+                {\r
+                    switch (eJudgeResult)\r
+                    {\r
+                        case EJudge.Perfect:\r
+                        case EJudge.Great:\r
+                        case EJudge.Good:\r
+                            this.actCombo.dgbコンボ数[pChip.e楽器パート].IncrementCombo();\r
+                            break;\r
+\r
+                        default:\r
+                            this.actCombo.dgbコンボ数[pChip.e楽器パート].ResetCombo();\r
+                            break;\r
+                    }\r
+                }\r
                        }\r
 \r
-                       if ((!bPChipIsAutoPlay && (pChip.e楽器パート != E楽器パート.UNKNOWN)) && (eJudgeResult != E判定.Miss) && (eJudgeResult != E判定.Bad))\r
+                       // スコア\r
+                       if ((!bPChipIsAutoPlay && (pChip.e楽器パート != EPart.Unknown)) && (eJudgeResult != EJudge.Miss) && (eJudgeResult != EJudge.Bad))\r
                        {\r
-                               int nCombos = this.actCombo.n現在のコンボ数[(int)pChip.e楽器パート];\r
+                               int nCombos = this.actCombo.dgbコンボ数[pChip.e楽器パート].n現在値;\r
                                long nScoreDelta = 0;\r
                                long[] nComboScoreDelta = new long[] { 350L, 200L, 50L, 0L };\r
-                               if ((nCombos <= 500) || (eJudgeResult == E判定.Good))\r
+                               if ((nCombos <= 500) || (eJudgeResult == EJudge.Good))\r
                                {\r
                                        nScoreDelta = nComboScoreDelta[(int)eJudgeResult] * nCombos;\r
                                }\r
-                               else if ((eJudgeResult == E判定.Perfect) || (eJudgeResult == E判定.Great))\r
+                               else if ((eJudgeResult == EJudge.Perfect) || (eJudgeResult == EJudge.Great))\r
                                {\r
                                        nScoreDelta = nComboScoreDelta[(int)eJudgeResult] * 500L;\r
                                }\r
-                               this.actScore.Add(pChip.e楽器パート, bIsAutoPlay, nScoreDelta);\r
+                               this.actScore.Add(pChip.e楽器パート, nScoreDelta);\r
                        }\r
 \r
-                       if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+                       // グラフ\r
+                       if (pChip.e楽器パート != EPart.Unknown)\r
                        {\r
+                               EPart inst = pChip.e楽器パート;\r
                                // #24074 2011.01.23 add ikanick\r
-                               this.actGraph.dbグラフ値現在_渡 = CScoreIni.t演奏型スキルを計算して返す(CDTXMania.Instance.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, E楽器パート.DRUMS, bIsAutoPlay);\r
+                               this.actGraph.dbCurrent[inst] =\r
+                                               CScoreIni.t演奏型スキルを計算して返す(\r
+                                               CDTXMania.Instance.DTX.n可視チップ数[inst],\r
+                                               this.nヒット数_Auto含まない[inst].Perfect,\r
+                                               this.nヒット数_Auto含まない[inst].Great,\r
+                                               this.nヒット数_Auto含まない[inst].Good,\r
+                                               this.nヒット数_Auto含まない[inst].Poor,\r
+                                               this.nヒット数_Auto含まない[inst].Miss,\r
+                                               inst, true);\r
+\r
                                // #35411 2015.09.07 add chnmr0\r
-                               if (CDTXMania.Instance.DTX.listTargetGhsotLag.Drums != null &&\r
-                                                                       CDTXMania.Instance.ConfigIni.eTargetGhost.Drums == ETargetGhostData.ONLINE &&\r
-                                       CDTXMania.Instance.DTX.n可視チップ数.Drums > 0)\r
+                               if (\r
+                                               CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null &&\r
+                                               CDTXMania.Instance.ConfigIni.eTargetGhost[inst] == ETargetGhostData.Online &&\r
+                                               CDTXMania.Instance.DTX.n可視チップ数[inst] > 0)\r
                                {\r
                                        // Online Stats の計算式\r
-                                       this.actGraph.dbグラフ値現在_渡 = 100 *\r
-                                                                       (this.nヒット数_Auto含まない.Drums.Perfect * 17 +\r
-                                                                        this.nヒット数_Auto含まない.Drums.Great * 7 +\r
-                                                                        this.actCombo.n現在のコンボ数.Drums最高値 * 3) / (20.0 * CDTXMania.Instance.DTX.n可視チップ数.Drums);\r
+                                       this.actGraph.dbTarget[inst] = 100 *\r
+                                                                                                       (this.nヒット数_Auto含まない[inst].Perfect * 17 +\r
+                                                                                                        this.nヒット数_Auto含まない[inst].Great * 7 +\r
+                                                                                                        this.actCombo.dgbコンボ数[inst].n最高値 * 3) /\r
+                                                                                                        (20.0 * CDTXMania.Instance.DTX.n可視チップ数[inst]);\r
                                }\r
                        }\r
                        return eJudgeResult;\r
                }\r
 \r
-               private void tチップのヒット処理_BadならびにTight時のMiss(E楽器パート part, int nLane = 0)\r
+               private void tチップのヒット処理_BadならびにTight時のMiss(EPart part, ELane nLane = ELane.LC)\r
                {\r
-                       E楽器パート screenmode;\r
-\r
-                       if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                       {\r
-                               screenmode = E楽器パート.GUITAR;\r
-                       }\r
-                       else\r
-                       {\r
-                               screenmode = E楽器パート.DRUMS;\r
-                       }\r
-\r
                        cInvisibleChip.StartSemiInvisible(part);\r
                        cInvisibleChip.ShowChipTemporally(part);\r
-                       actGauge.Damage(screenmode, part, E判定.Miss);\r
+                       actGauge.Damage(part, EJudge.Miss);\r
                        switch (part)\r
                        {\r
-                               case E楽器パート.DRUMS:\r
-                                       if ((nLane >= 0) && (nLane <= 7))\r
-                                       {\r
-                                               this.actJudgeString.Start(nLane, bIsAutoPlay[nLane] ? E判定.Auto : E判定.Miss, 999);\r
-                                       }\r
-                                       this.actCombo.n現在のコンボ数.Drums = 0;\r
+                               case EPart.Drums:\r
+                                       this.actJudgeString.Start(nLane, CDTXMania.Instance.ConfigIni.bAutoPlay[EnumConverter.PadFromLane(nLane)] ?\r
+                                                       EJudge.Auto : EJudge.Miss, 999);\r
+                                       this.actCombo.dgbコンボ数.Drums.ResetCombo();\r
                                        return;\r
 \r
-                               case E楽器パート.GUITAR:\r
-                                       this.actJudgeString.Start(10, E判定.Bad, 999);\r
-                                       this.actCombo.n現在のコンボ数.Guitar = 0;\r
+                               case EPart.Guitar:\r
+                                       this.actJudgeString.Start(ELane.GtR, EJudge.Bad, 999);\r
+                                       this.actCombo.dgbコンボ数.Guitar.ResetCombo();\r
                                        return;\r
 \r
-                               case E楽器パート.BASS:\r
-                                       this.actJudgeString.Start(11, E判定.Bad, 999);\r
-                                       this.actCombo.n現在のコンボ数.Bass = 0;\r
+                               case EPart.Bass:\r
+                                       this.actJudgeString.Start(ELane.BsR, EJudge.Bad, 999);\r
+                                       this.actCombo.dgbコンボ数.Bass.ResetCombo();\r
                                        break;\r
 \r
                                default:\r
@@ -1271,12 +1334,12 @@ namespace DTXMania
                /// <param name="nInputAdjustTime"></param>\r
                /// <param name="n検索範囲時間ms">指定時刻から検索する範囲ms</param>\r
                /// <returns></returns>\r
-               protected CChip r指定時刻に一番近い未ヒットChip(long nTime, Ech定義 search, int nInputAdjustTime, int n検索範囲時間ms = 0, HitState hs = HitState.NotHit)\r
+               protected CChip r指定時刻に一番近い未ヒットChip(long nTime, EChannel search, int nInputAdjustTime, int n検索範囲時間ms = 0, HitState hs = HitState.NotHit)\r
                {\r
                        CChip ret = null;\r
 \r
                        nTime += nInputAdjustTime;\r
-                       if (this.n現在のトップChip >= 0 && this.n現在のトップChip < CDTXMania.Instance.DTX.listChip.Count)\r
+                       if (this.n現在のトップChip >= 0 && this.n現在のトップChip <= CDTXMania.Instance.DTX.listChip.Count)\r
                        {\r
                                int idxFuture = -1;\r
                                int idxPast = -1;\r
@@ -1284,15 +1347,15 @@ namespace DTXMania
                                Func<CChip, Func<CChip, bool>, bool> Found = (chip, futureOrPast) =>\r
                                {\r
                                        return futureOrPast(chip) &&\r
-                                               ((hs == HitState.NotHit && !chip.bHit) || (hs == HitState.Hit && chip.bHit) || (hs == HitState.DontCare)) &&\r
-                                               !chip.b空打ちチップである &&\r
-                                               (\r
-                                               ((search == chip.eチャンネル番号 || search + 0x20 == chip.eチャンネル番号) && chip.bDrums可視チップ_LP_LBD含まない) ||\r
-                                               (search == chip.eチャンネル番号 && chip.bGuitar可視チップ_Wailing含む) ||\r
-                                               (search == chip.eチャンネル番号 && chip.bBass可視チップ_Wailing含む) ||\r
-                                               (search == Ech定義.Guitar_WailingSound && chip.bGuitar可視チップ) ||\r
-                                               (search == Ech定義.Bass_WailingSound && chip.bBass可視チップ)\r
-                                               );\r
+                                                       ((hs == HitState.NotHit && !chip.bHit) || (hs == HitState.Hit && chip.bHit) || (hs == HitState.DontCare)) &&\r
+                                                       !chip.b空打ちチップである &&\r
+                                                       (\r
+                                                       ((search == chip.eチャンネル番号 || search + 0x20 == chip.eチャンネル番号) && chip.bDrums可視チップ_LP_LBD含まない) ||\r
+                                                       (search == chip.eチャンネル番号 && chip.bGuitar可視チップ_Wailing含む) ||\r
+                                                       (search == chip.eチャンネル番号 && chip.bBass可視チップ_Wailing含む) ||\r
+                                                       (search == EChannel.Guitar_WailingSound && chip.bGuitar可視チップ) ||\r
+                                                       (search == EChannel.Bass_WailingSound && chip.bBass可視チップ)\r
+                                                       );\r
                                };\r
                                Func<CChip, bool> Future = (chip) => { return chip.n発声時刻ms > nTime; };\r
                                Func<CChip, bool> Past = (chip) => { return chip.n発声時刻ms <= nTime; };\r
@@ -1370,68 +1433,65 @@ namespace DTXMania
                        return ret;\r
                }\r
 \r
-               protected CChip r次に来る指定楽器Chipを更新して返す(E楽器パート inst)\r
+               protected CChip r次に来る指定楽器Chipを更新して返す(EPart inst)\r
                {\r
                        CChip ret = null;\r
                        int nInputAdjustTime;\r
-                       if (inst == E楽器パート.GUITAR)\r
+                       if (inst == EPart.Guitar)\r
                        {\r
-                               nInputAdjustTime = this.bIsAutoPlay.GtPick ? 0 : this.nInputAdjustTimeMs.Guitar;\r
-                               ret = this.r指定時刻に一番近い未ヒットChip(CSound管理.rc演奏用タイマ.n現在時刻, Ech定義.Guitar_WailingSound, nInputAdjustTime, 500);\r
+                               nInputAdjustTime = CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick ?\r
+                                               0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar;\r
+                               ret = this.r指定時刻に一番近い未ヒットChip(CSound管理.rc演奏用タイマ.n現在時刻, EChannel.Guitar_WailingSound, nInputAdjustTime, 500);\r
                                this.r次にくるギターChip = ret;\r
                        }\r
-                       else if (inst == E楽器パート.BASS)\r
+                       else if (inst == EPart.Bass)\r
                        {\r
-                               nInputAdjustTime = this.bIsAutoPlay.BsPick ? 0 : this.nInputAdjustTimeMs.Bass;\r
-                               ret = this.r指定時刻に一番近い未ヒットChip(CSound管理.rc演奏用タイマ.n現在時刻, Ech定義.Bass_WailingSound, nInputAdjustTime, 500);\r
+                               nInputAdjustTime = CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick ?\r
+                                               0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass;\r
+                               ret = this.r指定時刻に一番近い未ヒットChip(CSound管理.rc演奏用タイマ.n現在時刻, EChannel.Bass_WailingSound, nInputAdjustTime, 500);\r
                                this.r次にくるベースChip = ret;\r
                        }\r
                        return ret;\r
                }\r
 \r
-               protected void ChangeInputAdjustTimeInPlaying(IInputDevice keyboard, int plusminus)             // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
+               protected void ChangeInputAdjustTimeInPlaying(IInputDevice keyboard, int plusminus)     // #23580 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\r
                {\r
-                       int part, offset = plusminus;\r
-                       if (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift))      // Guitar InputAdjustTime\r
+                       EPart part;\r
+                       int offset = plusminus;\r
+                       if (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftShift) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightShift))  // Guitar InputAdjustTime\r
                        {\r
-                               part = (int)E楽器パート.GUITAR;\r
+                               part = EPart.Guitar;\r
                        }\r
-                       else if (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftAlt) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightAlt))     // Bass InputAdjustTime\r
+                       else if (keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftAlt) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightAlt)) // Bass InputAdjustTime\r
                        {\r
-                               part = (int)E楽器パート.BASS;\r
+                               part = EPart.Bass;\r
                        }\r
-                       else    // Drums InputAdjustTime\r
+                       else\r
                        {\r
-                               part = (int)E楽器パート.DRUMS;\r
+                               // Drums InputAdjustTime\r
+                               part = EPart.Drums;\r
                        }\r
                        if (!keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftControl) && !keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightControl))\r
                        {\r
                                offset *= 10;\r
                        }\r
 \r
-                       this.nInputAdjustTimeMs[part] += offset;\r
-                       if (this.nInputAdjustTimeMs[part] > 99)\r
-                       {\r
-                               this.nInputAdjustTimeMs[part] = 99;\r
-                       }\r
-                       else if (this.nInputAdjustTimeMs[part] < -99)\r
-                       {\r
-                               this.nInputAdjustTimeMs[part] = -99;\r
-                       }\r
-                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[part] = this.nInputAdjustTimeMs[part];\r
+                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[part].Value = CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[part] + offset;\r
                }\r
 \r
                private void t入力処理_ドラム()\r
                {\r
-                       for (int nPad = 0; nPad < (int)Eパッド.MAX; nPad++)          // #27029 2012.1.4 from: <10 to <=10; Eパッドの要素が1つ(HP)増えたため。\r
-                       //                2012.1.5 yyagi: (int)Eパッド.MAX に変更。Eパッドの要素数への依存を無くすため。\r
+                       for (EPad ePad = EPad.DrumsPadMin; ePad < EPad.DrumsPadMax; ePad++)        // #27029 2012.1.4 from: <10 to <=10; Eパッドの要素が1つ(HP)増えたため。\r
+                                                                                                                                                                                                                                                                                                                                //               2012.1.5 yyagi: (int)Eパッド.MAX に変更。Eパッドの要素数への依存を無くすため。\r
                        {\r
-                               List<STInputEvent> listInputEvent = CDTXMania.Instance.Pad.GetEvents(E楽器パート.DRUMS, (Eパッド)nPad);\r
+                               List<STInputEvent> listInputEvent = CDTXMania.Instance.Pad.GetEvents(ePad);\r
 \r
                                if ((listInputEvent == null) || (listInputEvent.Count == 0))\r
+                               {\r
                                        continue;\r
+                               }\r
 \r
-                               this.t入力メソッド記憶(E楽器パート.DRUMS);\r
+                               this.t入力メソッド記憶(EPart.Drums);\r
 \r
                                #region [ 打ち分けグループ調整 ]\r
                                //-----------------------------\r
@@ -1439,25 +1499,25 @@ namespace DTXMania
                                EFTGroup eFTGroup = CDTXMania.Instance.ConfigIni.eFTGroup;\r
                                ECYGroup eCYGroup = CDTXMania.Instance.ConfigIni.eCYGroup;\r
 \r
-                               if (!CDTXMania.Instance.DTX.bチップがある.Ride && (eCYGroup == ECYGroup.打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.Ride && (eCYGroup == ECYGroup.None))\r
                                {\r
-                                       eCYGroup = ECYGroup.共通;\r
+                                       eCYGroup = ECYGroup.Group;\r
                                }\r
-                               if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (eHHGroup == EHHGroup.全部打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (eHHGroup == EHHGroup.None))\r
                                {\r
-                                       eHHGroup = EHHGroup.左シンバルのみ打ち分ける;\r
+                                       eHHGroup = EHHGroup.LC_HH;\r
                                }\r
-                               if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (eHHGroup == EHHGroup.ハイハットのみ打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (eHHGroup == EHHGroup.HO_HC))\r
                                {\r
-                                       eHHGroup = EHHGroup.全部共通;\r
+                                       eHHGroup = EHHGroup.Group;\r
                                }\r
-                               if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (eHHGroup == EHHGroup.全部打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (eHHGroup == EHHGroup.None))\r
                                {\r
-                                       eHHGroup = EHHGroup.ハイハットのみ打ち分ける;\r
+                                       eHHGroup = EHHGroup.HO_HC;\r
                                }\r
-                               if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (eHHGroup == EHHGroup.左シンバルのみ打ち分ける))\r
+                               if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (eHHGroup == EHHGroup.LC_HH))\r
                                {\r
-                                       eHHGroup = EHHGroup.全部共通;\r
+                                       eHHGroup = EHHGroup.Group;\r
                                }\r
                                //-----------------------------\r
                                #endregion\r
@@ -1468,106 +1528,105 @@ namespace DTXMania
                                                continue;\r
 \r
                                        long nTime = inputEvent.nTimeStamp - CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
-                                       int nPad09 = (nPad == (int)Eパッド.HP) ? (int)Eパッド.BD : nPad;          // #27029 2012.1.5 yyagi\r
-                                       int nInputAdjustTime = bIsAutoPlay[CStage演奏画面共通.nチャンネル0Atoレーン07[(int)nPad09]] ? 0 : nInputAdjustTimeMs.Drums;\r
-\r
+                                       EPad nPad09 = (ePad == EPad.HP) ? EPad.BD : ePad;      // #27029 2012.1.5 yyagi\r
+                                       int nInputAdjustTime = CDTXMania.Instance.ConfigIni.bAutoPlay[nPad09] ? 0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums;\r
                                        bool bHitted = false;\r
 \r
                                        #region [ (A) ヒットしていればヒット処理して次の inputEvent へ ]\r
                                        //-----------------------------\r
-                                       switch (((Eパッド)nPad))\r
+                                       switch (ePad)\r
                                        {\r
-                                               case Eパッド.HH:\r
+                                               case EPad.HH:\r
                                                        #region [ HHとLC(groupingしている場合) のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
                                                                if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.HH)\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-\r
-                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);  // HiHat Close\r
-                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);   // HiHat Open\r
-                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);  // 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
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+\r
+                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);    // HiHat Close\r
+                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1); // HiHat Open\r
+                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);    // LC\r
+                                                               EJudge e判定HC = (chipHC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHC, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定HO = (chipHO != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHO, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
                                                                switch (eHHGroup)\r
                                                                {\r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                       case EHHGroup.HO_HC:\r
                                                                                #region [ HCとLCのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if ((e判定HC != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               if ((e判定HC != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LC != E判定.Miss)\r
+                                                                               else if (e判定LC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
                                                                        //-----------------------------\r
-                                                                               #endregion\r
+                                                                       #endregion\r
 \r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                       case EHHGroup.LC_HH:\r
                                                                                #region [ HCとHOのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if ((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss))\r
+                                                                               if ((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
                                                                        //-----------------------------\r
-                                                                               #endregion\r
+                                                                       #endregion\r
 \r
-                                                                       case EHHGroup.全部共通:\r
+                                                                       case EHHGroup.Group:\r
                                                                                #region [ HC,HO,LCのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if (((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss)) && (e判定LC != E判定.Miss))\r
+                                                                               if (((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss)) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        CChip chip;\r
                                                                                        CChip[] chipArray = new CChip[] { chipHC, chipHO, chipLC };\r
@@ -1590,101 +1649,101 @@ namespace DTXMania
                                                                                                chipArray[1] = chipArray[2];\r
                                                                                                chipArray[2] = chip;\r
                                                                                        }\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipArray[0], inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipArray[0], inputEvent.nVelocity);\r
                                                                                        if (chipArray[0].n発声位置 == chipArray[1].n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipArray[1], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipArray[1], inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        if (chipArray[0].n発声位置 == chipArray[2].n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipArray[2], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipArray[2], inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss))\r
+                                                                               else if ((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HC != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               else if ((e判定HC != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HO != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               else if ((e判定HO != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHO.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHO.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LC != E判定.Miss)\r
+                                                                               else if (e判定LC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipLC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipLC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
                                                                        //-----------------------------\r
-                                                                               #endregion\r
+                                                                       #endregion\r
 \r
                                                                        default:\r
                                                                                #region [ 全部打ち分け時のヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if (e判定HC != E判定.Miss)\r
+                                                                               if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HH, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HH, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
-                                                                       //-----------------------------\r
+                                                                               //-----------------------------\r
                                                                                #endregion\r
                                                                }\r
                                                                if (!bHitted)\r
@@ -1692,97 +1751,97 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.SD:\r
+                                               case EPad.SD:\r
                                                        #region [ SDのヒット処理 ]\r
                                                        //-----------------------------\r
-                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.SD)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                       if (!this.tドラムヒット処理(nTime, Eパッド.SD, this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.Snare, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
+                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.SD)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                               continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                       if (!this.tドラムヒット処理(nTime, EPad.SD, this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.Snare, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
                                                                break;\r
                                                        continue;\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.BD:\r
+                                               case EPad.BD:\r
                                                        #region [ BDのヒット処理 ]\r
                                                        //-----------------------------\r
-                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.BD)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                       if (!this.tドラムヒット処理(nTime, Eパッド.BD, this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.BassDrum, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
+                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.BD)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                               continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                       if (!this.tドラムヒット処理(nTime, EPad.BD, this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.BassDrum, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
                                                                break;\r
                                                        continue;\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.HT:\r
+                                               case EPad.HT:\r
                                                        #region [ HTのヒット処理 ]\r
                                                        //-----------------------------\r
-                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.HT)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                               continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                       if (this.tドラムヒット処理(nTime, Eパッド.HT, this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HighTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
+                                                       if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.HT)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                               continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                       if (this.tドラムヒット処理(nTime, EPad.HT, this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HighTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
                                                                continue;\r
                                                        break;\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.LT:\r
+                                               case EPad.LT:\r
                                                        #region [ LTとFT(groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.LT)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipLT = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LowTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipFT = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.FloorTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\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
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.LT)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipLT = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LowTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipFT = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.FloorTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               EJudge e判定LT = (chipLT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLT, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定FT = (chipFT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipFT, nInputAdjustTime) : EJudge.Miss;\r
                                                                switch (eFTGroup)\r
                                                                {\r
-                                                                       case EFTGroup.打ち分ける:\r
+                                                                       case EFTGroup.None:\r
                                                                                #region [ LTのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if (e判定LT != E判定.Miss)\r
+                                                                               if (e判定LT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.LT, chipLT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.LT, chipLT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                break;\r
                                                                        //-----------------------------\r
-                                                                               #endregion\r
+                                                                       #endregion\r
 \r
-                                                                       case EFTGroup.共通:\r
+                                                                       case EFTGroup.Group:\r
                                                                                #region [ LTとFTのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if ((e判定LT != E判定.Miss) && (e判定FT != E判定.Miss))\r
+                                                                               if ((e判定LT != EJudge.Miss) && (e判定FT != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipLT.n発声位置 < chipFT.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LT, chipLT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LT, chipLT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipLT.n発声位置 > chipFT.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LT, chipFT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LT, chipFT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LT, chipLT, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LT, chipFT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LT, chipLT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LT, chipFT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LT != E判定.Miss)\r
+                                                                               else if (e判定LT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.LT, chipLT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.LT, chipLT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定FT != E判定.Miss)\r
+                                                                               else if (e判定FT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.LT, chipFT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.LT, chipFT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                break;\r
-                                                                       //-----------------------------\r
+                                                                               //-----------------------------\r
                                                                                #endregion\r
                                                                }\r
                                                                if (!bHitted)\r
@@ -1790,60 +1849,60 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.FT:\r
+                                               case EPad.FT:\r
                                                        #region [ FTとLT(groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.FT)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipLT = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LowTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipFT = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.FloorTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\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
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.FT)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipLT = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LowTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipFT = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.FloorTom, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               EJudge e判定LT = (chipLT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLT, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定FT = (chipFT != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipFT, nInputAdjustTime) : EJudge.Miss;\r
                                                                switch (eFTGroup)\r
                                                                {\r
-                                                                       case EFTGroup.打ち分ける:\r
+                                                                       case EFTGroup.None:\r
                                                                                #region [ FTのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if (e判定FT != E判定.Miss)\r
+                                                                               if (e判定FT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.FT, chipFT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.FT, chipFT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                //-----------------------------\r
                                                                                #endregion\r
                                                                                break;\r
 \r
-                                                                       case EFTGroup.共通:\r
+                                                                       case EFTGroup.Group:\r
                                                                                #region [ FTとLTのヒット処理 ]\r
                                                                                //-----------------------------\r
-                                                                               if ((e判定LT != E判定.Miss) && (e判定FT != E判定.Miss))\r
+                                                                               if ((e判定LT != EJudge.Miss) && (e判定FT != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipLT.n発声位置 < chipFT.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.FT, chipLT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.FT, chipLT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipLT.n発声位置 > chipFT.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.FT, chipFT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.FT, chipFT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.FT, chipLT, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.FT, chipFT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.FT, chipLT, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.FT, chipFT, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LT != E判定.Miss)\r
+                                                                               else if (e判定LT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.FT, chipLT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.FT, chipLT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定FT != E判定.Miss)\r
+                                                                               else if (e判定FT != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.FT, chipFT, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.FT, chipFT, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                //-----------------------------\r
@@ -1855,34 +1914,34 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.CY:\r
+                                               case EPad.CY:\r
                                                        #region [ CY(とLCとRD:groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.CY)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipCY = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipRD = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipLC = CDTXMania.Instance.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : 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
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.CY)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipCY = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipRD = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipLC = CDTXMania.Instance.ConfigIni.bCymbalFree ? this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
+                                                               EJudge e判定CY = (chipCY != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipCY, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定RD = (chipRD != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipRD, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
                                                                CChip[] chipArray = new CChip[] { chipCY, chipRD, chipLC };\r
-                                                               E判定[] e判定Array = new E判定[] { e判定CY, e判定RD, e判定LC };\r
-                                                               const int NumOfChips = 3;       // chipArray.GetLength(0)\r
+                                                               EJudge[] e判定Array = new EJudge[] { e判定CY, e判定RD, e判定LC };\r
+                                                               const int NumOfChips = 3;   // chipArray.GetLength(0)\r
 \r
                                                                // CY/RD/LC群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
                                                                SortChipsByNTime(chipArray, e判定Array, NumOfChips);\r
                                                                switch (eCYGroup)\r
                                                                {\r
-                                                                       case ECYGroup.打ち分ける:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case ECYGroup.None:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
-                                                                                       if (e判定CY != E判定.Miss)\r
+                                                                                       if (e判定CY != EJudge.Miss)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.CY, chipCY, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.CY, chipCY, inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                        }\r
                                                                                        if (!bHitted)\r
@@ -1891,31 +1950,31 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if ((e判定Array[i] != E判定.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipLC)))\r
+                                                                                       if ((e判定Array[i] != EJudge.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipLC)))\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
                                                                                        //num10++;\r
                                                                                }\r
-                                                                               if (e判定CY != E判定.Miss)\r
+                                                                               if (e判定CY != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.CY, chipCY, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.CY, chipCY, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case ECYGroup.共通:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case ECYGroup.Group:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
                                                                                        for (int i = 0; i < NumOfChips; i++)\r
                                                                                        {\r
-                                                                                               if ((e判定Array[i] != E判定.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipRD)))\r
+                                                                                               if ((e判定Array[i] != EJudge.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipRD)))\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                                       this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                        bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
@@ -1926,9 +1985,9 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if (e判定Array[i] != E判定.Miss)\r
+                                                                                       if (e判定Array[i] != EJudge.Miss)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
@@ -1942,99 +2001,99 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.HHO:\r
+                                               case EPad.HHO:\r
                                                        #region [ HO(とHCとLC:groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
                                                                if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.HH)\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-\r
-                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\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
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+\r
+                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               EJudge e判定HC = (chipHC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHC, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定HO = (chipHO != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHO, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
                                                                switch (eHHGroup)\r
                                                                {\r
-                                                                       case EHHGroup.全部打ち分ける:\r
-                                                                               if (e判定HO != E判定.Miss)\r
+                                                                       case EHHGroup.None:\r
+                                                                               if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                               if ((e判定HO != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                       case EHHGroup.HO_HC:\r
+                                                                               if ((e判定HO != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHO.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHO.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LC != E判定.Miss)\r
+                                                                               else if (e判定LC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                               if ((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss))\r
+                                                                       case EHHGroup.LC_HH:\r
+                                                                               if ((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case EHHGroup.全部共通:\r
-                                                                               if (((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss)) && (e判定LC != E判定.Miss))\r
+                                                                       case EHHGroup.Group:\r
+                                                                               if (((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss)) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        CChip chip;\r
                                                                                        CChip[] chipArray = new CChip[] { chipHC, chipHO, chipLC };\r
@@ -2057,81 +2116,81 @@ namespace DTXMania
                                                                                                chipArray[1] = chipArray[2];\r
                                                                                                chipArray[2] = chip;\r
                                                                                        }\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipArray[0], inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipArray[0], inputEvent.nVelocity);\r
                                                                                        if (chipArray[0].n発声位置 == chipArray[1].n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipArray[1], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipArray[1], inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        if (chipArray[0].n発声位置 == chipArray[2].n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipArray[2], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipArray[2], inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HC != E判定.Miss) && (e判定HO != E判定.Miss))\r
+                                                                               else if ((e判定HC != EJudge.Miss) && (e判定HO != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipHO.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HC != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               else if ((e判定HC != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHC.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHC.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if ((e判定HO != E判定.Miss) && (e判定LC != E判定.Miss))\r
+                                                                               else if ((e判定HO != EJudge.Miss) && (e判定LC != EJudge.Miss))\r
                                                                                {\r
                                                                                        if (chipHO.n発声位置 < chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else if (chipHO.n発声位置 > chipLC.n発声位置)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        else\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        }\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HC != E判定.Miss)\r
+                                                                               else if (e判定HC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定HO != E判定.Miss)\r
+                                                                               else if (e判定HO != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipHO, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipHO, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
-                                                                               else if (e判定LC != E判定.Miss)\r
+                                                                               else if (e判定LC != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.HHO, chipLC, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.HHO, chipLC, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                if (!bHitted)\r
@@ -2143,44 +2202,44 @@ namespace DTXMania
                                                                continue;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.RD:\r
+                                               case EPad.RD:\r
                                                        #region [ RD(とCYとLC:groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.RD)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipCY = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipRD = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
-                                                               CChip chipLC = CDTXMania.Instance.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : 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
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.RD)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipCY = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipRD = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);\r
+                                                               CChip chipLC = CDTXMania.Instance.ConfigIni.bCymbalFree ? this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
+                                                               EJudge e判定CY = (chipCY != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipCY, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定RD = (chipRD != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipRD, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
                                                                CChip[] chipArray = new CChip[] { chipCY, chipRD, chipLC };\r
-                                                               E判定[] e判定Array = new E判定[] { e判定CY, e判定RD, e判定LC };\r
-                                                               const int NumOfChips = 3;       // chipArray.GetLength(0)\r
+                                                               EJudge[] e判定Array = new EJudge[] { e判定CY, e判定RD, e判定LC };\r
+                                                               const int NumOfChips = 3;   // chipArray.GetLength(0)\r
 \r
                                                                // HH/CY群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
                                                                SortChipsByNTime(chipArray, e判定Array, NumOfChips);\r
                                                                switch (eCYGroup)\r
                                                                {\r
-                                                                       case ECYGroup.打ち分ける:\r
-                                                                               if (e判定RD != E判定.Miss)\r
+                                                                       case ECYGroup.None:\r
+                                                                               if (e判定RD != EJudge.Miss)\r
                                                                                {\r
-                                                                                       this.tドラムヒット処理(nTime, Eパッド.RD, chipRD, inputEvent.nVelocity);\r
+                                                                                       this.tドラムヒット処理(nTime, EPad.RD, chipRD, inputEvent.nVelocity);\r
                                                                                        bHitted = true;\r
                                                                                }\r
                                                                                break;\r
 \r
-                                                                       case ECYGroup.共通:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case ECYGroup.Group:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
                                                                                        for (int i = 0; i < NumOfChips; i++)\r
                                                                                        {\r
-                                                                                               if ((e判定Array[i] != E判定.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipRD)))\r
+                                                                                               if ((e判定Array[i] != EJudge.Miss) && ((chipArray[i] == chipCY) || (chipArray[i] == chipRD)))\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                                       this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                        bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
@@ -2189,9 +2248,9 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if (e判定Array[i] != E判定.Miss)\r
+                                                                                       if (e判定Array[i] != EJudge.Miss)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.CY, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.CY, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
@@ -2205,39 +2264,39 @@ namespace DTXMania
                                                                break;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.LC:\r
+                                               case EPad.LC:\r
                                                        #region [ LC(とHC/HOとCYと:groupingしている場合)のヒット処理 ]\r
                                                        //-----------------------------\r
                                                        {\r
-                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.LC)       // #23857 2010.12.12 yyagi: to support VelocityMin\r
-                                                                       continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
-                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);  // HC\r
-                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);   // HO\r
-                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);  // LC\r
-                                                               CChip chipCY = CDTXMania.Instance.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
-                                                               CChip chipRD = CDTXMania.Instance.ConfigIni.bシンバルフリー ? this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : 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
+                                                               if (inputEvent.nVelocity <= CDTXMania.Instance.ConfigIni.nVelocityMin.LC)   // #23857 2010.12.12 yyagi: to support VelocityMin\r
+                                                                       continue;   // 電子ドラムによる意図的なクロストークを無効にする\r
+                                                               CChip chipHC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatClose, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);    // HC\r
+                                                               CChip chipHO = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.HiHatOpen, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1); // HO\r
+                                                               CChip chipLC = this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.LeftCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1);    // LC\r
+                                                               CChip chipCY = CDTXMania.Instance.ConfigIni.bCymbalFree ? this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.Cymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
+                                                               CChip chipRD = CDTXMania.Instance.ConfigIni.bCymbalFree ? this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.RideCymbal, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1) : null;\r
+                                                               EJudge e判定HC = (chipHC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHC, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定HO = (chipHO != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipHO, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定LC = (chipLC != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipLC, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定CY = (chipCY != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipCY, nInputAdjustTime) : EJudge.Miss;\r
+                                                               EJudge e判定RD = (chipRD != null) ? this.e指定時刻からChipのJUDGEを返す(nTime, chipRD, nInputAdjustTime) : EJudge.Miss;\r
                                                                CChip[] chipArray = new CChip[] { chipHC, chipHO, chipLC, chipCY, chipRD };\r
-                                                               E判定[] e判定Array = new E判定[] { e判定HC, e判定HO, e判定LC, e判定CY, e判定RD };\r
-                                                               const int NumOfChips = 5;       // chipArray.GetLength(0)\r
+                                                               EJudge[] e判定Array = new EJudge[] { e判定HC, e判定HO, e判定LC, e判定CY, e判定RD };\r
+                                                               const int NumOfChips = 5;   // chipArray.GetLength(0)\r
 \r
                                                                // HH/CY群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
                                                                SortChipsByNTime(chipArray, e判定Array, NumOfChips);\r
                                                                switch (eHHGroup)\r
                                                                {\r
-                                                                       case EHHGroup.全部打ち分ける:\r
-                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case EHHGroup.None:\r
+                                                                       case EHHGroup.LC_HH:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
-                                                                                       if (e判定LC != E判定.Miss)\r
+                                                                                       if (e判定LC != EJudge.Miss)\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LC, chipLC, inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LC, chipLC, inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                        }\r
                                                                                        if (!bHitted)\r
@@ -2246,9 +2305,9 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if ((e判定Array[i] != E判定.Miss) && (((chipArray[i] == chipLC) || (chipArray[i] == chipCY)) || ((chipArray[i] == chipRD) && (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.共通))))\r
+                                                                                       if ((e判定Array[i] != EJudge.Miss) && (((chipArray[i] == chipLC) || (chipArray[i] == chipCY)) || ((chipArray[i] == chipRD) && (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.Group))))\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LC, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LC, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
@@ -2257,15 +2316,15 @@ namespace DTXMania
                                                                                        break;\r
                                                                                continue;\r
 \r
-                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                       case EHHGroup.全部共通:\r
-                                                                               if (!CDTXMania.Instance.ConfigIni.bシンバルフリー)\r
+                                                                       case EHHGroup.HO_HC:\r
+                                                                       case EHHGroup.Group:\r
+                                                                               if (!CDTXMania.Instance.ConfigIni.bCymbalFree)\r
                                                                                {\r
                                                                                        for (int i = 0; i < NumOfChips; i++)\r
                                                                                        {\r
-                                                                                               if ((e判定Array[i] != E判定.Miss) && (((chipArray[i] == chipLC) || (chipArray[i] == chipHC)) || (chipArray[i] == chipHO)))\r
+                                                                                               if ((e判定Array[i] != EJudge.Miss) && (((chipArray[i] == chipLC) || (chipArray[i] == chipHC)) || (chipArray[i] == chipHO)))\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理(nTime, Eパッド.LC, chipArray[i], inputEvent.nVelocity);\r
+                                                                                                       this.tドラムヒット処理(nTime, EPad.LC, chipArray[i], inputEvent.nVelocity);\r
                                                                                                        bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
@@ -2276,9 +2335,9 @@ namespace DTXMania
                                                                                }\r
                                                                                for (int i = 0; i < NumOfChips; i++)\r
                                                                                {\r
-                                                                                       if ((e判定Array[i] != E判定.Miss) && ((chipArray[i] != chipRD) || (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.共通)))\r
+                                                                                       if ((e判定Array[i] != EJudge.Miss) && ((chipArray[i] != chipRD) || (CDTXMania.Instance.ConfigIni.eCYGroup == ECYGroup.Group)))\r
                                                                                        {\r
-                                                                                               this.tドラムヒット処理(nTime, Eパッド.LC, chipArray[i], inputEvent.nVelocity);\r
+                                                                                               this.tドラムヒット処理(nTime, EPad.LC, chipArray[i], inputEvent.nVelocity);\r
                                                                                                bHitted = true;\r
                                                                                                break;\r
                                                                                        }\r
@@ -2293,16 +2352,16 @@ namespace DTXMania
                                                                break;\r
                                                        }\r
                                                //-----------------------------\r
-                                                       #endregion\r
+                                               #endregion\r
 \r
-                                               case Eパッド.HP:             // #27029 2012.1.4 from\r
+                                               case EPad.HP:       // #27029 2012.1.4 from\r
                                                        #region [ HPのヒット処理 ]\r
                                                        //-----------------\r
-                                                       if (CDTXMania.Instance.ConfigIni.eBDGroup == EBDGroup.どっちもBD)\r
+                                                       if (CDTXMania.Instance.ConfigIni.eBDGroup == EBDGroup.Group)\r
                                                        {\r
                                                                #region [ BDとみなしてヒット処理 ]\r
                                                                //-----------------\r
-                                                               if (!this.tドラムヒット処理(nTime, Eパッド.BD, this.r指定時刻に一番近い未ヒットChip(nTime, Ech定義.BassDrum, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
+                                                               if (!this.tドラムヒット処理(nTime, EPad.BD, this.r指定時刻に一番近い未ヒットChip(nTime, EChannel.BassDrum, nInputAdjustTime, CDTXMania.Instance.nPoor範囲ms + 1), inputEvent.nVelocity))\r
                                                                        break;\r
                                                                continue;\r
                                                                //-----------------\r
@@ -2312,64 +2371,64 @@ namespace DTXMania
                                                        {\r
                                                                #region [ HPのヒット処理 ]\r
                                                                //-----------------\r
-                                                               continue;       // 何もしない。この入力を完全に無視するので、break しないこと。\r
-                                                               //-----------------\r
+                                                               continue;   // 何もしない。この入力を完全に無視するので、break しないこと。\r
+                                                                                                               //-----------------\r
                                                                #endregion\r
                                                        }\r
-                                               //-----------------\r
+                                                       //-----------------\r
                                                        #endregion\r
                                        }\r
                                        //-----------------------------\r
                                        #endregion\r
                                        #region [ (B) ヒットしてなかった場合は、レーンフラッシュ、パッドアニメ、空打ち音再生を実行 ]\r
                                        //-----------------------------\r
-                                       int pad = nPad; // 以下、nPad の代わりに pad を用いる。(成りすまし用)\r
+                                       EPad pad = ePad; // 以下、nPad の代わりに pad を用いる。(成りすまし用)\r
 \r
-                                       if (nPad == (int)Eパッド.HP) // #27029 2012.1.4 from: HP&BD 時の HiHatPedal の場合は BD に成りすます。\r
-                                               pad = (int)Eパッド.BD;               //( HP|BD 時のHP入力はここまでこないので無視。)\r
+                                       if (ePad == EPad.HP)\r
+                                       {\r
+                                               // #27029 2012.1.4 from: HP&BD 時の HiHatPedal の場合は BD に成りすます。\r
+                                               pad = EPad.BD;\r
+                                               //( HP|BD 時のHP入力はここまでこないので無視。)\r
+                                       }\r
 \r
                                        // レーンフラッシュ\r
-                                       this.actLaneFlushD.Start((Eレーン)this.nパッド0Atoレーン07[pad], ((float)inputEvent.nVelocity) / 127f);\r
+                                       this.actLaneFlushD.Start(EnumConverter.LaneFromPad(pad), ((float)inputEvent.nVelocity) / 127f);\r
+\r
+                                       // パッド画像のヒット処理用\r
 \r
                                        // パッドアニメ\r
-                                       this.actPad.Hit(this.nパッド0Atoパッド08[pad]);\r
+                                       this.actPad.Hit(pad);\r
 \r
                                        // 空打ち音\r
-                                       if (CDTXMania.Instance.ConfigIni.bドラム打音を発声する)\r
+                                       if (CDTXMania.Instance.ConfigIni.bDrumsHitSound)\r
                                        {\r
-                                               CChip rChip = this.r空うちChip(E楽器パート.DRUMS, (Eパッド)pad);\r
+                                               CChip rChip = this.r空うちChip(EPart.Drums, pad);\r
                                                if (rChip != null)\r
                                                {\r
-                                                       #region [ (B1) 空打ち音が譜面で指定されているのでそれを再生する。]\r
-                                                       //-----------------\r
-                                                       this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, E楽器パート.DRUMS, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums);\r
-                                                       //-----------------\r
-                                                       #endregion\r
+                                                       // (B1) 空打ち音が譜面で指定されているのでそれを再生する。\r
+                                                       this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, EPart.Drums, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
                                                }\r
                                                else\r
                                                {\r
                                                        #region [ (B2) 空打ち音が指定されていないので一番近いチップを探して再生する。]\r
-                                                       //-----------------\r
-                                                       switch (((Eパッド)pad))\r
+                                                       switch (pad)\r
                                                        {\r
-                                                               case Eパッド.HH:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.HH:\r
                                                                        {\r
-                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[0], nInputAdjustTime);\r
-                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[7], nInputAdjustTime);\r
-                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[9], nInputAdjustTime);\r
-                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup)\r
+                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatClose, nInputAdjustTime);\r
+                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatOpen, nInputAdjustTime);\r
+                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LeftCymbal, nInputAdjustTime);\r
+                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup.Value)\r
                                                                                {\r
-                                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                                       case EHHGroup.HO_HC:\r
                                                                                                rChip = (chipHC != null) ? chipHC : chipLC;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       case EHHGroup.LC_HH:\r
                                                                                                rChip = (chipHC != null) ? chipHC : chipHO;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.全部共通:\r
+                                                                                       case EHHGroup.Group:\r
                                                                                                if (chipHC != null)\r
                                                                                                {\r
                                                                                                        rChip = chipHC;\r
@@ -2397,77 +2456,61 @@ namespace DTXMania
                                                                                                break;\r
                                                                                }\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.LT:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.LT:\r
                                                                        {\r
-                                                                               CChip chipLT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[4], nInputAdjustTime);\r
-                                                                               CChip chipFT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[5], nInputAdjustTime);\r
-                                                                               if (CDTXMania.Instance.ConfigIni.eFTGroup != EFTGroup.打ち分ける)\r
+                                                                               CChip chipLT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LowTom, nInputAdjustTime);\r
+                                                                               CChip chipFT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.FloorTom, nInputAdjustTime);\r
+                                                                               if (CDTXMania.Instance.ConfigIni.eFTGroup != EFTGroup.None)\r
                                                                                        rChip = (chipLT != null) ? chipLT : chipFT;\r
                                                                                else\r
                                                                                        rChip = chipLT;\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.FT:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.FT:\r
                                                                        {\r
-                                                                               CChip chipLT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[4], nInputAdjustTime);\r
-                                                                               CChip chipFT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[5], nInputAdjustTime);\r
-                                                                               if (CDTXMania.Instance.ConfigIni.eFTGroup != EFTGroup.打ち分ける)\r
+                                                                               CChip chipLT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LowTom, nInputAdjustTime);\r
+                                                                               CChip chipFT = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.FloorTom, nInputAdjustTime);\r
+                                                                               if (CDTXMania.Instance.ConfigIni.eFTGroup != EFTGroup.None)\r
                                                                                        rChip = (chipFT != null) ? chipFT : chipLT;\r
                                                                                else\r
                                                                                        rChip = chipFT;\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.CY:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.CY:\r
                                                                        {\r
-                                                                               CChip chipCY = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[6], nInputAdjustTime);\r
-                                                                               CChip chipRD = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[8], nInputAdjustTime);\r
-                                                                               if (CDTXMania.Instance.ConfigIni.eCYGroup != ECYGroup.打ち分ける)\r
+                                                                               CChip chipCY = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.Cymbal, nInputAdjustTime);\r
+                                                                               CChip chipRD = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.RideCymbal, nInputAdjustTime);\r
+                                                                               if (CDTXMania.Instance.ConfigIni.eCYGroup != ECYGroup.None)\r
                                                                                        rChip = (chipCY != null) ? chipCY : chipRD;\r
                                                                                else\r
                                                                                        rChip = chipCY;\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.HHO:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.HHO:\r
                                                                        {\r
-                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[0], nInputAdjustTime);\r
-                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[7], nInputAdjustTime);\r
-                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[9], nInputAdjustTime);\r
-                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup)\r
+                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatClose, nInputAdjustTime);\r
+                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatOpen, nInputAdjustTime);\r
+                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LeftCymbal, nInputAdjustTime);\r
+                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup.Value)\r
                                                                                {\r
-                                                                                       case EHHGroup.全部打ち分ける:\r
+                                                                                       case EHHGroup.None:\r
                                                                                                rChip = chipHO;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
+                                                                                       case EHHGroup.HO_HC:\r
                                                                                                rChip = (chipHO != null) ? chipHO : chipLC;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       case EHHGroup.LC_HH:\r
                                                                                                rChip = (chipHO != null) ? chipHO : chipHC;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.全部共通:\r
+                                                                                       case EHHGroup.Group:\r
                                                                                                if (chipHO != null)\r
                                                                                                {\r
                                                                                                        rChip = chipHO;\r
@@ -2491,41 +2534,33 @@ namespace DTXMania
                                                                                                break;\r
                                                                                }\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.RD:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.RD:\r
                                                                        {\r
-                                                                               CChip chipCY = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[6], nInputAdjustTime);\r
-                                                                               CChip chipRD = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[8], nInputAdjustTime);\r
-                                                                               if (CDTXMania.Instance.ConfigIni.eCYGroup != ECYGroup.打ち分ける)\r
+                                                                               CChip chipCY = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.Cymbal, nInputAdjustTime);\r
+                                                                               CChip chipRD = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.RideCymbal, nInputAdjustTime);\r
+                                                                               if (CDTXMania.Instance.ConfigIni.eCYGroup != ECYGroup.None)\r
                                                                                        rChip = (chipRD != null) ? chipRD : chipCY;\r
                                                                                else\r
                                                                                        rChip = chipRD;\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
-                                                               case Eパッド.LC:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
+                                                               case EPad.LC:\r
                                                                        {\r
-                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[0], nInputAdjustTime);\r
-                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[7], nInputAdjustTime);\r
-                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[9], nInputAdjustTime);\r
-                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup)\r
+                                                                               CChip chipHC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatClose, nInputAdjustTime);\r
+                                                                               CChip chipHO = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.HiHatOpen, nInputAdjustTime);\r
+                                                                               CChip chipLC = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EChannel.LeftCymbal, nInputAdjustTime);\r
+                                                                               switch (CDTXMania.Instance.ConfigIni.eHHGroup.Value)\r
                                                                                {\r
-                                                                                       case EHHGroup.全部打ち分ける:\r
-                                                                                       case EHHGroup.左シンバルのみ打ち分ける:\r
+                                                                                       case EHHGroup.None:\r
+                                                                                       case EHHGroup.LC_HH:\r
                                                                                                rChip = chipLC;\r
                                                                                                break;\r
 \r
-                                                                                       case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                                       case EHHGroup.全部共通:\r
+                                                                                       case EHHGroup.HO_HC:\r
+                                                                                       case EHHGroup.Group:\r
                                                                                                if (chipLC != null)\r
                                                                                                {\r
                                                                                                        rChip = chipLC;\r
@@ -2549,22 +2584,16 @@ namespace DTXMania
                                                                                                break;\r
                                                                                }\r
                                                                        }\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
                                                                        break;\r
 \r
                                                                default:\r
-                                                                       #region [ *** ]\r
-                                                                       //-----------------------------\r
-                                                                       rChip = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, this.nパッド0Atoチャンネル0A[pad], nInputAdjustTime);\r
-                                                                       //-----------------------------\r
-                                                                       #endregion\r
+                                                                       rChip = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, EnumConverter.ChannelFromPad(pad), nInputAdjustTime);\r
                                                                        break;\r
                                                        }\r
                                                        if (rChip != null)\r
                                                        {\r
                                                                // 空打ち音が見つかったので再生する。\r
-                                                               this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, E楽器パート.DRUMS, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums);\r
+                                                               this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, EPart.Drums, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
                                                        }\r
                                                        //-----------------\r
                                                        #endregion\r
@@ -2573,38 +2602,43 @@ namespace DTXMania
 \r
                                        // BAD or TIGHT 時の処理。\r
                                        if (CDTXMania.Instance.ConfigIni.bTight)\r
-                                               this.tチップのヒット処理_BadならびにTight時のMiss(E楽器パート.DRUMS, this.nパッド0Atoレーン07[pad]);\r
-                                       //-----------------------------\r
+                                               this.tチップのヒット処理_BadならびにTight時のMiss(EPart.Drums, EnumConverter.LaneFromPad(pad));//nパッド0Atoレーン07[(int)pad]\r
+                                                                                                                                                                                                                                                                                                                                                                               //-----------------------------\r
                                        #endregion\r
                                }\r
                        }\r
                }\r
+\r
                private void ドラムスクロール速度アップ()\r
                {\r
-                       float f = (float)this.演奏判定ライン座標.nJudgeLinePosY_delta.Drums / (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1);\r
-                       Debug.WriteLine("scr=" + CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + ", f1=" + f);\r
-                       CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums = Math.Min(CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1, 1999);\r
-                       f *= (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1);\r
-                       Debug.WriteLine("scr=" + CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + ", f2=" + f);\r
-                       this.演奏判定ライン座標.nJudgeLinePosY_delta.Drums = (int)(f + 0.5);\r
-                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums = (int)(f + 0.5);\r
+                       int scrollSpeed = CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums;\r
+                       CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums.Value = scrollSpeed + 1;\r
+                       float f = (float)CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums / (scrollSpeed + 1);\r
+                       if (scrollSpeed < CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums)\r
+                       {\r
+                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value = ((int)(f * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums + 1) + 0.5));\r
+                       }\r
                }\r
+\r
                private void ドラムスクロール速度ダウン()\r
                {\r
-                       float f = (float)this.演奏判定ライン座標.nJudgeLinePosY_delta.Drums / (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1);\r
-                       CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums = Math.Max(CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums - 1, 0);\r
-                       f *= (CDTXMania.Instance.ConfigIni.n譜面スクロール速度.Drums + 1);\r
-                       this.演奏判定ライン座標.nJudgeLinePosY_delta.Drums = (int)(f + 0.5);\r
-                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums = (int)(f + 0.5);\r
+                       int scrollSpeed = CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums;\r
+                       CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums.Value = (scrollSpeed - 1);\r
+                       float f = (float)CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums / (scrollSpeed + 1);\r
+                       if (scrollSpeed > CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums)\r
+                       {\r
+                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value = ((int)(f * (CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums + 1) + 0.5));\r
+                       }\r
                }\r
 \r
                private int nStartTime_ = 0;\r
+\r
                protected void tキー入力()\r
                {\r
                        IInputDevice keyboard = CDTXMania.Instance.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
+                                       (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
@@ -2628,15 +2662,15 @@ namespace DTXMania
 \r
                                                if ((pChip.n発声時刻ms + nDuration > 0) && (pChip.n発声時刻ms <= nStartTime_) && (nStartTime_ <= pChip.n発声時刻ms + nDuration))\r
                                                {\r
-                                                       if (pChip.bWAVを使うチャンネルである && !pChip.b空打ちチップである) // wav系チャンネル、且つ、空打ちチップではない\r
+                                                       if (pChip.bWAVを使うチャンネルである && !pChip.b空打ちチップである) // wav系チャンネル、且つ、空打ちチップではない\r
                                                        {\r
                                                                CDTX.CWAV wc;\r
                                                                bool b = CDTXMania.Instance.DTX.listWAV.TryGetValue(pChip.n整数値_内部番号, out wc);\r
                                                                if (!b) continue;\r
 \r
-                                                               if ((wc.bIsBGMSound && CDTXMania.Instance.ConfigIni.bBGM音を発声する) || (!wc.bIsBGMSound))\r
+                                                               if ((wc.bIsBGMSound && CDTXMania.Instance.ConfigIni.bBGMPlay) || (!wc.bIsBGMSound))\r
                                                                {\r
-                                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+                                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
                                                                        #region [ PAUSEする ]\r
                                                                        int j = wc.n現在再生中のサウンド番号;\r
                                                                        if (wc.rSound[j] != null)\r
@@ -2662,66 +2696,65 @@ namespace DTXMania
                        }\r
                        if ((!this.bPAUSE && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED)) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト))\r
                        {\r
-                               if (!CDTXMania.Instance.ConfigIni.bギタレボモード)\r
+                               if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
                                {\r
                                        this.t入力処理_ドラム();\r
                                }\r
-                               this.t入力処理_ギターベース(E楽器パート.GUITAR);\r
-                               this.t入力処理_ギターベース(E楽器パート.BASS);\r
+                               if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
+                               {\r
+                                       this.t入力処理_ギターベース(EPart.Guitar);\r
+                                       this.t入力処理_ギターベース(EPart.Bass);\r
+                               }\r
+\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 (+ctrl) + UpArrow (BGMAdjust)\r
+                               {   // shift (+ctrl) + UpArrow (BGMAdjust)\r
                                        CDTXMania.Instance.DTX.t各自動再生音チップの再生時刻を変更する((keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftControl) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightControl)) ? 1 : 10);\r
                                        CDTXMania.Instance.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
+                               {   // shift + DownArrow (BGMAdjust)\r
                                        CDTXMania.Instance.DTX.t各自動再生音チップの再生時刻を変更する((keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.LeftControl) || keyboard.bキーが押されている((int)SlimDX.DirectInput.Key.RightControl)) ? -1 : -10);\r
                                        CDTXMania.Instance.DTX.tWave再生位置自動補正();\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.UpArrow))\r
-                               {       // UpArrow(scrollspeed up)\r
+                               {   // UpArrow(scrollspeed up)\r
                                        ドラムスクロール速度アップ();\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.DownArrow))\r
-                               {       // DownArrow (scrollspeed down)\r
+                               {   // DownArrow (scrollspeed down)\r
                                        ドラムスクロール速度ダウン();\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Delete))\r
-                               {       // del (debug info)\r
-                                       CDTXMania.Instance.ConfigIni.b演奏情報を表示する = !CDTXMania.Instance.ConfigIni.b演奏情報を表示する;\r
+                               {   // del (debug info)\r
+                                       CDTXMania.Instance.ConfigIni.bDebugInfo.Value = !CDTXMania.Instance.ConfigIni.bDebugInfo;\r
                                }\r
-                               else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.LeftArrow))                // #24243 2011.1.16 yyagi UI for InputAdjustTime in playing screen.\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
+                               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 (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F5))\r
                                {\r
-                                       int n描画遅延ms = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums;\r
-                                       n描画遅延ms = Math.Max(n描画遅延ms - 1, -99);\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums =\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar =\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass = n描画遅延ms;\r
-                                       this.演奏判定ライン座標.nJudgeLinePosY_delta.Drums =\r
-                                       this.演奏判定ライン座標.nJudgeLinePosY_delta.Guitar =\r
-                                       this.演奏判定ライン座標.nJudgeLinePosY_delta.Bass = n描画遅延ms;\r
+                                       int nVal = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums - 1;\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value =\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar.Value =\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass.Value = nVal;\r
                                }\r
                                else if (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.F6))\r
                                {\r
-                                       int n描画遅延ms = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums;\r
-                                       n描画遅延ms = Math.Min(n描画遅延ms + 1, 99);\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums =\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar =\r
-                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass = n描画遅延ms;\r
-                                       this.演奏判定ライン座標.nJudgeLinePosY_delta.Drums =\r
-                                       this.演奏判定ライン座標.nJudgeLinePosY_delta.Guitar =\r
-                                       this.演奏判定ライン座標.nJudgeLinePosY_delta.Bass = n描画遅延ms;\r
+                                       int nVal = CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums + 1;\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Drums.Value =\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Guitar.Value =\r
+                                       CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset.Bass.Value = nVal;\r
                                }\r
-                               else if ((base.eフェーズID == CStage.Eフェーズ.共通_通常状態) && (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) || CDTXMania.Instance.Pad.b押されたGB(Eパッド.FT)))\r
-                               {       // escape (exit)\r
+                               else if ((base.eフェーズID == CStage.Eフェーズ.共通_通常状態) &&\r
+                                               (keyboard.bキーが押された((int)SlimDX.DirectInput.Key.Escape) ||\r
+                                               CDTXMania.Instance.Pad.bCancelPadIsPressedGB()))\r
+                               {\r
+                                       // escape (exit)\r
                                        this.actFO.tフェードアウト開始();\r
                                        base.eフェーズID = CStage.Eフェーズ.共通_フェードアウト;\r
                                        this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.演奏中断;\r
@@ -2729,206 +2762,31 @@ namespace DTXMania
                        }\r
                }\r
 \r
-               protected void t入力メソッド記憶(E楽器パート part)\r
+               protected void t入力メソッド記憶(EPart part)\r
                {\r
                        if (CDTXMania.Instance.Pad.st検知したデバイス.Keyboard)\r
                        {\r
-                               this.b演奏にキーボードを使った[(int)part] = true;\r
+                               this.b演奏にキーボードを使った[part] = true;\r
                        }\r
                        if (CDTXMania.Instance.Pad.st検知したデバイス.Joypad)\r
                        {\r
-                               this.b演奏にジョイパッドを使った[(int)part] = true;\r
+                               this.b演奏にジョイパッドを使った[part] = true;\r
                        }\r
                        if (CDTXMania.Instance.Pad.st検知したデバイス.MIDIIN)\r
                        {\r
-                               this.b演奏にMIDI入力を使った[(int)part] = true;\r
+                               this.b演奏にMIDI入力を使った[part] = true;\r
                        }\r
                        if (CDTXMania.Instance.Pad.st検知したデバイス.Mouse)\r
                        {\r
-                               this.b演奏にマウスを使った[(int)part] = true;\r
-                       }\r
-               }\r
-\r
-               protected void t進行描画_AVI()\r
-               {\r
-                       if ((\r
-                               (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) &&\r
-                               (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)) &&\r
-                               (!CDTXMania.Instance.ConfigIni.bストイックモード && CDTXMania.Instance.ConfigIni.bAVI有効))\r
-                       {\r
-                               if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                               {\r
-                                       this.actAVI.t進行描画(682, 112, 556, 710);\r
-                               }\r
-                               else\r
-                               {\r
-                                       if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left)\r
-                                       {\r
-                                               this.actAVI.t進行描画(1153, 128, 556, 710);\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               this.actAVI.t進行描画(619 + 682, 128, 556, 710);\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void t進行描画_BGA()\r
-               {\r
-                       if ((\r
-                               (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) &&\r
-                               (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト)) &&\r
-                               (!CDTXMania.Instance.ConfigIni.bストイックモード && CDTXMania.Instance.ConfigIni.bBGA有効))\r
-                       {\r
-                               // DR\r
-                               if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                               {\r
-                                       this.actBGA.t進行描画(682, 112);\r
-                               }\r
-                               else\r
-                               {\r
-                                       if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left)\r
-                                       {\r
-                                               this.actBGA.t進行描画(1153, 128);\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               this.actBGA.t進行描画(619 + 682, 128);\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               private void t進行描画_DANGER()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                       {\r
-                               this.actDANGER.t進行描画(false, this.actGauge.IsDanger(E楽器パート.GUITAR), this.actGauge.IsDanger(E楽器パート.BASS));// #23631 2011.4.19 yyagi\r
-                       }\r
-                       else\r
-                       {\r
-                               this.actDANGER.t進行描画(this.actGauge.IsDanger(E楽器パート.DRUMS), false, false);\r
-                       }\r
-               }\r
-               protected 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
-               protected void t進行描画_RGBボタン()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)\r
-                       {\r
-                               this.actRGB.t進行描画(演奏判定ライン座標);\r
-                       }\r
-               }\r
-               protected 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
-               protected 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
+                               this.b演奏にマウスを使った[part] = true;\r
                        }\r
                }\r
 \r
-               private void t進行描画_Wailing枠()\r
-               {\r
-                       int GtWailingFrameX;\r
-                       int BsWailingFrameX;\r
-                       int GtWailingFrameY = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.GUITAR, bReverse[(int)E楽器パート.GUITAR], true, true);\r
-                       int BsWailingFrameY = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.BASS, bReverse[(int)E楽器パート.BASS], true, true);\r
-\r
-                       if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                       {\r
-                               GtWailingFrameX = (int)(139 * Scale.X);\r
-                               BsWailingFrameX = (int)(593 * Scale.X);\r
-                       }\r
-                       else\r
-                       {\r
-                               GtWailingFrameX = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1761 : 1690;\r
-                               BsWailingFrameX = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1434 : 440;\r
-                       }\r
-\r
-                       if ((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
-                       {\r
-                               if (this.txWailing枠 != null)\r
-                               {\r
-                                       if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
-                                       {\r
-                                               this.txWailing枠.t2D描画(CDTXMania.Instance.Device, GtWailingFrameX, GtWailingFrameY);\r
-                                       }\r
-                                       if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
-                                       {\r
-                                               this.txWailing枠.t2D描画(CDTXMania.Instance.Device, BsWailingFrameX, BsWailingFrameY);\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               protected void t進行描画_チップファイアGB()\r
-               {\r
-                       this.actChipFireGB.On進行描画();\r
-               }\r
-               protected void t進行描画_パネル文字列()\r
-               {\r
-                       if ((base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト))\r
-                       {\r
-                               int x, y;\r
-                               if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                               {\r
-                                       x = 0xb5;\r
-                                       y = 430;\r
-                               }\r
-                               else\r
-                               {\r
-                                       x = CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ? 336 : 427;\r
-                                       y = 428;\r
-                               }\r
-                               this.actPanel.t進行描画(x, y);\r
-                       }\r
-               }\r
-               protected void tパネル文字列の設定()\r
-               {\r
-                       this.actPanel.SetPanelString(string.IsNullOrEmpty(CDTXMania.Instance.DTX.PANEL) ? CDTXMania.Instance.DTX.TITLE : CDTXMania.Instance.DTX.PANEL);\r
-               }\r
-\r
-\r
-               protected void t進行描画_ゲージ()\r
-               {\r
-                       if (((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.HALF) && (CDTXMania.Instance.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
-               protected void t進行描画_コンボ()\r
-               {\r
-                       this.actCombo.On進行描画();\r
-               }\r
-               protected void t進行描画_スコア()\r
-               {\r
-                       this.actScore.On進行描画();\r
-               }\r
-               protected void t進行描画_ステータスパネル()\r
-               {\r
-                       this.actStatusPanels.On進行描画();\r
-               }\r
                /// <summary>\r
-               /// ã\83\81ã\83\83ã\83\97ã\82\92æ\8f\8fç\94»ã\81\99ã\82\8b\r
+               /// ã\83\81ã\83\83ã\83\97ã\81«é\96¢é\80£ã\81\99ã\82\8bå\87¦ç\90\86ã\82\92è¡\8cã\81\86\r
                /// </summary>\r
-               /// <param name="ePlayMode">演奏している楽器</param>\r
                /// <returns>演奏が終了したかどうかを示す値</returns>\r
-               protected bool t進行描画_チップ(E楽器パート ePlayMode)\r
+               protected bool t進行描画_チップ()\r
                {\r
                        if ((base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED) || (base.eフェーズID == CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト))\r
                        {\r
@@ -2943,11 +2801,11 @@ namespace DTXMania
                                return true;\r
                        }\r
 \r
-                       CDTX dTX = CDTXMania.Instance.DTX;\r
-                       CConfigIni configIni = CDTXMania.Instance.ConfigIni;\r
-                       for (int nCurrentTopChip = this.n現在のトップChip; nCurrentTopChip < dTX.listChip.Count; nCurrentTopChip++)\r
+                       //CDTX dTX = CDTXMania.Instance.DTX;\r
+                       //CConfigIni configIni = CDTXMania.Instance.ConfigIni;\r
+                       for (int nCurrentTopChip = this.n現在のトップChip; nCurrentTopChip < CDTXMania.Instance.DTX.listChip.Count; nCurrentTopChip++)\r
                        {\r
-                               CChip pChip = dTX.listChip[nCurrentTopChip];\r
+                               CChip pChip = CDTXMania.Instance.DTX.listChip[nCurrentTopChip];\r
                                //Debug.WriteLine( "nCurrentTopChip=" + nCurrentTopChip + ", ch=" + pChip.nチャンネル番号.ToString("x2") + ", 発音位置=" + pChip.n発声位置 + ", 発声時刻ms=" + pChip.n発声時刻ms );\r
                                pChip.CalcDistanceFromBar(CSound管理.rc演奏用タイマ.n現在時刻, this.act譜面スクロール速度.db現在の譜面スクロール速度);\r
                                if (Math.Min(Math.Min(pChip.nバーからの距離dot.Drums, pChip.nバーからの距離dot.Guitar), pChip.nバーからの距離dot.Bass) > 450 * Scale.Y)\r
@@ -2955,30 +2813,30 @@ namespace DTXMania
                                        break;\r
                                }\r
                                // #28026 2012.4.5 yyagi; 信心ワールドエンドの曲終了後リザルトになかなか行かない問題の修正\r
-                               if ((dTX.listChip[this.n現在のトップChip].nバーからの距離dot.Drums < -65 * Scale.Y) &&     // 小節線の消失処理などに影響するため、\r
-                                       (dTX.listChip[this.n現在のトップChip].nバーからの距離dot.Guitar < -65 * Scale.Y) &&        // Drumsのスクロールスピードだけには依存させない。\r
-                                       (dTX.listChip[this.n現在のトップChip].nバーからの距離dot.Bass < -65 * Scale.Y) &&\r
-                                       dTX.listChip[this.n現在のトップChip].bHit)\r
+                               if ((CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].nバーからの距離dot.Drums < -65 * Scale.Y) &&   // 小節線の消失処理などに影響するため、\r
+                                               (CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].nバーからの距離dot.Guitar < -65 * Scale.Y) &&  // Drumsのスクロールスピードだけには依存させない。\r
+                                               (CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].nバーからの距離dot.Bass < -65 * Scale.Y) &&\r
+                                               CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].bHit)\r
                                {\r
                                        ++this.n現在のトップChip;\r
                                        continue;\r
                                }\r
-                               bool bPChipIsAutoPlay = pChip.bAssignAutoPlayState(bIsAutoPlay);\r
+                               bool bPChipIsAutoPlay = pChip.bAssignAutoPlayState();\r
 \r
-                               int nInputAdjustTime = (bPChipIsAutoPlay || (pChip.e楽器パート == E楽器パート.UNKNOWN)) ? 0 : this.nInputAdjustTimeMs[(int)pChip.e楽器パート];\r
+                               int nInputAdjustTime = (bPChipIsAutoPlay || (pChip.e楽器パート == EPart.Unknown)) ? 0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[pChip.e楽器パート];\r
 \r
-                               int instIndex = (int)pChip.e楽器パート;\r
-                               if (((pChip.e楽器パート != E楽器パート.UNKNOWN) && !pChip.bHit) &&\r
-                                               ((pChip.nバーからの距離dot[instIndex] < -40 * Scale.Y) &&\r
-                                       (this.e指定時刻からChipのJUDGEを返す(CSound管理.rc演奏用タイマ.n現在時刻, pChip, nInputAdjustTime) == E判定.Miss)))\r
+                               EPart inst = pChip.e楽器パート;\r
+                               if (((pChip.e楽器パート != EPart.Unknown) && !pChip.bHit) &&\r
+                                                               ((pChip.nバーからの距離dot[inst] < -40 * Scale.Y) &&\r
+                                               (this.e指定時刻からChipのJUDGEを返す(CSound管理.rc演奏用タイマ.n現在時刻, pChip, nInputAdjustTime) == EJudge.Miss)))\r
                                {\r
-                                       this.tチップのヒット処理(CSound管理.rc演奏用タイマ.n現在時刻, pChip);      //チップ消失(Hitせずスルーした場合)\r
+                                       this.tチップのヒット処理(CSound管理.rc演奏用タイマ.n現在時刻, pChip);    //チップ消失(Hitせずスルーした場合)\r
                                }\r
-                               if (((pChip.e楽器パート != E楽器パート.UNKNOWN) && !pChip.bHit) &&\r
-                                       ((pChip.nバーからの距離dot[instIndex] + this.演奏判定ライン座標.nJudgeLinePosY_delta[instIndex] < 0)))\r
+                               if (((pChip.e楽器パート != EPart.Unknown) && !pChip.bHit) &&\r
+                                               ((pChip.nバーからの距離dot[inst] + CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[inst] < 0)))\r
                                {\r
                                        //Debug.WriteLine( "透明度=" + pChip.n透明度 );\r
-                                       pChip.n透明度 -= 12;         // チップが判定バーを越えたら、徐々に透明にする。VSyncWaitの有無で加減が変わるが・・\r
+                                       pChip.n透明度 -= 12;       // チップが判定バーを越えたら、徐々に透明にする。VSyncWaitの有無で加減が変わるが・・\r
                                        if (pChip.n透明度 < 0)\r
                                        {\r
                                                pChip.n透明度 = 0;\r
@@ -2986,85 +2844,85 @@ namespace DTXMania
                                }\r
 \r
                                // #35411 chnmr0 add (ターゲットゴースト)\r
-                               if (CDTXMania.Instance.ConfigIni.eTargetGhost[instIndex] != ETargetGhostData.NONE &&\r
-                                                CDTXMania.Instance.DTX.listTargetGhsotLag[instIndex] != null &&\r
-                                                pChip.e楽器パート != E楽器パート.UNKNOWN &&\r
-                                                pChip.nバーからの距離dot[instIndex] < 0)\r
+                               if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] != ETargetGhostData.None &&\r
+                                                                CDTXMania.Instance.DTX.listTargetGhsotLag[inst] != null &&\r
+                                                                pChip.e楽器パート != EPart.Unknown &&\r
+                                                                pChip.nバーからの距離dot[inst] < 0)\r
                                {\r
                                        if (!pChip.bTargetGhost判定済み)\r
                                        {\r
                                                pChip.bTargetGhost判定済み = true;\r
 \r
                                                int ghostLag = 128;\r
-                                               if (0 <= pChip.n楽器パートでの出現順 && pChip.n楽器パートでの出現順 < CDTXMania.Instance.DTX.listTargetGhsotLag[instIndex].Count)\r
+                                               if (0 <= pChip.n楽器パートでの出現順 && pChip.n楽器パートでの出現順 < CDTXMania.Instance.DTX.listTargetGhsotLag[inst].Count)\r
                                                {\r
-                                                       ghostLag = CDTXMania.Instance.DTX.listTargetGhsotLag[instIndex][pChip.n楽器パートでの出現順];\r
+                                                       ghostLag = CDTXMania.Instance.DTX.listTargetGhsotLag[inst][pChip.n楽器パートでの出現順];\r
                                                        // 上位8ビットが1ならコンボが途切れている(ギターBAD空打ちでコンボ数を再現するための措置)\r
                                                        if (ghostLag > 255)\r
                                                        {\r
-                                                               this.nコンボ数_TargetGhost[instIndex] = 0;\r
+                                                               this.nコンボ数_TargetGhost[inst] = 0;\r
                                                        }\r
                                                        ghostLag = (ghostLag & 255) - 128;\r
                                                }\r
-                                               else if (CDTXMania.Instance.ConfigIni.eTargetGhost[instIndex] == ETargetGhostData.PERFECT)\r
+                                               else if (CDTXMania.Instance.ConfigIni.eTargetGhost[inst] == ETargetGhostData.Perfect)\r
                                                {\r
                                                        ghostLag = 0;\r
                                                }\r
 \r
                                                if (ghostLag <= 127)\r
                                                {\r
-                                                       E判定 eJudge = this.e指定時刻からChipのJUDGEを返す(pChip.n発声時刻ms + ghostLag, pChip, 0, false);\r
-                                                       this.nヒット数_TargetGhost[instIndex][(int)eJudge]++;\r
-                                                       if (eJudge == E判定.Miss || eJudge == E判定.Poor)\r
+                                                       EJudge eJudge = this.e指定時刻からChipのJUDGEを返す(pChip.n発声時刻ms + ghostLag, pChip, 0, false);\r
+                                                       this.nヒット数_TargetGhost[inst][(int)eJudge]++;\r
+                                                       if (eJudge == EJudge.Miss || eJudge == EJudge.Poor)\r
                                                        {\r
-                                                               this.n最大コンボ数_TargetGhost[instIndex] = Math.Max(this.n最大コンボ数_TargetGhost[instIndex], this.nコンボ数_TargetGhost[instIndex]);\r
-                                                               this.nコンボ数_TargetGhost[instIndex] = 0;\r
+                                                               this.n最大コンボ数_TargetGhost[inst] = Math.Max(this.n最大コンボ数_TargetGhost[inst], this.nコンボ数_TargetGhost[inst]);\r
+                                                               this.nコンボ数_TargetGhost[inst] = 0;\r
                                                        }\r
                                                        else\r
                                                        {\r
-                                                               this.nコンボ数_TargetGhost[instIndex]++;\r
+                                                               this.nコンボ数_TargetGhost[inst]++;\r
                                                        }\r
                                                }\r
                                        }\r
                                }\r
 \r
-                               if (pChip[Ech定義.BGM] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               if (pChip[EChannel.BGM] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (configIni.bBGM音を発声する)\r
+                                       if (CDTXMania.Instance.ConfigIni.bBGMPlay)\r
                                        {\r
                                                //long t = CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms;\r
                                                //Trace.TraceInformation( "BGM再生開始: 演奏タイマのn前回リセットしたときのシステム時刻=" + CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + ", pChip.n発生時刻ms=" + pChip.n発声時刻ms + ", 合計=" + t );\r
-                                               dTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int)Eレーン.BGM, dTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+                                               CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
                                        }\r
                                }\r
-                               else if (pChip[Ech定義.BPM] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.BPM] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       this.actPlayInfo.dbBPM = (pChip.n整数値 * (((double)configIni.n演奏速度) / 20.0)) + dTX.BASEBPM;\r
+                                       this.actPlayInfo.dbBPM = (pChip.n整数値 * (((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0)) + CDTXMania.Instance.DTX.BASEBPM;\r
                                }\r
                                else if (pChip.bBGALayer && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (configIni.bBGA有効)\r
+                                       if (CDTXMania.Instance.ConfigIni.bBGA)\r
                                        {\r
                                                switch (pChip.eBGA種別)\r
                                                {\r
-                                                       case EBGA種別.BMPTEX:\r
+                                                       case EBGAType.BMPTEX:\r
                                                                if (pChip.rBMPTEX != null)\r
                                                                {\r
                                                                        this.actBGA.Start(pChip, null, pChip.rBMPTEX, pChip.rBMPTEX.tx画像.sz画像サイズ.Width, pChip.rBMPTEX.tx画像.sz画像サイズ.Height, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\r
                                                                }\r
                                                                break;\r
 \r
-                                                       case EBGA種別.BGA:\r
+                                                       case EBGAType.BGA:\r
                                                                if ((pChip.rBGA != null) && ((pChip.rBMP != null) || (pChip.rBMPTEX != null)))\r
                                                                {\r
                                                                        this.actBGA.Start(pChip, pChip.rBMP, pChip.rBMPTEX, pChip.rBGA.pt画像側右下座標.X - pChip.rBGA.pt画像側左上座標.X, pChip.rBGA.pt画像側右下座標.Y - pChip.rBGA.pt画像側左上座標.Y, 0, 0, pChip.rBGA.pt画像側左上座標.X, pChip.rBGA.pt画像側左上座標.Y, 0, 0, pChip.rBGA.pt表示座標.X, pChip.rBGA.pt表示座標.Y, 0, 0, 0);\r
                                                                }\r
                                                                break;\r
 \r
-                                                       case EBGA種別.BGAPAN:\r
+                                                       case EBGAType.BGAPAN:\r
                                                                if ((pChip.rBGAPan != null) && ((pChip.rBMP != null) || (pChip.rBMPTEX != null)))\r
                                                                {\r
                                                                        this.actBGA.Start(pChip, pChip.rBMP, pChip.rBMPTEX, pChip.rBGAPan.sz開始サイズ.Width, pChip.rBGAPan.sz開始サイズ.Height, pChip.rBGAPan.sz終了サイズ.Width, pChip.rBGAPan.sz終了サイズ.Height, pChip.rBGAPan.pt画像側開始位置.X, pChip.rBGAPan.pt画像側開始位置.Y, pChip.rBGAPan.pt画像側終了位置.X, pChip.rBGAPan.pt画像側終了位置.Y, pChip.rBGAPan.pt表示側開始位置.X, pChip.rBGAPan.pt表示側開始位置.Y, pChip.rBGAPan.pt表示側終了位置.X, pChip.rBGAPan.pt表示側終了位置.Y, pChip.n総移動時間);\r
@@ -3080,36 +2938,45 @@ namespace DTXMania
                                                }\r
                                        }\r
                                }\r
-                               else if (pChip[Ech定義.BPMEx] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.BPMEx] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (dTX.listBPM.ContainsKey(pChip.n整数値_内部番号))\r
+                                       if (CDTXMania.Instance.DTX.listBPM.ContainsKey(pChip.n整数値_内部番号))\r
                                        {\r
-                                               this.actPlayInfo.dbBPM = (dTX.listBPM[pChip.n整数値_内部番号].dbBPM値 * (((double)configIni.n演奏速度) / 20.0)) + dTX.BASEBPM;\r
+                                               this.actPlayInfo.dbBPM = (CDTXMania.Instance.DTX.listBPM[pChip.n整数値_内部番号].dbBPM値 *\r
+                                                               (((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0)) +\r
+                                                               CDTXMania.Instance.DTX.BASEBPM;\r
                                        }\r
                                }\r
                                else if (pChip.bDrums可視チップ && pChip.b空打ちチップである)\r
                                {\r
-                                       this.t進行描画_チップ_空打ち音設定_ドラム(ref pChip);\r
+                                       if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                                       {\r
+                                               pChip.bHit = true;\r
+                                               if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                                               {\r
+                                                       this.r現在の空うちドラムChip[(int)(EnumConverter.PadFromChannel(pChip.eチャンネル番号) - EPad.DrumsPadMin)] = pChip;\r
+                                               }\r
+                                       }\r
                                }\r
                                else if (pChip.bDrums可視チップ_LP_LBD含まない)\r
                                {\r
                                        this.t進行描画_チップ_ドラムス(ref pChip);\r
                                }\r
-                               else if (pChip[Ech定義.DrumsFillin] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.DrumsFillin] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の歓声Chip.Drums = pChip;\r
                                }\r
                                else if (pChip.bGuitar可視チップ)\r
                                {\r
-                                       this.t進行描画_チップ_ギターベース(ref pChip, E楽器パート.GUITAR);\r
+                                       this.t進行描画_チップ_ギターベース(ref pChip, EPart.Guitar);\r
                                }\r
-                               else if (pChip[Ech定義.Guitar_Wailing])\r
+                               else if (pChip[EChannel.Guitar_Wailing])\r
                                {\r
                                        this.t進行描画_チップ_ウェイリング(ref pChip);\r
                                }\r
-                               else if (pChip[Ech定義.Guitar_WailingSound] && !pChip.bHit && (pChip.nバーからの距離dot.Guitar < 0))\r
+                               else if (pChip[EChannel.Guitar_WailingSound] && !pChip.bHit && (pChip.nバーからの距離dot.Guitar < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の歓声Chip.Guitar = pChip;\r
@@ -3118,56 +2985,34 @@ namespace DTXMania
                                {\r
                                        pChip.bHit = true;\r
                                }\r
-                               else if (pChip[Ech定義.BarLine])// 小節線\r
+                               else if (pChip[EChannel.BarLine] || pChip[EChannel.BeatLine])// 小節線\r
                                {\r
-                                       this.t進行描画_チップ_小節線(ref pChip);\r
+                                       this.t進行描画_チップ_小節線_拍線(ref pChip);\r
                                }\r
-                               else if (pChip[Ech定義.BeatLine] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))// 拍線\r
+                               else if (pChip[EChannel.MIDIChorus] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-\r
-                                       if ((ePlayMode == E楽器パート.DRUMS) && (configIni.eDark != Eダークモード.FULL) && pChip.b可視 && (this.txチップ != null))\r
-                                       {\r
-                                               this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
-                                                       configIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ?\r
-                                                               105 : 619,\r
-                                                       configIni.bReverse.Drums ?\r
-                                                       //(int) ( ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 1 ) * Scale.Y ) :\r
-                                                       //(int) ( ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 1 ) * Scale.Y ),\r
-                                                               124 + pChip.nバーからの距離dot.Drums : 947 - pChip.nバーからの距離dot.Drums,\r
-                                                       new Rectangle(\r
-                                                               0,\r
-                                                               1006,\r
-                                                               (configIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 888 : 682,\r
-                                                               2\r
-                                                       )\r
-                                               );\r
-                                       }\r
                                }\r
-                               else if (pChip[Ech定義.MIDIChorus] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
-                               {\r
-                                       pChip.bHit = true;\r
-                               }\r
-                               else if (pChip[Ech定義.FillIn])\r
+                               else if (pChip[EChannel.FillIn])\r
                                {\r
                                        this.t進行描画_チップ_フィルイン(ref pChip);\r
                                }\r
                                else if (pChip.bMovie && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (configIni.bAVI有効)\r
+                                       if (CDTXMania.Instance.ConfigIni.bAVI)\r
                                        {\r
                                                if (CDTXMania.Instance.DTX.bチップがある.BGA)\r
                                                {\r
                                                        this.actAVI.bHasBGA = true;\r
                                                }\r
-                                               if (pChip.eチャンネル番号 == Ech定義.MovieFull || CDTXMania.Instance.ConfigIni.bForceAVIFullscreen)\r
+                                               if (pChip.eチャンネル番号 == EChannel.MovieFull || CDTXMania.Instance.ConfigIni.bFullAVI)\r
                                                {\r
                                                        this.actAVI.bFullScreenMovie = true;\r
                                                }\r
                                                switch (pChip.eAVI種別)\r
                                                {\r
-                                                       case EAVI種別.AVI:\r
+                                                       case EAVIType.AVI:\r
                                                                {\r
                                                                        int startWidth = !this.actAVI.bFullScreenMovie ? 278 : SampleFramework.GameWindowSize.Width;\r
                                                                        int startHeight = !this.actAVI.bFullScreenMovie ? 355 : SampleFramework.GameWindowSize.Height;\r
@@ -3175,7 +3020,7 @@ namespace DTXMania
                                                                }\r
                                                                break;\r
 \r
-                                                       case EAVI種別.AVIPAN:\r
+                                                       case EAVIType.AVIPAN:\r
                                                                if (pChip.rAVIPan != null)\r
                                                                {\r
                                                                        this.actAVI.Start(pChip.eチャンネル番号, pChip.rAVI, pChip.rAVIPan.sz開始サイズ.Width, pChip.rAVIPan.sz開始サイズ.Height, pChip.rAVIPan.sz終了サイズ.Width, pChip.rAVIPan.sz終了サイズ.Height, pChip.rAVIPan.pt動画側開始位置.X, pChip.rAVIPan.pt動画側開始位置.Y, pChip.rAVIPan.pt動画側終了位置.X, pChip.rAVIPan.pt動画側終了位置.Y, pChip.rAVIPan.pt表示側開始位置.X, pChip.rAVIPan.pt表示側開始位置.Y, pChip.rAVIPan.pt表示側終了位置.X, pChip.rAVIPan.pt表示側終了位置.Y, pChip.n総移動時間, pChip.n発声時刻ms);\r
@@ -3187,11 +3032,11 @@ namespace DTXMania
                                else if (pChip.bSE && !pChip.bOverrideSE && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if (configIni.bBGM音を発声する)\r
+                                       if (CDTXMania.Instance.ConfigIni.bBGMPlay)\r
                                        {\r
-                                               dTX.tWavの再生停止(this.n最後に再生したBGMの実WAV番号[pChip.eチャンネル番号 - Ech定義.SE01]);\r
-                                               dTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int)Eレーン.BGM, dTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
-                                               this.n最後に再生したBGMの実WAV番号[pChip.eチャンネル番号 - Ech定義.SE01] = pChip.n整数値_内部番号;\r
+                                               CDTXMania.Instance.DTX.tWavの再生停止(this.n最後に再生したBGMの実WAV番号[pChip.eチャンネル番号 - EChannel.SE01]);\r
+                                               CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
+                                               this.n最後に再生したBGMの実WAV番号[pChip.eチャンネル番号 - EChannel.SE01] = pChip.n整数値_内部番号;\r
                                        }\r
                                }\r
                                else if (pChip.bOverrideSE && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
@@ -3211,38 +3056,38 @@ namespace DTXMania
 \r
                                        //      protected void tサウンド再生( CDTX.CChip pChip, long n再生開始システム時刻ms, E楽器パート part, int n音量, bool bモニタ, bool b音程をずらして再生 )\r
                                        pChip.bHit = true;\r
-                                       E楽器パート[] p = { E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.DRUMS, E楽器パート.GUITAR, E楽器パート.BASS };\r
+                                       EPart[] p = { EPart.Drums, EPart.Drums, EPart.Drums, EPart.Drums, EPart.Guitar, EPart.Bass };\r
 \r
-                                       E楽器パート pp = p[pChip.eチャンネル番号 - Ech定義.SE24];\r
+                                       EPart pp = p[pChip.eチャンネル番号 - EChannel.SE24];\r
 \r
                                        //                                                      if ( pp == E楽器パート.DRUMS ) {                   // pChip.nチャンネル番号= ..... HHとか、ドラムの場合は変える。\r
                                        //                                                              //            HC    CY    RD    LC\r
                                        //                                                              int[] ch = { 0x11, 0x16, 0x19, 0x1A };\r
                                        //                                                              pChip.nチャンネル番号 = ch[ pChip.nチャンネル番号 - 0x84 ]; \r
                                        //                                                      }\r
-                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, pp, dTX.nモニタを考慮した音量(pp));\r
+                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, pp, CDTXMania.Instance.DTX.nモニタを考慮した音量(pp));\r
                                }\r
 \r
                                else if (pChip.bBass可視チップ)\r
                                {\r
-                                       this.t進行描画_チップ_ギターベース(ref pChip, E楽器パート.BASS);\r
+                                       this.t進行描画_チップ_ギターベース(ref pChip, EPart.Bass);\r
                                }\r
-                               else if (pChip[Ech定義.Bass_Wailing])\r
+                               else if (pChip[EChannel.Bass_Wailing])\r
                                {\r
                                        this.t進行描画_チップ_ウェイリング(ref pChip);\r
                                }\r
-                               else if (pChip[Ech定義.Bass_WailingSound] && !pChip.bHit && (pChip.nバーからの距離dot.Bass < 0))\r
+                               else if (pChip[EChannel.Bass_WailingSound] && !pChip.bHit && (pChip.nバーからの距離dot.Bass < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の歓声Chip.Bass = pChip;\r
                                }\r
-                               else if (pChip[Ech定義.Guitar_NoChip] && !pChip.bHit && (pChip.nバーからの距離dot.Guitar < 0))\r
+                               else if (pChip[EChannel.Guitar_NoChip] && !pChip.bHit && (pChip.nバーからの距離dot.Guitar < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の空うちギターChip = pChip;\r
                                        pChip.ConvertGBNoChip();\r
                                }\r
-                               else if (pChip[Ech定義.Bass_NoChip] && !pChip.bHit && (pChip.nバーからの距離dot.Bass < 0))\r
+                               else if (pChip[EChannel.Bass_NoChip] && !pChip.bHit && (pChip.nバーからの距離dot.Bass < 0))\r
                                {\r
                                        pChip.bHit = true;\r
                                        this.r現在の空うちベースChip = pChip;\r
@@ -3251,21 +3096,21 @@ namespace DTXMania
                                else if (pChip.bBGALayerSwap && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        pChip.bHit = true;\r
-                                       if ((configIni.bBGA有効 && (pChip.eBGA種別 == EBGA種別.BMP)) || (pChip.eBGA種別 == EBGA種別.BMPTEX))\r
+                                       if ((CDTXMania.Instance.ConfigIni.bBGA && (pChip.eBGA種別 == EBGAType.BMP)) || (pChip.eBGA種別 == EBGAType.BMPTEX))\r
                                        {\r
                                                this.actBGA.ChangeScope(pChip);\r
                                        }\r
                                }\r
-                               else if (pChip[Ech定義.MixerAdd] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.MixerAdd] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        //Debug.WriteLine( "[DA(AddMixer)] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値.ToString( "x2" ) + ", time=" + pChip.n発声時刻ms );\r
                                        pChip.bHit = true;\r
-                                       if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))  // 参照が遠いので後日最適化する\r
+                                       if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))    // 参照が遠いので後日最適化する\r
                                        {\r
                                                CDTX.CWAV wc = CDTXMania.Instance.DTX.listWAV[pChip.n整数値_内部番号];\r
                                                //Debug.Write( "[AddMixer] BAR=" + pChip.n発声位置 / 384 + ", wav=" + Path.GetFileName( wc.strファイル名 ) + ", time=" + pChip.n発声時刻ms );\r
 \r
-                                               for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPoliphonicSounds; i++)\r
+                                               for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPolyphonicSounds; i++)\r
                                                {\r
                                                        if (wc.rSound[i] != null)\r
                                                        {\r
@@ -3284,23 +3129,23 @@ namespace DTXMania
                                                }\r
                                        }\r
                                }\r
-                               else if (pChip[Ech定義.MixerRemove] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if (pChip[EChannel.MixerRemove] && !pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
                                {\r
                                        //Debug.WriteLine( "[DB(RemoveMixer)] BAR=" + pChip.n発声位置 / 384 + " ch=" + pChip.nチャンネル番号.ToString( "x2" ) + ", wav=" + pChip.n整数値.ToString( "x2" ) + ", time=" + pChip.n発声時刻ms );\r
                                        pChip.bHit = true;\r
-                                       if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))  // 参照が遠いので後日最適化する\r
+                                       if (CDTXMania.Instance.DTX.listWAV.ContainsKey(pChip.n整数値_内部番号))    // 参照が遠いので後日最適化する\r
                                        {\r
                                                CDTX.CWAV wc = CDTXMania.Instance.DTX.listWAV[pChip.n整数値_内部番号];\r
                                                //Debug.Write( "[DelMixer] BAR=" + pChip.n発声位置 / 384 +  ", wav=" + Path.GetFileName( wc.strファイル名 ) + ", time=" + pChip.n発声時刻ms );\r
-                                               for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPoliphonicSounds; i++)\r
+                                               for (int i = 0; i < CDTXMania.Instance.ConfigIni.nPolyphonicSounds; i++)\r
                                                {\r
                                                        if (wc.rSound[i] != null)\r
                                                        {\r
                                                                //CDTXMania.Instance.Sound管理.RemoveMixer( wc.rSound[ i ] );\r
-                                                               if (!wc.rSound[i].b演奏終了後も再生が続くチップである) // #32248 2013.10.16 yyagi\r
-                                                               {                                                                                                                       // DTX終了後も再生が続くチップの0xDB登録をなくすことはできず。\r
-                                                                       RemoveMixer(wc.rSound[i]);                                                      // (ミキサー解除のタイミングが遅延する場合の対応が面倒なので。)\r
-                                                               }                                                                                                                       // そこで、代わりにフラグをチェックしてミキサー削除ロジックへの遷移をカットする。\r
+                                                               if (!wc.rSound[i].b演奏終了後も再生が続くチップである)   // #32248 2013.10.16 yyagi\r
+                                                               {                                                           // DTX終了後も再生が続くチップの0xDB登録をなくすことはできず。\r
+                                                                       RemoveMixer(wc.rSound[i]);                          // (ミキサー解除のタイミングが遅延する場合の対応が面倒なので。)\r
+                                                               }                                                           // そこで、代わりにフラグをチェックしてミキサー削除ロジックへの遷移をカットする。\r
                                                        }\r
                                                        //else\r
                                                        //{\r
@@ -3314,7 +3159,23 @@ namespace DTXMania
                                                }\r
                                        }\r
                                }\r
-                               else if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                               else if ( pChip[ EChannel.Click ] && !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
+                               {\r
+                                       pChip.bHit = true;\r
+                                       if ( CDTXMania.Instance.ConfigIni.eClickType != EClickType.Off )\r
+                                       {\r
+                                               switch (pChip.n整数値)\r
+                                               {\r
+                                                       case 1:\r
+                                                               CDTXMania.Instance.Skin.soundClickHigh.t再生する();\r
+                                                               break;\r
+                                                       case 2:\r
+                                                               CDTXMania.Instance.Skin.soundClickLow.t再生する();\r
+                                                               break;\r
+                                               }\r
+                                       }\r
+                               }\r
+                               else if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                {\r
                                        // other chips\r
                                        pChip.bHit = true;\r
@@ -3332,11 +3193,11 @@ namespace DTXMania
 \r
                        // #34048 2014.7.16 yyagi\r
                        #region [ 読み込み画面に遷移する前に、設定変更した可能性があるパラメータをConfigIniクラスに書き戻す ]\r
-                       for (int i = 0; i < 3; i++)\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
                        {\r
-                               CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[i] = CDTXMania.Instance.ConfigIni.n譜面スクロール速度[i];\r
+                               CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[i] = CDTXMania.Instance.ConfigIni.nScrollSpeed[i];\r
                        }\r
-                       CDTXMania.Instance.ConfigIni.b演奏情報を表示する = CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus;\r
+                       CDTXMania.Instance.ConfigIni.bDebugInfo = CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus;\r
                        #endregion\r
                }\r
 \r
@@ -3345,10 +3206,10 @@ namespace DTXMania
                        CDTXMania.Instance.DTX.t全チップの再生停止とミキサーからの削除();\r
                        this.actAVI.Stop();\r
                        this.actBGA.Stop();\r
-                       this.actPanel.Stop();                           // PANEL表示停止\r
-                       CDTXMania.Instance.Timer.t一時停止();               // 再生時刻カウンタ停止\r
+                       this.actPanel.Stop();               // PANEL表示停止\r
+                       CDTXMania.Instance.Timer.t一時停止();       // 再生時刻カウンタ停止\r
 \r
-                       this.n現在のトップChip = CDTXMania.Instance.DTX.listChip.Count - 1;       // 終端にシーク\r
+                       this.n現在のトップChip = CDTXMania.Instance.DTX.listChip.Count - 1;   // 終端にシーク\r
 \r
                        // 自分自身のOn活性化()相当の処理もすべき。\r
                }\r
@@ -3366,7 +3227,8 @@ namespace DTXMania
                        this.actBGA.Stop();\r
 \r
                        #region [ 再生開始小節の変更 ]\r
-                       nStartBar++;                                                                    // +1が必要\r
+                       // +1が必要\r
+                       nStartBar++;\r
 \r
                        #region [ 演奏済みフラグのついたChipをリセットする ]\r
                        for (int i = 0; i < CDTXMania.Instance.DTX.listChip.Count; i++)\r
@@ -3401,16 +3263,16 @@ namespace DTXMania
                        if (!bSuccessSeek)\r
                        {\r
                                // this.n現在のトップChip = CDTXMania.Instance.DTX.listChip.Count - 1;\r
-                               this.n現在のトップChip = 0;               // 対象小節が存在しないなら、最初から再生\r
+                               this.n現在のトップChip = 0;       // 対象小節が存在しないなら、最初から再生\r
                        }\r
                        #endregion\r
 \r
                        #region [ 演奏開始の発声時刻msを取得し、タイマに設定 ]\r
                        int nStartTime = CDTXMania.Instance.DTX.listChip[this.n現在のトップChip].n発声時刻ms;\r
 \r
-                       CSound管理.rc演奏用タイマ.tリセット();      // これでPAUSE解除されるので、次のPAUSEチェックは不要\r
-                       //if ( !this.bPAUSE )\r
-                       //{\r
+                       CSound管理.rc演奏用タイマ.tリセット();  // これでPAUSE解除されるので、次のPAUSEチェックは不要\r
+                                                                                                                                       //if ( !this.bPAUSE )\r
+                                                                                                                                       //{\r
                        CSound管理.rc演奏用タイマ.t一時停止();\r
                        //}\r
                        CSound管理.rc演奏用タイマ.n現在時刻 = nStartTime;\r
@@ -3426,15 +3288,15 @@ namespace DTXMania
 \r
                                if ((pChip.n発声時刻ms + nDuration > 0) && (pChip.n発声時刻ms <= nStartTime) && (nStartTime <= pChip.n発声時刻ms + nDuration))\r
                                {\r
-                                       if (pChip.bWAVを使うチャンネルである && !pChip.b空打ちチップである) // wav系チャンネル、且つ、空打ちチップではない\r
+                                       if (pChip.bWAVを使うチャンネルである && !pChip.b空打ちチップである) // wav系チャンネル、且つ、空打ちチップではない\r
                                        {\r
                                                CDTX.CWAV wc;\r
                                                bool b = CDTXMania.Instance.DTX.listWAV.TryGetValue(pChip.n整数値_内部番号, out wc);\r
                                                if (!b) continue;\r
 \r
-                                               if ((wc.bIsBGMSound && CDTXMania.Instance.ConfigIni.bBGM音を発声する) || (!wc.bIsBGMSound))\r
+                                               if ((wc.bIsBGMSound && CDTXMania.Instance.ConfigIni.bBGMPlay) || (!wc.bIsBGMSound))\r
                                                {\r
-                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, (int)Eレーン.BGM, CDTXMania.Instance.DTX.nモニタを考慮した音量(E楽器パート.UNKNOWN));\r
+                                                       CDTXMania.Instance.DTX.tチップの再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
                                                        #region [ PAUSEする ]\r
                                                        int j = wc.n現在再生中のサウンド番号;\r
                                                        if (wc.rSound[j] != null)\r
@@ -3463,11 +3325,11 @@ namespace DTXMania
                        #endregion\r
                        #region [ タイマを再開して、PAUSEから復帰する ]\r
                        CSound管理.rc演奏用タイマ.n現在時刻 = nStartTime;\r
-                       CDTXMania.Instance.Timer.tリセット();                                               // これでPAUSE解除されるので、3行先の再開()は不要\r
-                       CDTXMania.Instance.Timer.n現在時刻 = nStartTime;                            // Debug表示のTime: 表記を正しくするために必要\r
+                       CDTXMania.Instance.Timer.tリセット();                       // これでPAUSE解除されるので、3行先の再開()は不要\r
+                       CDTXMania.Instance.Timer.n現在時刻 = nStartTime;                // Debug表示のTime: 表記を正しくするために必要\r
                        CSound管理.rc演奏用タイマ.t再開();\r
                        //CDTXMania.Instance.Timer.t再開();\r
-                       this.bPAUSE = false;                                                            // システムがPAUSE状態だったら、強制解除\r
+                       this.bPAUSE = false;                                // システムがPAUSE状態だったら、強制解除\r
                        this.actPanel.Start();\r
                        #endregion\r
                        #endregion\r
@@ -3480,377 +3342,76 @@ namespace DTXMania
                /// </summary>\r
                protected void tDTXV用の設定()\r
                {\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.HH = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.SD = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BD = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.HT = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.LT = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.CY = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.FT = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.RD = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.LC = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtR = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtG = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtB = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.GtW = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsR = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsG = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsB = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick = true;\r
-                       CDTXMania.Instance.ConfigIni.bAutoPlay.BsW = true;\r
-\r
-                       this.bIsAutoPlay = CDTXMania.Instance.ConfigIni.bAutoPlay;\r
-\r
-                       CDTXMania.Instance.ConfigIni.bAVI有効 = true;\r
-                       CDTXMania.Instance.ConfigIni.bBGA有効 = true;\r
-                       for (int i = 0; i < 3; i++)\r
+                       for (EPad i = EPad.Min; i < EPad.Max; ++i)\r
                        {\r
-                               CDTXMania.Instance.ConfigIni.bGraph[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.bHidden[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.bLeft[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.bLight[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.bReverse[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.bSudden[i] = false;\r
-                               CDTXMania.Instance.ConfigIni.eInvisible[i] = EInvisible.OFF;\r
-                               CDTXMania.Instance.ConfigIni.eRandom[i] = Eランダムモード.OFF;\r
-                               CDTXMania.Instance.ConfigIni.n表示可能な最小コンボ数[i] = 65535;\r
-                               CDTXMania.Instance.ConfigIni.判定文字表示位置[i] = E判定文字表示位置.表示OFF;\r
-                               // CDTXMania.Instance.ConfigIni.n譜面スクロール速度[ i ] = CDTXMania.Instance.ConfigIni.nViewerScrollSpeed[ i ];       // これだけはOn活性化()で行うこと。\r
-                               // そうしないと、演奏開始直後にスクロール速度が変化して見苦しい。\r
+                               CDTXMania.Instance.ConfigIni.bAutoPlay[i].Value = true;\r
                        }\r
-\r
-                       CDTXMania.Instance.ConfigIni.eDark = Eダークモード.OFF;\r
-\r
-                       CDTXMania.Instance.ConfigIni.b演奏情報を表示する = CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus;\r
-                       CDTXMania.Instance.ConfigIni.bフィルイン有効 = true;\r
-                       CDTXMania.Instance.ConfigIni.bScoreIniを出力する = false;\r
-                       CDTXMania.Instance.ConfigIni.bSTAGEFAILED有効 = false;\r
-                       CDTXMania.Instance.ConfigIni.bTight = false;\r
-                       CDTXMania.Instance.ConfigIni.bストイックモード = false;\r
-                       CDTXMania.Instance.ConfigIni.bドラム打音を発声する = true;\r
-                       CDTXMania.Instance.ConfigIni.bBGM音を発声する = true;\r
-\r
-                       CDTXMania.Instance.ConfigIni.nRisky = 0;\r
-                       CDTXMania.Instance.ConfigIni.nShowLagType = 0;\r
-                       CDTXMania.Instance.ConfigIni.ドラムコンボ文字の表示位置 = Eドラムコンボ文字の表示位置.OFF;\r
+                       CDTXMania.Instance.ConfigIni.bAVI.Value = true;\r
+                       CDTXMania.Instance.ConfigIni.bBGA.Value = true;\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)\r
+                       {\r
+                               CDTXMania.Instance.ConfigIni.bGraph[i].Value = false;\r
+                               CDTXMania.Instance.ConfigIni.eSudHidInv[i].Value = ESudHidInv.Off;\r
+                               CDTXMania.Instance.ConfigIni.bLight[i].Value = false;\r
+                               CDTXMania.Instance.ConfigIni.bReverse[i].Value = false;\r
+                               CDTXMania.Instance.ConfigIni.eRandom[i].Value = ERandom.Off;\r
+                               CDTXMania.Instance.ConfigIni.nMinComboDisp[i].Value = 65535;\r
+                               CDTXMania.Instance.ConfigIni.bDisplayJudge[i].Value = false;\r
+                               CDTXMania.Instance.ConfigIni.bDisplayCombo[i].Value = false;\r
+                       }\r
+                       CDTXMania.Instance.ConfigIni.eDark.Value = EDark.Off;\r
+                       CDTXMania.Instance.ConfigIni.bDebugInfo.Value = CDTXMania.Instance.ConfigIni.bViewerShowDebugStatus;\r
+                       CDTXMania.Instance.ConfigIni.bFillin.Value = true;\r
+                       CDTXMania.Instance.ConfigIni.bScoreIni.Value = false;\r
+                       CDTXMania.Instance.ConfigIni.bStageFailed.Value = false;\r
+                       CDTXMania.Instance.ConfigIni.bTight.Value = false;\r
+                       CDTXMania.Instance.ConfigIni.bStoicMode.Value = false;\r
+                       CDTXMania.Instance.ConfigIni.bDrumsHitSound.Value = true;\r
+                       CDTXMania.Instance.ConfigIni.bBGMPlay.Value = true;\r
+                       CDTXMania.Instance.ConfigIni.nRisky.Value = 0;\r
+                       CDTXMania.Instance.ConfigIni.nShowLagType.Value = EShowLagType.Off;\r
                }\r
 \r
-               protected abstract void t進行描画_チップ_ドラムス(ref CChip pChip);\r
-               protected abstract void t進行描画_チップ_ギターベース(ref CChip pChip, E楽器パート inst);\r
-               /// <summary>\r
-               /// ギター・ベースのチップ表示\r
-               /// </summary>\r
-               /// <param name="configIni"></param>\r
-               /// <param name="dTX"></param>\r
-               /// <param name="pChip">描画するチップ</param>\r
-               /// <param name="inst">楽器種別</param>\r
-               /// <param name="barYNormal">Normal時判定ライン表示Y座標</param>\r
-               /// <param name="barYReverse">Reverse時判定ライン表示Y座標</param>\r
-               /// <param name="showRangeY0">チップ表示Y座標範囲(最小値)</param>\r
-               /// <param name="showRangeY1">チップ表示Y座標範囲(最大値)</param>\r
-               /// <param name="openXg">オープンチップの表示X座標(ギター用)</param>\r
-               /// <param name="openXb">オープンチップの表示X座標(ベース用)</param>\r
-               /// <param name="rectOpenOffsetX">テクスチャ内のオープンチップregionのx座標</param>\r
-               /// <param name="rectOpenOffsetY">テクスチャ内のオープンチップregionのy座標</param>\r
-               /// <param name="openChipWidth">テクスチャ内のオープンチップregionのwidth</param>\r
-               /// <param name="chipHeight">テクスチャ内のチップのheight</param>\r
-               /// <param name="chipWidth">テクスチャ内のチップのwidth</param>\r
-               /// <param name="guitarNormalX">ギターチップ描画のx座標(Normal)</param>\r
-               /// <param name="guitarLeftyX">ギターチップ描画のx座標(Lefty)</param>\r
-               /// <param name="bassNormalX">ベースチップ描画のx座標(Normal)</param>\r
-               /// <param name="bassLeftyX">ベースチップ描画のx座標(Lefty)</param>\r
-               /// <param name="drawDeltaX">描画のX座標間隔(R,G,B...)</param>\r
-               /// <param name="chipTexDeltaX">テクスチャののX座標間隔(R,G,B...)</param>\r
-               protected void t進行描画_チップ_ギターベース(ref CChip pChip, E楽器パート inst,\r
-                       int barYNormal, int barYReverse,\r
-                       int showRangeY0, int showRangeY1, int openXg, int openXb,\r
-                       int rectOpenOffsetX, int rectOpenOffsetY, int openChipWidth, int chipHeight, int chipWidth,\r
-                       int guitarNormalX, int guitarLeftyX, int bassNormalX, int bassLeftyX, int drawDeltaX, int chipTexDeltaX)\r
+               private void t進行描画_チップ_ウェイリング(ref CChip pChip)\r
                {\r
-                       int instIndex = (int)inst;\r
                        if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
                        {\r
-                               #region [ Invisible処理 ]\r
-                               if (CDTXMania.Instance.ConfigIni.eInvisible[instIndex] != EInvisible.OFF)\r
+                               EPart indexInst = pChip.bGuitar可視チップ_Wailing含む ? EPart.Guitar : EPart.Bass;\r
+                               #region [ Sud Hid Inv 処理 ]\r
+                               if (\r
+                                       CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.FullInv ||\r
+                                       CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.SemiInv)\r
                                {\r
                                        cInvisibleChip.SetInvisibleStatus(ref pChip);\r
                                }\r
-                               #endregion\r
                                else\r
                                {\r
-                                       #region [ Hidden/Sudden処理 ]\r
-                                       if (CDTXMania.Instance.ConfigIni.bSudden[instIndex])\r
+                                       if (CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.Sudden ||\r
+                                               CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.SudHid)\r
                                        {\r
-                                               pChip.b可視 = (pChip.nバーからの距離dot[instIndex] < 200 * Scale.Y);\r
+                                               pChip.b可視 = (pChip.nバーからの距離dot[indexInst] < CDTXMania.Instance.ConfigIni.nSuddenFrom[indexInst]);\r
                                        }\r
-                                       if (CDTXMania.Instance.ConfigIni.bHidden[instIndex] && (pChip.nバーからの距離dot[instIndex] < 100 * Scale.Y))\r
+                                       if (CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.Hidden ||\r
+                                               CDTXMania.Instance.ConfigIni.eSudHidInv[indexInst] == ESudHidInv.SudHid)\r
                                        {\r
-                                               pChip.b可視 = false;\r
-                                       }\r
-                                       #endregion\r
-                               }\r
-\r
-                               bool bChipHasR = pChip.bGuitarBass_R;\r
-                               bool bChipHasG = pChip.bGuitarBass_G;\r
-                               bool bChipHasB = pChip.bGuitarBass_B;\r
-                               bool bChipHasW = pChip.bGuitarBass_Wailing;\r
-                               bool bChipIsO = pChip.bGuitarBass_Open;\r
-\r
-                               #region [ chip描画 ]\r
-                               Ech定義 OPEN = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_Open : Ech定義.Bass_Open;\r
-                               if (!pChip.bHit && pChip.b可視)\r
-                               {\r
-                                       if (this.txチップ != null)\r
-                                       {\r
-                                               this.txチップ.n透明度 = pChip.n透明度;\r
-                                       }\r
-                                       int y = CDTXMania.Instance.ConfigIni.bReverse[instIndex] ?\r
-                                               (int)(barYReverse - pChip.nバーからの距離dot[instIndex]) :\r
-                                               (int)(barYNormal + pChip.nバーからの距離dot[instIndex]);\r
-                                       int n小節線消失距離dot = CDTXMania.Instance.ConfigIni.bReverse[instIndex] ?\r
-                                               (int)(-100 * Scale.Y) :\r
-                                               (CDTXMania.Instance.ConfigIni.e判定位置[instIndex] == E判定位置.標準) ? (int)(-36 * Scale.Y) : (int)(-25 * Scale.Y);\r
-                                       if (CDTXMania.Instance.ConfigIni.bReverse[instIndex])\r
-                                       {\r
-                                               //showRangeY1 = barYReverse - n小節線消失距離dot;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               showRangeY0 = barYNormal + n小節線消失距離dot;\r
-                                       }\r
-                                       if ((showRangeY0 < y) && (y < showRangeY1))\r
-                                       {\r
-                                               if (this.txチップ != null)\r
-                                               {\r
-                                                       int nアニメカウンタ現在の値 = this.ctチップ模様アニメ[instIndex].n現在の値;\r
-                                                       #region [ OPENチップの描画 ]\r
-                                                       if (pChip.eチャンネル番号 == OPEN)\r
-                                                       {\r
-                                                               int xo = (inst == E楽器パート.GUITAR) ? openXg : openXb;\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
-                                                                       xo * Scale.X,\r
-                                                                       y - (2 * Scale.Y),\r
-                                                                       new Rectangle(\r
-                                                                               (int)(rectOpenOffsetX * Scale.X),\r
-                                                                               (int)(rectOpenOffsetY * Scale.Y) + (int)(((nアニメカウンタ現在の値 % 5) * chipHeight * Scale.Y)),\r
-                                                                               (int)(openChipWidth * Scale.X),\r
-                                                                               (int)(chipHeight * Scale.Y)\r
-                                                                       )\r
-                                                               );\r
-                                                       }\r
-                                                       #endregion\r
-                                                       Rectangle rc = new Rectangle(\r
-                                                               (int)(rectOpenOffsetX * Scale.X),\r
-                                                               (int)(nアニメカウンタ現在の値 * chipHeight * Scale.Y),\r
-                                                               (int)(chipWidth * Scale.X),\r
-                                                               (int)(chipHeight * Scale.Y)\r
-                                                       );\r
-                                                       #region [ RGBチップのX座標初期化 ]\r
-                                                       int x;\r
-                                                       if (inst == E楽器パート.GUITAR)\r
-                                                       {\r
-                                                               x = (CDTXMania.Instance.ConfigIni.bLeft.Guitar) ? guitarLeftyX : guitarNormalX;\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               x = (CDTXMania.Instance.ConfigIni.bLeft.Bass) ? bassLeftyX : bassNormalX;\r
-                                                       }\r
-                                                       int deltaX = (CDTXMania.Instance.ConfigIni.bLeft[instIndex]) ? -drawDeltaX : +drawDeltaX;\r
-                                                       #endregion\r
-                                                       //Trace.TraceInformation( "chip={0:x2}, E楽器パート={1}, x={2}", pChip.nチャンネル番号, inst, x );\r
-                                                       #region [ Rチップ描画 ]\r
-                                                       if (bChipHasR)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
-                                                                       x * Scale.X,\r
-                                                                       y - (chipHeight / 2) * Scale.Y,\r
-                                                                       rc\r
-                                                               );\r
-                                                       }\r
-                                                       #endregion\r
-                                                       #region [ Gチップ描画 ]\r
-                                                       rc.X += (int)(chipTexDeltaX * Scale.X);\r
-                                                       x += deltaX;\r
-                                                       if (bChipHasG)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
-                                                                       x * Scale.X,\r
-                                                                       y - (chipHeight / 2) * Scale.Y,\r
-                                                                       rc\r
-                                                               );\r
-                                                       }\r
-                                                       #endregion\r
-                                                       #region [ Bチップ描画 ]\r
-                                                       rc.X += (int)(chipTexDeltaX * Scale.X);\r
-                                                       x += deltaX;\r
-                                                       if (bChipHasB)\r
-                                                       {\r
-                                                               this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
-                                                                       x * Scale.X,\r
-                                                                       y - (chipHeight / 2) * Scale.Y,\r
-                                                                       rc\r
-                                                               );\r
-                                                       }\r
-                                                       #endregion\r
-                                               }\r
+                                               pChip.b可視 = pChip.nバーからの距離dot[indexInst] >= CDTXMania.Instance.ConfigIni.nHiddenFrom[indexInst];\r
                                        }\r
                                }\r
                                #endregion\r
-                               //if ( ( configIni.bAutoPlay.Guitar && !pChip.bHit ) && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
-\r
-\r
-                               // #35411 2015.08.20 chnmr0 modified\r
-                               // 従来のAUTO処理に加えてプレーヤーゴーストの再生機能を追加\r
-                               bool autoPlayCondition = (!pChip.bHit) && (pChip.nバーからの距離dot[instIndex] < 0);\r
-                               if (autoPlayCondition)\r
-                               {\r
-                                       cInvisibleChip.StartSemiInvisible(inst);\r
-                               }\r
-\r
-                               bool autoPick = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtPick : bIsAutoPlay.BsPick;\r
-                               autoPlayCondition = !pChip.bHit && autoPick;\r
-                               long ghostLag = 0;\r
-                               bool bUsePerfectGhost = true;\r
-\r
-                               if ((pChip.e楽器パート == E楽器パート.GUITAR || pChip.e楽器パート == E楽器パート.BASS) &&\r
-                                               CDTXMania.Instance.ConfigIni.eAutoGhost[(int)(pChip.e楽器パート)] != EAutoGhostData.PERFECT &&\r
-                                               CDTXMania.Instance.DTX.listAutoGhostLag[(int)pChip.e楽器パート] != null &&\r
-                                               0 <= pChip.n楽器パートでの出現順 &&\r
-                                               pChip.n楽器パートでの出現順 < CDTXMania.Instance.DTX.listAutoGhostLag[(int)pChip.e楽器パート].Count)\r
-                               {\r
-                                       // #35411 (mod) Ghost data が有効なので 従来のAUTOではなくゴーストのラグを利用\r
-                                       // 発生時刻と現在時刻からこのタイミングで演奏するかどうかを決定\r
-                                       ghostLag = CDTXMania.Instance.DTX.listAutoGhostLag[(int)pChip.e楽器パート][pChip.n楽器パートでの出現順];\r
-                                       bool resetCombo = ghostLag > 255;\r
-                                       ghostLag = (ghostLag & 255) - 128;\r
-                                       ghostLag -= (pChip.e楽器パート == E楽器パート.GUITAR ? nInputAdjustTimeMs.Guitar : nInputAdjustTimeMs.Bass);\r
-                                       autoPlayCondition &= (pChip.n発声時刻ms + ghostLag <= CSound管理.rc演奏用タイマ.n現在時刻ms);\r
-                                       if (resetCombo && autoPlayCondition)\r
-                                       {\r
-                                               this.actCombo.n現在のコンボ数[(int)pChip.e楽器パート] = 0;\r
-                                       }\r
-                                       bUsePerfectGhost = false;\r
-                               }\r
-\r
-                               if (bUsePerfectGhost)\r
-                               {\r
-                                       // 従来のAUTOを使用する場合\r
-                                       autoPlayCondition &= (pChip.nバーからの距離dot[instIndex] < 0);\r
-                               }\r
+                               cWailingChip[(int)indexInst].t進行描画_チップ_ウェイリング(ref pChip, ref txチップGB, ref ctWailingチップ模様アニメ);\r
 \r
-                               if (autoPlayCondition)\r
+                               if (!pChip.bHit && (pChip.nバーからの距離dot[indexInst] < 0))\r
                                {\r
-                                       int lo = (inst == E楽器パート.GUITAR) ? 0 : 3;     // lane offset\r
-                                       bool autoR = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtR : bIsAutoPlay.BsR;\r
-                                       bool autoG = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtG : bIsAutoPlay.BsG;\r
-                                       bool autoB = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtB : bIsAutoPlay.BsB;\r
-                                       bool pushingR = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.R);\r
-                                       bool pushingG = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.G);\r
-                                       bool pushingB = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.B);\r
-\r
-                                       #region [ Chip Fire effects (auto時用) ]\r
-                                       // autoPickでない時の処理は、 t入力処理・ギターベース(E楽器パート) で行う\r
-                                       bool bSuccessOPEN = bChipIsO && (autoR || !pushingR) && (autoG || !pushingG) && (autoB || !pushingB);\r
-                                       {\r
-                                               if ((bChipHasR && (autoR || pushingR)) || bSuccessOPEN)\r
-                                               {\r
-                                                       this.actChipFireGB.Start(0 + lo, 演奏判定ライン座標);\r
-                                               }\r
-                                               if ((bChipHasG && (autoG || pushingG)) || bSuccessOPEN)\r
-                                               {\r
-                                                       this.actChipFireGB.Start(1 + lo, 演奏判定ライン座標);\r
-                                               }\r
-                                               if ((bChipHasB && (autoB || pushingB)) || bSuccessOPEN)\r
-                                               {\r
-                                                       this.actChipFireGB.Start(2 + lo, 演奏判定ライン座標);\r
-                                               }\r
-                                       }\r
-                                       #endregion\r
-                                       #region [ autopick ]\r
-                                       {\r
-                                               bool bMiss = true;\r
-                                               if (bChipHasR == autoR && bChipHasG == autoG && bChipHasB == autoB)             // autoレーンとチップレーン一致時はOK\r
-                                               {                                                                                                                                                       // この条件を加えないと、同時に非autoレーンを押下している時にNGとなってしまう。\r
-                                                       bMiss = false;\r
-                                               }\r
-                                               else if ((autoR || (bChipHasR == pushingR)) && (autoG || (bChipHasG == pushingG)) && (autoB || (bChipHasB == pushingB)))\r
-                                               // ( bChipHasR == ( pushingR | autoR ) ) && ( bChipHasG == ( pushingG | autoG ) ) && ( bChipHasB == ( pushingB | autoB ) ) )\r
-                                               {\r
-                                                       bMiss = false;\r
-                                               }\r
-                                               else if (((bChipIsO == true) && (!pushingR | autoR) && (!pushingG | autoG) && (!pushingB | autoB)))     // OPEN時\r
-                                               {\r
-                                                       bMiss = false;\r
-                                               }\r
-                                               pChip.bHit = true;\r
-                                               this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms + ghostLag, inst, CDTXMania.Instance.DTX.nモニタを考慮した音量(inst), false, bMiss);\r
-                                               this.r次にくるギターChip = null;\r
-                                               if (!bMiss)\r
-                                               {\r
-                                                       this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip);\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       pChip.nLag = 0;         // tチップのヒット処理()の引数最後がfalseの時はpChip.nLagを計算しないため、ここでAutoPickかつMissのLag=0を代入\r
-                                                       this.tチップのヒット処理(pChip.n発声時刻ms + ghostLag, pChip, false);\r
-                                               }\r
-                                               Ech定義 chWailingChip = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_Wailing : Ech定義.Bass_Wailing;\r
-                                               CChip item = this.r指定時刻に一番近い未ヒットChip(pChip.n発声時刻ms + ghostLag, chWailingChip, this.nInputAdjustTimeMs[instIndex], 140);\r
-                                               if (item != null && !bMiss)\r
-                                               {\r
-                                                       this.queWailing[instIndex].Enqueue(item);\r
-                                               }\r
-                                       }\r
-                                       #endregion\r
-                                       // #35411 modify end\r
-                               }\r
-                               return;\r
-                       }       // end of "if configIni.bGuitar有効"\r
-                       if (!pChip.bHit && (pChip.nバーからの距離dot[instIndex] < 0))    // Guitar/Bass無効の場合は、自動演奏する\r
-                       {\r
-                               pChip.bHit = true;\r
-                               this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, inst, CDTXMania.Instance.DTX.nモニタを考慮した音量(inst));\r
-                       }\r
-               }\r
-\r
-\r
-               private void t進行描画_チップ_ウェイリング(ref CChip pChip)\r
-               {\r
-                       E楽器パート indexInst = pChip.bGuitar可視チップ_Wailing含む ? E楽器パート.GUITAR : E楽器パート.BASS;\r
-                       if (CDTXMania.Instance.ConfigIni.bGuitar有効)\r
-                       {\r
-                               #region [ Invisible処理 ]\r
-                               if (CDTXMania.Instance.ConfigIni.eInvisible[(int)indexInst] != EInvisible.OFF)\r
-                               {\r
-                                       cInvisibleChip.SetInvisibleStatus(ref pChip);\r
-                               }\r
-                               #endregion\r
-                               #region [ Sudden/Hidden処理 ]\r
-                               if (CDTXMania.Instance.ConfigIni.bSudden[(int)indexInst])\r
-                               {\r
-                                       pChip.b可視 = (pChip.nバーからの距離dot[(int)indexInst] < 200 * Scale.Y);\r
-                               }\r
-                               if (CDTXMania.Instance.ConfigIni.bHidden[(int)indexInst] && (pChip.nバーからの距離dot[(int)indexInst] < 100 * Scale.Y))\r
-                               {\r
-                                       pChip.b可視 = false;\r
-                               }\r
-                               #endregion\r
-\r
-                               cWailingChip[(int)indexInst].t進行描画_チップ_ウェイリング(ref pChip, ref txチップ, ref 演奏判定ライン座標, ref ctWailingチップ模様アニメ\r
-                               );\r
-\r
-                               if (!pChip.bHit && (pChip.nバーからの距離dot[(int)indexInst] < 0))\r
-                               {\r
-                                       if (pChip.nバーからの距離dot[(int)indexInst] < -234 * Scale.Y)   // #25253 2011.5.29 yyagi: Don't set pChip.bHit=true for wailing at once. It need to 1sec-delay (234pix per 1sec). \r
+                                       if (pChip.nバーからの距離dot[indexInst] < -234 * Scale.Y)  // #25253 2011.5.29 yyagi: Don't set pChip.bHit=true for wailing at once. It need to 1sec-delay (234pix per 1sec). \r
                                        {\r
                                                pChip.bHit = true;\r
                                        }\r
-                                       bool autoW = (indexInst == E楽器パート.GUITAR) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtW : CDTXMania.Instance.ConfigIni.bAutoPlay.BsW;\r
+                                       bool autoW = (indexInst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail : CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail;\r
                                        if (autoW)\r
                                        {\r
-                                               //    pChip.bHit = true;                                                                // #25253 2011.5.29 yyagi: Set pChip.bHit=true if autoplay.\r
-                                               //    this.actWailingBonus.Start( inst, this.r現在の歓声Chip[indexInst] );\r
+                                               // #25253 2011.5.29 yyagi: Set pChip.bHit=true if autoplay.\r
+                                               // pChip.bHit = true;\r
+                                               // this.actWailingBonus.Start( inst, this.r現在の歓声Chip[indexInst] );\r
                                                // #23886 2012.5.22 yyagi; To support auto Wailing; Don't do wailing for ALL wailing chips. Do wailing for queued wailing chip.\r
                                                // wailing chips are queued when 1) manually wailing and not missed at that time 2) AutoWailing=ON and not missed at that time\r
                                                long nTimeStamp_Wailed = pChip.n発声時刻ms + CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
@@ -3863,109 +3424,9 @@ namespace DTXMania
                        pChip.bHit = true;\r
                }\r
 \r
-               protected abstract void t進行描画_チップ_フィルイン(ref CChip pChip);\r
-               protected void t進行描画_チップ_小節線(ref CChip pChip)\r
-               {\r
-                       CConfigIni configIni = CDTXMania.Instance.ConfigIni;\r
-                       int n小節番号plus1 = pChip.n発声位置 / 384;\r
-                       if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
-                       {\r
-                               pChip.bHit = true;\r
-                               this.actPlayInfo.n小節番号 = n小節番号plus1 - 1;\r
-                               if (configIni.bWave再生位置自動調整機能有効 && (bIsDirectSound || bUseOSTimer))\r
-                               {\r
-                                       CDTXMania.Instance.DTX.tWave再生位置自動補正();\r
-                               }\r
-                               // dTX.tWaveBGM再生位置表示();            //デバッグ用\r
-                       }\r
-                       #region [ Drumsの小節線と、小節番号 ]\r
-                       if (configIni.bDrums有効)\r
-                       {\r
-                               if (configIni.b演奏情報を表示する && (configIni.eDark == Eダークモード.OFF))\r
-                               {\r
-                                       int n小節番号 = n小節番号plus1 - 1;\r
-                                       CDTXMania.Instance.act文字コンソール.tPrint(\r
-                                               configIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ?\r
-                                                       999 : 619 + 682,\r
-                                               configIni.bReverse.Drums ?\r
-                                                       126 + pChip.nバーからの距離dot.Drums :\r
-                                                       911 - pChip.nバーからの距離dot.Drums,\r
-                                               C文字コンソール.Eフォント種別.白,\r
-                                               n小節番号.ToString()\r
-                                       );\r
-                               }\r
-                               if (((configIni.eDark != Eダークモード.FULL) && pChip.b可視) && (this.txチップ != null))\r
-                               {\r
-                                       this.txチップ.n透明度 = 255;\r
-                                       this.txチップ.t2D描画(CDTXMania.Instance.Device,\r
-                                               //3, 2.25\r
-                                               configIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left ?\r
-                                                       105 : 619,\r
-                                               configIni.bReverse.Drums ?\r
-                                                       124 + pChip.nバーからの距離dot.Drums : 947 - pChip.nバーからの距離dot.Drums,\r
-                                               new Rectangle(\r
-                                                       0,\r
-                                                       999,\r
-                                                       (configIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 888 : 682,\r
-                                                       4\r
-                                               )\r
-                                       );\r
-                               }\r
-                       }\r
-                       #endregion\r
-                       if ((pChip.b可視 && configIni.bGuitar有効) && (configIni.eDark != Eダークモード.FULL) && (this.txチップ != null))\r
-                       {\r
-                               this.txチップ.n透明度 = 255;\r
-\r
-                               int[] barlineXGtBs = new int[3] { 0, 78, 480 * 3 }; // first element is padding \r
-                               int[,] barlineXDrCL = new int[3, 2] { { 0, 0 }, { 1521, 1450 }, { 1194, 200 } }; // first dimension is padding. [inst, left or center]\r
-\r
-\r
-                               for (E楽器パート gt = E楽器パート.GUITAR; gt <= E楽器パート.BASS; ++gt)\r
-                               {\r
-                                       int y = 演奏判定ライン座標.n判定ラインY座標(gt, CDTXMania.Instance.ConfigIni.bReverse[(int)gt]);\r
-                                       if (CDTXMania.Instance.ConfigIni.bReverse[(int)gt])\r
-                                       {\r
-                                               y = y - (int)(pChip.nバーからの距離dot[(int)gt]) - 1;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               y = y + (int)(pChip.nバーからの距離dot[(int)gt]) - 1;\r
-                                       }\r
-                                       // Reverse時の小節線消失位置を、RGBボタンの真ん中程度に。\r
-                                       // 非Reverse時の消失処理は、従来通りt進行描画・チップ()にお任せ。\r
-                                       int n小節線消失距離dot = configIni.bReverse[(int)gt] ?\r
-                                               (int)(-100 * Scale.Y) :\r
-                                               (configIni.e判定位置[(int)gt] == E判定位置.標準) ?\r
-                                               (int)(CDTXMania.Instance.ConfigIni.bギタレボモード ? -36 : -50 * Scale.Y) : (int)(-25 * Scale.Y);\r
-\r
-                                       if ((CDTXMania.Instance.DTX.bチップがある[(int)gt]) &&\r
-                                               ((CDTXMania.Instance.ConfigIni.bギタレボモード ? 0 : 0x39) * Scale.Y < y) &&\r
-                                               ((y < (CDTXMania.Instance.ConfigIni.bギタレボモード ? 0x199 : 0x19c) * Scale.Y)) &&\r
-                                               (pChip.nバーからの距離dot.Guitar >= n小節線消失距離dot)\r
-                                               )\r
-                                       {\r
-                                               this.txチップ.t2D描画(\r
-                                                       CDTXMania.Instance.Device,\r
-                                                       CDTXMania.Instance.ConfigIni.bギタレボモード ? barlineXGtBs[(int)gt] :\r
-                                                       ((CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? barlineXDrCL[(int)gt, 0] : barlineXDrCL[(int)gt, 1]),\r
-                                                       y,\r
-                                                       new Rectangle(\r
-                                                               0,\r
-                                                               (int)((CDTXMania.Instance.ConfigIni.bギタレボモード ? 0xeb : 450) * Scale.Y),\r
-                                                               (int)((CDTXMania.Instance.ConfigIni.bギタレボモード ? 0x68 : 0x4e) * Scale.X),\r
-                                                               (int)(1 * Scale.Y)\r
-                                                       )\r
-                                               );\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-\r
-               protected abstract void t進行描画_チップ_空打ち音設定_ドラム(ref CChip pChip);\r
                protected void t進行描画_チップアニメ()\r
                {\r
-                       for (int i = 0; i < 3; i++)                     // 0=drums, 1=guitar, 2=bass\r
+                       for (EPart i = EPart.Drums; i <= EPart.Bass; i++)            // 0=drums, 1=guitar, 2=bass\r
                        {\r
                                if (this.ctチップ模様アニメ[i] != null)\r
                                {\r
@@ -4007,291 +3468,55 @@ namespace DTXMania
                        }\r
                        return false;\r
                }\r
-               protected void t進行描画_レーンフラッシュD()\r
-               {\r
-                       if ((CDTXMania.Instance.ConfigIni.eDark == Eダークモード.OFF) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED) && (base.eフェーズID != CStage.Eフェーズ.演奏_STAGE_FAILED_フェードアウト))\r
-                       {\r
-                               this.actLaneFlushD.On進行描画();\r
-                       }\r
-               }\r
-               protected void t進行描画_レーンフラッシュGB()\r
-               {\r
-                       if ((CDTXMania.Instance.ConfigIni.eDark == Eダークモード.OFF) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
-                       {\r
-                               this.actLaneFlushGB.On進行描画();\r
-                       }\r
-               }\r
-               protected void t進行描画_演奏情報()\r
-               {\r
-                       if (!CDTXMania.Instance.ConfigIni.b演奏情報を表示しない)\r
-                       {\r
-                               int x, y;\r
-                               if (CDTXMania.Instance.ConfigIni.bギタレボモード)\r
-                               {\r
-                                       x = 0xb5;\r
-                                       y = 50;\r
-                               }\r
-                               else\r
-                               {\r
-                                       y = 57;\r
-                                       if (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left)\r
-                                       {\r
-                                               x = 338;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               x = 450;\r
-                                       }\r
-                               }\r
-                               this.actPlayInfo.t進行描画(x, y);\r
-                       }\r
-               }\r
-               protected void t進行描画_背景()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark == Eダークモード.OFF)\r
-                       {\r
-                               if (this.tx背景 != null)\r
-                               {\r
-                                       this.tx背景.t2D描画(CDTXMania.Instance.Device, 0, 0);\r
-                               }\r
-                       }\r
-               }\r
-\r
-               protected void t進行描画_判定ライン()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)\r
-                       {\r
-                               int y = this.演奏判定ライン座標.n判定ラインY座標(E楽器パート.DRUMS, bReverse[(int)E楽器パート.DRUMS], false, true);   // -(int) ( 3 * Scale.Y );\r
-                               // #31602 2016.2.11 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
-                               // #31602 2013.6.23 yyagi 描画遅延対策として、判定ラインの表示位置をオフセット調整できるようにする\r
-                               if (this.txヒットバー != null)\r
-                               {\r
-                                       int xStart = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 32 * 3 : 619;\r
-                                       int xEnd = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 335 * 3 : 619 + 682;\r
-                                       for (int x = xStart; x < xEnd; x += 24)\r
-                                       {\r
-                                               this.txヒットバー.t2D描画(CDTXMania.Instance.Device,\r
-                                                       x,\r
-                                                       y,\r
-                                                       new Rectangle(\r
-                                                               0,\r
-                                                               0,\r
-                                                               ((x + 24) >= xEnd) ? (int)((23 - ((x + 24) - xEnd))) : 24,\r
-                                                               18\r
-                                                       )\r
-                                               );\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               protected void t進行描画_判定文字列()\r
-               {\r
-                       this.actJudgeString.t進行描画(演奏判定ライン座標);\r
-               }\r
-               protected void t進行描画_判定文字列1_通常位置指定の場合()\r
-               {\r
-                       if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums) != E判定文字表示位置.コンボ下) // 判定ライン上または横\r
-                       {\r
-                               this.actJudgeString.t進行描画(演奏判定ライン座標);\r
-                       }\r
-               }\r
-               protected void t進行描画_判定文字列2_判定ライン上指定の場合()\r
-               {\r
-                       if (((E判定文字表示位置)CDTXMania.Instance.ConfigIni.判定文字表示位置.Drums) == E判定文字表示位置.コンボ下) // 判定ライン上または横\r
-                       {\r
-                               this.actJudgeString.t進行描画(演奏判定ライン座標);\r
-                       }\r
-               }\r
 \r
-               protected void t進行描画_譜面スクロール速度()\r
+               protected virtual void t入力処理_ギターベース(EPart inst)\r
                {\r
-                       this.act譜面スクロール速度.On進行描画();\r
-               }\r
-\r
-               protected abstract void t背景テクスチャの生成();\r
-               protected void t背景テクスチャの生成(string DefaultBgFilename, string DefaultLaneFilename, Rectangle bgrect, string bgfilename)\r
-               {\r
-                       // Default...: レーン等があるレイヤー                bgfilename: DTXファイルで指定する背景\r
-                       Bitmap image = null;\r
-                       bool bSuccessLoadDTXbgfile = false;\r
-\r
-                       int[] offsetX = new int[2] { 96, 506 };\r
-                       int nLanePosition = (int)CDTXMania.Instance.ConfigIni.eドラムレーン表示位置;\r
-                       //int nLanePosition = (int) Eドラムレーン表示位置.Left;\r
-\r
-                       if (bgfilename != null && File.Exists(bgfilename) && !CDTXMania.Instance.DTX.bチップがある.Movie)\r
-                       {\r
-                               try\r
-                               {\r
-                                       #region [ DTXデータで指定されている背景画像を読み込む ]\r
-                                       Bitmap bitmap1 = null;\r
-                                       bitmap1 = new Bitmap(bgfilename);\r
-                                       if ((bitmap1.Size.Width == 0) && (bitmap1.Size.Height == 0))\r
-                                       {\r
-                                               this.tx背景 = null;\r
-                                               return;\r
-                                       }\r
-                                       #endregion\r
-\r
-                                       int newWidth = (int)(bitmap1.Width * Scale.X);\r
-                                       int newHeight = (int)(bitmap1.Height * Scale.Y);\r
-                                       Bitmap bitmap2;\r
-\r
-                                       #region [ 背景画像がVGAサイズ以下なら、FullHDサイズに拡大する ]\r
-                                       if (bitmap1.Width <= 640 && bitmap1.Height <= 480)\r
-                                       {\r
-                                               bitmap2 = new Bitmap(newWidth, newHeight);\r
-                                               Graphics graphic2 = Graphics.FromImage(bitmap2);\r
-                                               graphic2.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;\r
-                                               graphic2.DrawImage(bitmap1, 0, 0, newWidth, newHeight);\r
-                                               graphic2.Dispose();\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               bitmap2 = (Bitmap)bitmap1.Clone();\r
-                                       }\r
-                                       bitmap1.Dispose();\r
-                                       #endregion\r
-\r
-                                       #region [ 実背景に格子状に配置するよう、コピーしていく ]\r
-                                       Bitmap bitmap3 = new Bitmap(SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height);\r
-                                       Graphics graphics3 = Graphics.FromImage(bitmap3);\r
-                                       for (int i = 0; i < SampleFramework.GameWindowSize.Height; i += bitmap2.Size.Height)\r
-                                       {\r
-                                               for (int j = 0; j < SampleFramework.GameWindowSize.Width; j += bitmap2.Size.Width)\r
-                                               {\r
-                                                       graphics3.DrawImage(bitmap2, j, i, bitmap2.Width, bitmap2.Height);\r
-                                               }\r
-                                       }\r
-                                       graphics3.Dispose();\r
-                                       bitmap2.Dispose();\r
-                                       #endregion\r
-\r
-                                       #region [ レーン外・レーンそのもののフレームを合成 ]\r
-                                       image = new Bitmap(CSkin.Path(DefaultBgFilename));      // レーン外のフレーム\r
-                                       graphics3 = Graphics.FromImage(image);\r
-\r
-                                       ColorMatrix matrix2 = new ColorMatrix();\r
-                                       matrix2.Matrix00 = 1f;\r
-                                       matrix2.Matrix11 = 1f;\r
-                                       matrix2.Matrix22 = 1f;\r
-                                       matrix2.Matrix33 = ((float)CDTXMania.Instance.ConfigIni.n背景の透過度) / 255f;\r
-                                       matrix2.Matrix44 = 1f;\r
-                                       ColorMatrix newColorMatrix = matrix2;\r
-                                       ImageAttributes imageAttr = new ImageAttributes();\r
-                                       imageAttr.SetColorMatrix(newColorMatrix);\r
-                                       graphics3.DrawImage(bitmap3, new Rectangle(0, 0, SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height), 0, 0, SampleFramework.GameWindowSize.Width, SampleFramework.GameWindowSize.Height, GraphicsUnit.Pixel, imageAttr);\r
-                                       //      graphics3.DrawImage( bitmap3, bgrect, bgrect.X, bgrect.Y, bgrect.Width, bgrect.Height, GraphicsUnit.Pixel );\r
-                                       bitmap3.Dispose();\r
-                                       #endregion\r
-\r
-                                       imageAttr.Dispose();\r
-                                       graphics3.Dispose();\r
-                                       bSuccessLoadDTXbgfile = true;\r
-                               }\r
-                               catch\r
-                               {\r
-                                       Trace.TraceError("背景画像とレーン画像の合成に失敗しました。({0})", bgfilename);\r
-                               }\r
-                       }\r
-                       #region [ DTXデータで指定する背景画像を合成しない場合は、レーン画像単体を背景画像とする ]\r
-                       if (!bSuccessLoadDTXbgfile)\r
+                       #region [ スクロール速度変更 ]\r
+                       int scrollSpeed = CDTXMania.Instance.ConfigIni.nScrollSpeed[inst];\r
+                       bool scrollSpeedChanged = false;\r
+                       float f = (float)CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[inst] / (scrollSpeed + 1);\r
+                       if (\r
+                               CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtDecide : EPad.BsDecide) &&\r
+                               CDTXMania.Instance.Pad.b押された(inst == EPart.Guitar ? EPad.GtB : EPad.BsB)\r
+                               )\r
                        {\r
-                               bgfilename = CSkin.Path(DefaultBgFilename);\r
-                               try\r
-                               {\r
-                                       image = new Bitmap(bgfilename);\r
-\r
-                                       if (DefaultLaneFilename != "")\r
-                                       {\r
-                                               Bitmap bmLane = new Bitmap(CSkin.Path(DefaultLaneFilename));\r
-                                               Graphics g = Graphics.FromImage(image);\r
-                                               g.DrawImage(bmLane, offsetX[nLanePosition], 0);\r
-                                               g.Dispose();\r
-                                               bmLane.Dispose();\r
-                                       }\r
-                               }\r
-                               catch\r
+                               CDTXMania.Instance.ConfigIni.nScrollSpeed[inst].Value = scrollSpeed + 1;\r
+                               if (scrollSpeed < CDTXMania.Instance.ConfigIni.nScrollSpeed[inst])\r
                                {\r
-                                       Trace.TraceError("レーン画像の読み込みに失敗しました。({0})", bgfilename);\r
-                                       this.tx背景 = null;\r
-                                       return;\r
+                                       scrollSpeedChanged = true;\r
                                }\r
                        }\r
-                       #endregion\r
-                       #region [ BGA画像を表示する予定がある場合は、背景画像からあらかじめその領域を黒抜きにしておく ]\r
-                       if ((CDTXMania.Instance.DTX.listBMP.Count > 0) || (CDTXMania.Instance.DTX.listBMPTEX.Count > 0) || CDTXMania.Instance.DTX.listAVI.Count > 0)\r
-                       {\r
-                               Graphics graphics2 = Graphics.FromImage(image);\r
-                               graphics2.FillRectangle(Brushes.Black, bgrect.X, bgrect.Y, bgrect.Width, bgrect.Height);\r
-                               graphics2.Dispose();\r
-                       }\r
-                       #endregion\r
-                       #region [ 背景画像をテクスチャにする。背景動画の表示予定がある場合は、更に透明度を付与する。 ]\r
-                       try\r
+                       if (\r
+                               CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtDecide : EPad.BsDecide) &&\r
+                               CDTXMania.Instance.Pad.b押された(inst == EPart.Guitar ? EPad.GtR : EPad.BsR)\r
+                               )\r
                        {\r
-                               this.tx背景 = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
-                               if (CDTXMania.Instance.DTX.bMovieをFullscreen再生する)                                             // Fullscreen動画再生が発生する場合は、動画レイヤーに対してレーン+背景レイヤーに透明度を設定する\r
+                               CDTXMania.Instance.ConfigIni.nScrollSpeed[inst].Value = scrollSpeed - 1;\r
+                               if (scrollSpeed > CDTXMania.Instance.ConfigIni.nScrollSpeed[inst])\r
                                {\r
-                                       this.tx背景.n透明度 = 255 - CDTXMania.Instance.ConfigIni.n背景の透過度;      // 背景動画用\r
+                                       scrollSpeedChanged = true;\r
                                }\r
                        }\r
-                       catch (CTextureCreateFailedException)\r
+                       if (scrollSpeedChanged)\r
                        {\r
-                               Trace.TraceError("背景テクスチャの生成に失敗しました。");\r
-                               this.tx背景 = null;\r
+                               // 判定ラインも付随\r
+                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[inst].Value = (int)(f * CDTXMania.Instance.ConfigIni.nScrollSpeed[inst] + 0.5);\r
                        }\r
                        #endregion\r
-                       image.Dispose();\r
-               }\r
 \r
-               protected virtual void t入力処理_ギター()\r
-               {\r
-                       t入力処理_ギターベース(E楽器パート.GUITAR);\r
-               }\r
-               protected virtual void t入力処理_ベース()\r
-               {\r
-                       t入力処理_ギターベース(E楽器パート.BASS);\r
-               }\r
-\r
-\r
-               protected virtual void t入力処理_ギターベース(E楽器パート inst)\r
-               {\r
-                       int indexInst = (int)inst;\r
-                       #region [ スクロール速度変更 ]\r
-                       if (CDTXMania.Instance.Pad.b押されている(inst, Eパッド.Decide) && CDTXMania.Instance.Pad.b押された(inst, Eパッド.B))\r
-                       {\r
-                               float f = (float)this.演奏判定ライン座標.nJudgeLinePosY_delta[indexInst] / (CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst] + 1);\r
-                               CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst] = Math.Min(CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst] + 1, 1999);\r
-                               f *= CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst];\r
-                               this.演奏判定ライン座標.nJudgeLinePosY_delta[indexInst] = (int)(f + 0.5);\r
-                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[indexInst] = (int)(f + 0.5);\r
-                       }\r
-                       if (CDTXMania.Instance.Pad.b押されている(inst, Eパッド.Decide) && CDTXMania.Instance.Pad.b押された(inst, Eパッド.R))\r
-                       {\r
-                               CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst] = Math.Max(CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst] - 1, 0);\r
-\r
-                               float f = (float)this.演奏判定ライン座標.nJudgeLinePosY_delta[indexInst] / (CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst] + 1);\r
-                               CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst] = Math.Max(CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst] - 1, 0);\r
-                               f *= CDTXMania.Instance.ConfigIni.n譜面スクロール速度[indexInst];\r
-                               this.演奏判定ライン座標.nJudgeLinePosY_delta[indexInst] = (int)(f + 0.5);\r
-                               CDTXMania.Instance.ConfigIni.nJudgeLinePosOffset[indexInst] = (int)(f + 0.5);\r
-                       }\r
-                       #endregion\r
-\r
-                       if (!CDTXMania.Instance.ConfigIni.bGuitar有効 || !CDTXMania.Instance.DTX.bチップがある[indexInst])\r
+                       if (!CDTXMania.Instance.ConfigIni.bGuitar有効 || !CDTXMania.Instance.DTX.bチップがある[inst])\r
                        {\r
                                return;\r
                        }\r
 \r
-                       int R = (inst == E楽器パート.GUITAR) ? 0 : 3;\r
+                       int R = (inst == EPart.Guitar) ? 0 : 3;\r
                        int G = R + 1;\r
                        int B = R + 2;\r
-                       bool autoW = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtW : bIsAutoPlay.BsW;\r
-                       bool autoR = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtR : bIsAutoPlay.BsR;\r
-                       bool autoG = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtG : bIsAutoPlay.BsG;\r
-                       bool autoB = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtB : bIsAutoPlay.BsB;\r
-                       bool autoPick = (inst == E楽器パート.GUITAR) ? bIsAutoPlay.GtPick : bIsAutoPlay.BsPick;\r
+                       bool autoW = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail : CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail;\r
+                       bool autoR = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtR : CDTXMania.Instance.ConfigIni.bAutoPlay.BsR;\r
+                       bool autoG = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtG : CDTXMania.Instance.ConfigIni.bAutoPlay.BsG;\r
+                       bool autoB = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtB : CDTXMania.Instance.ConfigIni.bAutoPlay.BsB;\r
+                       bool autoPick = (inst == EPart.Guitar) ? CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick : CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick;\r
                        int nAutoW = (autoW) ? 8 : 0;\r
                        int nAutoR = (autoR) ? 4 : 0;\r
                        int nAutoG = (autoG) ? 2 : 0;\r
@@ -4317,193 +3542,133 @@ namespace DTXMania
                                        this.actRGB.Push(B);\r
                                }\r
                        }\r
+\r
+                       int pressingR = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtR : EPad.BsR) ? 4 : 0;\r
+                       this.t入力メソッド記憶(inst);\r
+                       int pressingG = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtG : EPad.BsG) ? 2 : 0;\r
+                       this.t入力メソッド記憶(inst);\r
+                       int pressingB = CDTXMania.Instance.Pad.b押されている(inst == EPart.Guitar ? EPad.GtB : EPad.BsB) ? 1 : 0;\r
+                       this.t入力メソッド記憶(inst);\r
+                       int pressingRGB = pressingR | pressingG | pressingB;\r
+                       if (pressingR != 0)\r
                        {\r
-                               int pressingR = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.R) ? 4 : 0;\r
-                               this.t入力メソッド記憶(inst);\r
-                               int pressingG = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.G) ? 2 : 0;\r
-                               this.t入力メソッド記憶(inst);\r
-                               int pressingB = CDTXMania.Instance.Pad.b押されている(inst, Eパッド.B) ? 1 : 0;\r
-                               this.t入力メソッド記憶(inst);\r
-                               int pressingRGB = pressingR | pressingG | pressingB;\r
-                               if (pressingR != 0)\r
-                               {\r
-                                       this.actLaneFlushGB.Start(R);\r
-                                       this.actRGB.Push(R);\r
-                               }\r
-                               if (pressingG != 0)\r
-                               {\r
-                                       this.actLaneFlushGB.Start(G);\r
-                                       this.actRGB.Push(G);\r
-                               }\r
-                               if (pressingB != 0)\r
-                               {\r
-                                       this.actLaneFlushGB.Start(B);\r
-                                       this.actRGB.Push(B);\r
-                               }\r
-                               // auto pickだとここから先に行かないので注意\r
-                               List<STInputEvent> events = CDTXMania.Instance.Pad.GetEvents(inst, Eパッド.Pick);\r
-                               if ((events != null) && (events.Count > 0))\r
+                               this.actLaneFlushGB.Start(R);\r
+                               this.actRGB.Push(R);\r
+                       }\r
+                       if (pressingG != 0)\r
+                       {\r
+                               this.actLaneFlushGB.Start(G);\r
+                               this.actRGB.Push(G);\r
+                       }\r
+                       if (pressingB != 0)\r
+                       {\r
+                               this.actLaneFlushGB.Start(B);\r
+                               this.actRGB.Push(B);\r
+                       }\r
+                       // auto pickだとここから先に行かないので注意\r
+                       List<STInputEvent> events = CDTXMania.Instance.Pad.GetEvents(inst == EPart.Guitar ? EPad.GtPick : EPad.BsPick);\r
+                       if ((events != null) && (events.Count > 0))\r
+                       {\r
+                               foreach (STInputEvent eventPick in events)\r
                                {\r
-                                       foreach (STInputEvent eventPick in events)\r
+                                       if (!eventPick.b押された)\r
                                        {\r
-                                               if (!eventPick.b押された)\r
-                                               {\r
-                                                       continue;\r
-                                               }\r
-                                               this.t入力メソッド記憶(inst);\r
-                                               long nTime = eventPick.nTimeStamp - CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
-                                               Ech定義 chWailingSound = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_WailingSound : Ech定義.Bass_WailingSound;\r
-                                               CChip pChip = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingSound, this.nInputAdjustTimeMs[indexInst], CDTXMania.Instance.nPoor範囲ms + 1);       // E楽器パート.GUITARなチップ全てにヒットする\r
-                                               E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip, this.nInputAdjustTimeMs[indexInst]);\r
-                                               //Trace.TraceInformation("ch={0:x2}, mask1={1:x1}, mask2={2:x2}", pChip.nチャンネル番号,  ( pChip.nチャンネル番号 & ~nAutoMask ) & 0x0F, ( flagRGB & ~nAutoMask) & 0x0F );\r
-                                               if (\r
+                                               continue;\r
+                                       }\r
+                                       this.t入力メソッド記憶(inst);\r
+                                       long nTime = eventPick.nTimeStamp - CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
+                                       EChannel chWailingSound = (inst == EPart.Guitar) ? EChannel.Guitar_WailingSound : EChannel.Bass_WailingSound;\r
+\r
+                                       // WailingSound チャンネルでE楽器パート.GUITARなチップ全てにヒットする\r
+                                       CChip pChip = this.r指定時刻に一番近い未ヒットChip(\r
+                                                       nTime, chWailingSound,\r
+                                                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst],\r
+                                                       CDTXMania.Instance.nPoor範囲ms + 1);\r
+\r
+                                       EJudge e判定 = this.e指定時刻からChipのJUDGEを返す(nTime, pChip,\r
+                                                       CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst]);\r
+                                       //Trace.TraceInformation("ch={0:x2}, mask1={1:x1}, mask2={2:x2}", pChip.nチャンネル番号,  ( pChip.nチャンネル番号 & ~nAutoMask ) & 0x0F, ( flagRGB & ~nAutoMask) & 0x0F );\r
+                                       if (\r
                                                        (pChip != null) &&\r
                                                        ((((int)pChip.eチャンネル番号 & ~nAutoMask) & 0x0F) == ((pressingRGB & ~nAutoMask) & 0x0F)) &&\r
-                                                       (e判定 != E判定.Miss))\r
+                                                       (e判定 != EJudge.Miss))\r
+                                       {\r
+                                               bool bChipHasR = pChip.bGuitarBass_R;\r
+                                               bool bChipHasG = pChip.bGuitarBass_G;\r
+                                               bool bChipHasB = pChip.bGuitarBass_B;\r
+                                               bool bChipHasW = pChip.bGuitarBass_Wailing;\r
+                                               bool bChipIsO = pChip.bGuitarBass_Open;\r
+                                               bool bSuccessOPEN = bChipIsO && (autoR || pressingR == 0) && (autoG || pressingG == 0) && (autoB || pressingB == 0);\r
+                                               if ((bChipHasR && (autoR || pressingR != 0)) || bSuccessOPEN)\r
                                                {\r
-                                                       bool bChipHasR = pChip.bGuitarBass_R;\r
-                                                       bool bChipHasG = pChip.bGuitarBass_G;\r
-                                                       bool bChipHasB = pChip.bGuitarBass_B;\r
-                                                       bool bChipHasW = pChip.bGuitarBass_Wailing;\r
-                                                       bool bChipIsO = pChip.bGuitarBass_Open;\r
-                                                       bool bSuccessOPEN = bChipIsO && (autoR || pressingR == 0) && (autoG || pressingG == 0) && (autoB || pressingB == 0);\r
-                                                       if ((bChipHasR && (autoR || pressingR != 0)) || bSuccessOPEN)\r
-                                                       {\r
-                                                               this.actChipFireGB.Start(R, 演奏判定ライン座標);\r
-                                                       }\r
-                                                       if ((bChipHasG && (autoG || pressingG != 0)) || bSuccessOPEN)\r
-                                                       {\r
-                                                               this.actChipFireGB.Start(G, 演奏判定ライン座標);\r
-                                                       }\r
-                                                       if ((bChipHasB && (autoB || pressingB != 0)) || bSuccessOPEN)\r
-                                                       {\r
-                                                               this.actChipFireGB.Start(B, 演奏判定ライン座標);\r
-                                                       }\r
-                                                       this.tチップのヒット処理(nTime, pChip);\r
-                                                       this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する[indexInst], e判定 == E判定.Poor);\r
-                                                       Ech定義 chWailingChip = (inst == E楽器パート.GUITAR) ? Ech定義.Guitar_Wailing : Ech定義.Bass_Wailing;\r
-                                                       CChip item = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingChip, this.nInputAdjustTimeMs[indexInst], 140);\r
-                                                       if (item != null)\r
-                                                       {\r
-                                                               this.queWailing[indexInst].Enqueue(item);\r
-                                                       }\r
-                                                       continue;\r
+                                                       this.actChipFireGB.Start(R);\r
                                                }\r
-\r
-                                               // 以下、間違いレーンでのピック時\r
-                                               CChip NoChipPicked = (inst == E楽器パート.GUITAR) ? this.r現在の空うちギターChip : this.r現在の空うちベースChip;\r
-                                               if ((NoChipPicked != null) || ((NoChipPicked = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, chWailingSound, this.nInputAdjustTimeMs[indexInst])) != null))\r
+                                               if ((bChipHasG && (autoG || pressingG != 0)) || bSuccessOPEN)\r
                                                {\r
-                                                       this.tサウンド再生(NoChipPicked, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する[indexInst], true);\r
+                                                       this.actChipFireGB.Start(G);\r
                                                }\r
-                                               if (!CDTXMania.Instance.ConfigIni.bLight[indexInst])\r
+                                               if ((bChipHasB && (autoB || pressingB != 0)) || bSuccessOPEN)\r
                                                {\r
-                                                       this.tチップのヒット処理_BadならびにTight時のMiss(inst);\r
+                                                       this.actChipFireGB.Start(B);\r
                                                }\r
+                                               this.tチップのヒット処理(nTime, pChip);\r
+                                               this.tサウンド再生(pChip, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound[inst], e判定 == EJudge.Poor);\r
+                                               EChannel chWailingChip = (inst == EPart.Guitar) ? EChannel.Guitar_Wailing : EChannel.Bass_Wailing;\r
+                                               CChip item = this.r指定時刻に一番近い未ヒットChip(nTime, chWailingChip, CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst], 140);\r
+                                               if (item != null)\r
+                                               {\r
+                                                       this.queWailing[inst].Enqueue(item);\r
+                                               }\r
+                                               continue;\r
+                                       }\r
+\r
+                                       // 以下、間違いレーンでのピック時\r
+                                       CChip NoChipPicked = (inst == EPart.Guitar) ? this.r現在の空うちギターChip : this.r現在の空うちベースChip;\r
+                                       if ((NoChipPicked != null) || ((NoChipPicked = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nTime, chWailingSound, CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs[inst])) != null))\r
+                                       {\r
+                                               this.tサウンド再生(NoChipPicked, CSound管理.rc演奏用タイマ.nシステム時刻, inst, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound[inst], true);\r
+                                       }\r
+                                       if (!CDTXMania.Instance.ConfigIni.bLight[inst])\r
+                                       {\r
+                                               this.tチップのヒット処理_BadならびにTight時のMiss(inst);\r
                                        }\r
                                }\r
-                               List<STInputEvent> list = CDTXMania.Instance.Pad.GetEvents(inst, Eパッド.Wail);\r
-                               if ((list != null) && (list.Count > 0))\r
+                       }\r
+                       List<STInputEvent> list = CDTXMania.Instance.Pad.GetEvents(inst == EPart.Guitar ? EPad.GtWail : EPad.BsWail);\r
+                       if ((list != null) && (list.Count > 0))\r
+                       {\r
+                               foreach (STInputEvent eventWailed in list)\r
                                {\r
-                                       foreach (STInputEvent eventWailed in list)\r
+                                       if (!eventWailed.b押された)\r
                                        {\r
-                                               if (!eventWailed.b押された)\r
-                                               {\r
-                                                       continue;\r
-                                               }\r
-                                               DoWailingFromQueue(inst, eventWailed.nTimeStamp, autoW);\r
+                                               continue;\r
                                        }\r
+                                       DoWailingFromQueue(inst, eventWailed.nTimeStamp, autoW);\r
                                }\r
                        }\r
                }\r
 \r
-               private void DoWailingFromQueue(E楽器パート inst, long nTimeStamp_Wailed, bool autoW)\r
+               private void DoWailingFromQueue(EPart inst, long nTimeStamp_Wailed, bool autoW)\r
                {\r
-                       int indexInst = (int)inst;\r
                        long nTimeWailed = nTimeStamp_Wailed - CSound管理.rc演奏用タイマ.n前回リセットした時のシステム時刻;\r
                        CChip chipWailing;\r
-                       while ((this.queWailing[indexInst].Count > 0) && ((chipWailing = this.queWailing[indexInst].Dequeue()) != null))\r
+                       while ((this.queWailing[inst].Count > 0) && ((chipWailing = this.queWailing[inst].Dequeue()) != null))\r
                        {\r
-                               if ((nTimeWailed - chipWailing.n発声時刻ms) <= 1000)                // #24245 2011.1.26 yyagi: 800 -> 1000\r
+                               if ((nTimeWailed - chipWailing.n発声時刻ms) <= 1000)        // #24245 2011.1.26 yyagi: 800 -> 1000\r
                                {\r
                                        chipWailing.bHit = true;\r
-                                       this.actWailingBonus.Start(inst, this.r現在の歓声Chip[indexInst]);\r
+                                       this.actWailingBonus.Start(inst, this.r現在の歓声Chip[inst]);\r
                                        if (!autoW)\r
                                        {\r
-                                               int nCombo = (this.actCombo.n現在のコンボ数[indexInst] < 500) ? this.actCombo.n現在のコンボ数[indexInst] : 500;\r
-                                               this.actScore.Add(inst, bIsAutoPlay, nCombo * 3000L);           // #24245 2011.1.26 yyagi changed DRUMS->BASS, add nCombo conditions\r
+                                               int nCombo = (this.actCombo.dgbコンボ数[inst].n現在値 < 500) ? this.actCombo.dgbコンボ数[inst].n現在値 : 500;\r
+                                               // #24245 2011.1.26 yyagi changed DRUMS->BASS, add nCombo conditions\r
+                                               this.actScore.Add(inst, nCombo * 3000L);\r
                                        }\r
                                }\r
                        }\r
                }\r
-               protected abstract void t進行描画_ギターベース判定ライン();\r
-               private void t進行描画_ギターベースフレーム()\r
-               {\r
-                       if (((CDTXMania.Instance.ConfigIni.eDark != Eダークモード.HALF) && (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)) && CDTXMania.Instance.ConfigIni.bGuitar有効)\r
-                       {\r
-                               if (CDTXMania.Instance.DTX.bチップがある.Guitar)\r
-                               {\r
-                                       int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1521 : 1450;\r
-                                       for (int i = 0; i < 355; i += 0x80)\r
-                                       {\r
-                                               Rectangle rc = new Rectangle(0, 0, 327, 288);\r
-                                               if ((i + 0x80) > 355)\r
-                                               {\r
-                                                       rc.Height -= (int)((i + 0x80 - 355) * Scale.Y);\r
-                                               }\r
-                                               if (this.txレーンフレームGB != null)\r
-                                               {\r
-                                                       this.txレーンフレームGB.t2D描画(\r
-                                                               CDTXMania.Instance.Device,\r
-                                                               x,\r
-                                                               (57 + i) * Scale.Y,\r
-                                                               rc\r
-                                                       );\r
-                                               }\r
-                                       }\r
-                               }\r
-                               if (CDTXMania.Instance.DTX.bチップがある.Bass)\r
-                               {\r
-                                       int x = (CDTXMania.Instance.ConfigIni.eドラムレーン表示位置 == Eドラムレーン表示位置.Left) ? 1194 : 200;\r
-                                       for (int i = 0; i < 355; i += 0x80)\r
-                                       {\r
-                                               Rectangle rc = new Rectangle(0, 0, 327, 288);\r
-                                               if ((i + 0x80) > 355)\r
-                                               {\r
-                                                       rc.Height -= (int)((i + 0x80 - 355) * Scale.Y);\r
-                                               }\r
-                                               if (this.txレーンフレームGB != null)\r
-                                               {\r
-                                                       this.txレーンフレームGB.t2D描画(CDTXMania.Instance.Device,\r
-                                                               x,\r
-                                                               (57 + i) * Scale.Y,\r
-                                                               rc\r
-                                                       );\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               private void t進行描画_グラフ()\r
-               {\r
-                       if (!CDTXMania.Instance.ConfigIni.bストイックモード && !CDTXMania.Instance.ConfigIni.bドラムが全部オートプレイである && CDTXMania.Instance.ConfigIni.bGraph.Drums)\r
-                       {\r
-                               this.actGraph.On進行描画();\r
-                       }\r
-               }\r
 \r
-               private void t進行描画_チップファイアD()\r
-               {\r
-                       this.actChipFireD.On進行描画();\r
-               }\r
 \r
-               private void t進行描画_ドラムパッド()\r
-               {\r
-                       if (CDTXMania.Instance.ConfigIni.eDark != Eダークモード.FULL)\r
-                       {\r
-                               this.actPad.On進行描画();\r
-                       }\r
-               }\r
 \r
                // t入力処理・ドラム()からメソッドを抽出したもの。\r
                /// <summary>\r
@@ -4512,7 +3677,7 @@ namespace DTXMania
                /// <param name="chipArray">ソート対象chip群</param>\r
                /// <param name="e判定Array">ソート対象e判定群</param>\r
                /// <param name="NumOfChips">チップ数</param>\r
-               private static void SortChipsByNTime(CChip[] chipArray, E判定[] e判定Array, int NumOfChips)\r
+               private static void SortChipsByNTime(CChip[] chipArray, EJudge[] e判定Array, int NumOfChips)\r
                {\r
                        for (int i = 0; i < NumOfChips - 1; i++)\r
                        {\r
@@ -4524,14 +3689,14 @@ namespace DTXMania
                                                CChip chipTemp = chipArray[j - 1];\r
                                                chipArray[j - 1] = chipArray[j];\r
                                                chipArray[j] = chipTemp;\r
-                                               E判定 e判定Temp = e判定Array[j - 1];\r
+                                               EJudge e判定Temp = e判定Array[j - 1];\r
                                                e判定Array[j - 1] = e判定Array[j];\r
                                                e判定Array[j] = e判定Temp;\r
                                        }\r
                                }\r
                        }\r
                }\r
-               private bool tドラムヒット処理(long nHitTime, Eパッド type, CChip pChip, int n強弱度合い0to127)\r
+               private bool tドラムヒット処理(long nHitTime, EPad type, CChip pChip, int n強弱度合い0to127)\r
                {\r
                        if (pChip == null)\r
                        {\r
@@ -4547,41 +3712,41 @@ namespace DTXMania
                        {\r
                                index = pChip.nDrumsIndexHidden;\r
                        }\r
-                       int nLane = CStage演奏画面共通.nチャンネル0Atoレーン07[index];\r
-                       int nPad = this.nチャンネル0Atoパッド08[index];\r
-                       bool bPChipIsAutoPlay = bIsAutoPlay[nLane];\r
-                       int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Drums;\r
-                       E判定 e判定 = this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nInputAdjustTime);\r
-                       if (e判定 == E判定.Miss)\r
+                       ELane eLane = EnumConverter.LaneFromChannel(index + EChannel.HiHatClose);// nチャンネル0Atoレーン07[index];\r
+                       EPad ePad = EnumConverter.PadFromChannel(index + EChannel.HiHatClose); //nチャンネル0Atoパッド08[index];\r
+                       bool bPChipIsAutoPlay = CDTXMania.Instance.ConfigIni.bAutoPlay[ePad];\r
+                       int nInputAdjustTime = bPChipIsAutoPlay ? 0 : CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums;\r
+                       EJudge e判定 = this.e指定時刻からChipのJUDGEを返す(nHitTime, pChip, nInputAdjustTime);\r
+                       if (e判定 == EJudge.Miss)\r
                        {\r
                                return false;\r
                        }\r
                        this.tチップのヒット処理(nHitTime, pChip);\r
-                       this.actLaneFlushD.Start((Eレーン)nLane, ((float)n強弱度合い0to127) / 127f);\r
-                       this.actPad.Hit(nPad);\r
-                       if ((e判定 != E判定.Poor) && (e判定 != E判定.Miss))\r
+                       this.actLaneFlushD.Start(eLane, ((float)n強弱度合い0to127) / 127f);\r
+                       this.actPad.Hit(ePad);\r
+                       if ((e判定 != EJudge.Poor) && (e判定 != EJudge.Miss))\r
                        {\r
                                bool flag = this.bフィルイン中;\r
                                bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである(pChip);\r
                                // bool flag3 = flag2;\r
                                // #31602 2013.6.24 yyagi 判定ラインの表示位置をずらしたら、チップのヒットエフェクトの表示もずらすために、nJudgeLine..を追加\r
-                               this.actChipFireD.Start((Eレーン)nLane, flag, flag2, flag2, 演奏判定ライン座標.nJudgeLinePosY_delta.Drums);\r
+                               this.actChipFireD.Start(eLane, flag, flag2, flag2);\r
                        }\r
-                       if (CDTXMania.Instance.ConfigIni.bドラム打音を発声する)\r
+                       if (CDTXMania.Instance.ConfigIni.bDrumsHitSound)\r
                        {\r
                                CChip rChip = null;\r
                                bool bIsChipsoundPriorToPad = true;\r
-                               if (((type == Eパッド.HH) || (type == Eパッド.HHO)) || (type == Eパッド.LC))\r
+                               if (((type == EPad.HH) || (type == EPad.HHO)) || (type == EPad.LC))\r
                                {\r
-                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH == EHitSoundPriority.Chip;\r
                                }\r
-                               else if ((type == Eパッド.LT) || (type == Eパッド.FT))\r
+                               else if ((type == EPad.LT) || (type == EPad.FT))\r
                                {\r
-                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT == EHitSoundPriority.Chip;\r
                                }\r
-                               else if ((type == Eパッド.CY) || (type == Eパッド.RD))\r
+                               else if ((type == EPad.CY) || (type == EPad.RD))\r
                                {\r
-                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       bIsChipsoundPriorToPad = CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY == EHitSoundPriority.Chip;\r
                                }\r
                                if (bIsChipsoundPriorToPad)\r
                                {\r
@@ -4589,29 +3754,30 @@ namespace DTXMania
                                }\r
                                else\r
                                {\r
-                                       Eパッド hH = type;\r
-                                       if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (type == Eパッド.HHO))\r
+                                       EPad hH = type;\r
+                                       if (!CDTXMania.Instance.DTX.bチップがある.HHOpen && (type == EPad.HHO))\r
                                        {\r
-                                               hH = Eパッド.HH;\r
+                                               hH = EPad.HH;\r
                                        }\r
-                                       if (!CDTXMania.Instance.DTX.bチップがある.Ride && (type == Eパッド.RD))\r
+                                       if (!CDTXMania.Instance.DTX.bチップがある.Ride && (type == EPad.RD))\r
                                        {\r
-                                               hH = Eパッド.CY;\r
+                                               hH = EPad.CY;\r
                                        }\r
-                                       if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (type == Eパッド.LC))\r
+                                       if (!CDTXMania.Instance.DTX.bチップがある.LeftCymbal && (type == EPad.LC))\r
                                        {\r
-                                               hH = Eパッド.HH;\r
+                                               hH = EPad.HH;\r
                                        }\r
-                                       rChip = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nHitTime, this.nパッド0Atoチャンネル0A[(int)hH], nInputAdjustTime);\r
+                                       rChip = this.r指定時刻に一番近いChip_ヒット未済問わず不可視考慮(nHitTime, EnumConverter.ChannelFromPad(hH), nInputAdjustTime);\r
                                        if (rChip == null)\r
                                        {\r
                                                rChip = pChip;\r
                                        }\r
                                }\r
-                               this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, E楽器パート.DRUMS, CDTXMania.Instance.ConfigIni.n手動再生音量, CDTXMania.Instance.ConfigIni.b演奏音を強調する.Drums);\r
+                               this.tサウンド再生(rChip, CSound管理.rc演奏用タイマ.nシステム時刻, EPart.Drums, CDTXMania.Instance.ConfigIni.nChipVolume, CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
                        }\r
                        return true;\r
                }\r
+\r
                protected bool bフィルイン区間の最後のChipである(CChip pChip)\r
                {\r
                        if (pChip == null)\r
@@ -4622,7 +3788,7 @@ namespace DTXMania
                        for (int i = CDTXMania.Instance.DTX.listChip.IndexOf(pChip) + 1; i < CDTXMania.Instance.DTX.listChip.Count; i++)\r
                        {\r
                                pChip = CDTXMania.Instance.DTX.listChip[i];\r
-                               if ((pChip[Ech定義.FillIn]) && (pChip.n整数値 == 2))\r
+                               if ((pChip[EChannel.FillIn]) && (pChip.n整数値 == 2))\r
                                {\r
                                        return true;\r
                                }\r
@@ -4633,5 +3799,65 @@ namespace DTXMania
                        }\r
                        return true;\r
                }\r
+\r
+               private void t進行描画_チップ_フィルイン(ref CChip pChip)\r
+               {\r
+                       if (!pChip.bHit && (pChip.nバーからの距離dot.Drums < 0))\r
+                       {\r
+                               pChip.bHit = true;\r
+\r
+                               if (CDTXMania.Instance.ConfigIni.bDrums有効)\r
+                               {\r
+                                       switch (pChip.n整数値)\r
+                                       {\r
+                                               case 0x01:  // フィルイン開始\r
+                                                       if (CDTXMania.Instance.ConfigIni.bFillin)\r
+                                                       {\r
+                                                               this.bフィルイン中 = true;\r
+                                                       }\r
+                                                       break;\r
+\r
+                                               case 0x02:  // フィルイン終了\r
+                                                       if (CDTXMania.Instance.ConfigIni.bFillin)\r
+                                                       {\r
+                                                               this.bフィルイン中 = false;\r
+                                                       }\r
+                                                       if (((this.actCombo.dgbコンボ数.Drums.n現在値 > 0) || CDTXMania.Instance.ConfigIni.bIsAutoPlay(EPart.Drums)) && CDTXMania.Instance.ConfigIni.bAudience)\r
+                                                       {\r
+                                                               if (this.r現在の歓声Chip.Drums != null)\r
+                                                               {\r
+                                                                       CDTXMania.Instance.DTX.tチップの再生(this.r現在の歓声Chip.Drums, CSound管理.rc演奏用タイマ.nシステム時刻, CDTXMania.Instance.DTX.nモニタを考慮した音量(EPart.Unknown));\r
+                                                               }\r
+                                                               else\r
+                                                               {\r
+                                                                       CDTXMania.Instance.Skin.sound歓声音.n位置_次に鳴るサウンド = 0;\r
+                                                                       CDTXMania.Instance.Skin.sound歓声音.t再生する();\r
+                                                               }\r
+                                                       }\r
+                                                       break;\r
+#if TEST_NOTEOFFMODE  // 2011.1.1 yyagi TEST\r
+                                                               case 0x04:      // HH消音あり(従来同等)\r
+                                                                       CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH = true;\r
+                                                                       break;\r
+                                                               case 0x05:      // HH消音無し\r
+                                                                       CDTXMania.Instance.DTX.b演奏で直前の音を消音する.HH = false;\r
+                                                                       break;\r
+                                                               case 0x06:      // ギター消音あり(従来同等)\r
+                                                                       CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Gutiar = true;\r
+                                                                       break;\r
+                                                               case 0x07:      // ギター消音無し\r
+                                                                       CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Gutiar = false;\r
+                                                                       break;\r
+                                                               case 0x08:      // ベース消音あり(従来同等)\r
+                                                                       CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass = true;\r
+                                                                       break;\r
+                                                               case 0x09:      // ベース消音無し\r
+                                                                       CDTXMania.Instance.DTX.b演奏で直前の音を消音する.Bass = false;\r
+                                                                       break;\r
+#endif\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
        }\r
 }\r