OSDN Git Service

#32661 Beat Detection機能と、それに付随するBPM自動設定機能を追加。使い方はチケット参照のこと。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Mon, 13 Jan 2014 15:07:42 +0000 (15:07 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Mon, 13 Jan 2014 15:07:42 +0000 (15:07 +0000)
なお、現時点で分かっている問題課題は、以下の通り。
・小節長変更時に正しく動作しない(つまり変拍子でうまくいかない)
・BEATレーンで、チップの上で右クリックメニューを実行すると、そのチップが反転してしまう
・BEATチップの時間軸の順番を変えることができてしまう(変えるとうまく動作しない)

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@664 16f42ceb-6dc6-49c8-ba94-f2d53467949d

20 files changed:
DTXCreatorプロジェクト/コード/00.全体/Cバージョン情報.Designer.cs
DTXCreatorプロジェクト/コード/00.全体/Cメインフォーム.Designer.cs
DTXCreatorプロジェクト/コード/00.全体/Cメインフォーム.cs
DTXCreatorプロジェクト/コード/00.全体/Cメインフォーム.ja-JP.resx
DTXCreatorプロジェクト/コード/00.全体/Cメインフォーム.resx
DTXCreatorプロジェクト/コード/01.UndoRedo/CUndoRedoセル仮想.cs
DTXCreatorプロジェクト/コード/02.WAV_BMP_AVI/CWAVリスト管理.cs
DTXCreatorプロジェクト/コード/05.譜面/Cクリップセル.cs
DTXCreatorプロジェクト/コード/05.譜面/Cチップ.cs
DTXCreatorプロジェクト/コード/05.譜面/Cレーン.cs
DTXCreatorプロジェクト/コード/05.譜面/C編集モード管理.cs
DTXCreatorプロジェクト/コード/05.譜面/C譜面管理.cs
DTXCreatorプロジェクト/コード/05.譜面/C選択モード管理.cs
DTXCreatorプロジェクト/作成資料/DTXCreator設計書.ppt
FDK17プロジェクト/FDK19.csproj
FDK17プロジェクト/コード/06.Tempo/CBeatDetect.cs [new file with mode: 0644]
実行時フォルダ(DTXCreator)/DTXCreator.exe
実行時フォルダ(DTXCreator)/dll/FDK.dll
実行時フォルダ(DTXCreator)/ja-JP/DTXCreator.resources.dll
実行時フォルダ/dll/FDK.dll

index 6aa41ad..e28dfdf 100644 (file)
@@ -6,7 +6,7 @@ namespace DTXCreator
                /// <summary>\r
                /// 必要なデザイナ変数です。\r
                /// </summary>\r
-               private System.ComponentModel.IContainer components;\r
+               private System.ComponentModel.IContainer components = null;\r
 \r
                /// <summary>\r
                /// 使用中のリソースをすべてクリーンアップします。\r
index 3186085..a47e235 100644 (file)
                        this.toolStripMenuItem選択チップの削除 = new System.Windows.Forms.ToolStripMenuItem();\r
                        this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator();\r
                        this.toolStripMenuItemすべてのチップの選択 = new System.Windows.Forms.ToolStripMenuItem();\r
-                       this.toolStripMenuItemレーン内のすべてのチップの選択 = new System.Windows.Forms.ToolStripMenuItem();\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択1 = new System.Windows.Forms.ToolStripMenuItem();\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2 = new System.Windows.Forms.ToolStripMenuItem();\r
                        this.toolStripMenuItem小節内のすべてのチップの選択 = new System.Windows.Forms.ToolStripMenuItem();\r
                        this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator();\r
                        this.toolStripMenuItem小節長変更 = new System.Windows.Forms.ToolStripMenuItem();\r
                        this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator();\r
                        this.toolStripMenuItem小節の挿入 = new System.Windows.Forms.ToolStripMenuItem();\r
                        this.toolStripMenuItem小節の削除 = new System.Windows.Forms.ToolStripMenuItem();\r
+                       this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator();\r
+                       this.ToolStripMenuItemBPMDetections = new System.Windows.Forms.ToolStripMenuItem();\r
+                       this.generateBPMFromBeatTipsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();\r
                        this.splitContainerタブと譜面を分割.Panel1.SuspendLayout();\r
                        this.splitContainerタブと譜面を分割.Panel2.SuspendLayout();\r
                        this.splitContainerタブと譜面を分割.SuspendLayout();\r
             this.toolStripMenuItem選択チップの削除,\r
             this.toolStripSeparator15,\r
             this.toolStripMenuItemすべてのチップの選択,\r
-            this.toolStripMenuItemレーン内のすべてのチップの選択,\r
+            this.toolStripMenuItemレーン内のすべてのチップの選択1,\r
+            this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2,\r
             this.toolStripMenuItem小節内のすべてのチップの選択,\r
             this.toolStripSeparator16,\r
             this.toolStripMenuItem小節長変更,\r
             this.toolStripSeparator17,\r
             this.toolStripMenuItem小節の挿入,\r
-            this.toolStripMenuItem小節の削除} );\r
+            this.toolStripMenuItem小節の削除,\r
+            this.toolStripSeparator18,\r
+            this.ToolStripMenuItemBPMDetections,\r
+            this.generateBPMFromBeatTipsToolStripMenuItem} );\r
                        this.contextMenuStrip譜面右メニュー.Name = "contextMenuStrip譜面右メニュー";\r
                        this.toolTipツールチップ.SetToolTip( this.contextMenuStrip譜面右メニュー, resources.GetString( "contextMenuStrip譜面右メニュー.ToolTip" ) );\r
                        // \r
                        this.toolStripMenuItemすべてのチップの選択.ShortcutKeyDisplayString = null;\r
                        this.toolStripMenuItemすべてのチップの選択.Click += new System.EventHandler( this.toolStripMenuItemすべてのチップの選択_Click );\r
                        // \r
-                       // toolStripMenuItemレーン内のすべてのチップの選択\r
+                       // toolStripMenuItemレーン内のすべてのチップの選択1\r
                        // \r
-                       this.toolStripMenuItemレーン内のすべてのチップの選択.AccessibleDescription = null;\r
-                       this.toolStripMenuItemレーン内のすべてのチップの選択.AccessibleName = null;\r
-                       resources.ApplyResources( this.toolStripMenuItemレーン内のすべてのチップの選択, "toolStripMenuItemレーン内のすべてのチップの選択" );\r
-                       this.toolStripMenuItemレーン内のすべてのチップの選択.BackgroundImage = null;\r
-                       this.toolStripMenuItemレーン内のすべてのチップの選択.Name = "toolStripMenuItemレーン内のすべてのチップの選択";\r
-                       this.toolStripMenuItemレーン内のすべてのチップの選択.ShortcutKeyDisplayString = null;\r
-                       this.toolStripMenuItemレーン内のすべてのチップの選択.Click += new System.EventHandler( this.toolStripMenuItemレーン内のすべてのチップの選択_Click );\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択1.AccessibleDescription = null;\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択1.AccessibleName = null;\r
+                       resources.ApplyResources( this.toolStripMenuItemレーン内のすべてのチップの選択1, "toolStripMenuItemレーン内のすべてのチップの選択1" );\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択1.BackgroundImage = null;\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択1.Name = "toolStripMenuItemレーン内のすべてのチップの選択1";\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択1.ShortcutKeyDisplayString = null;\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択1.Click += new System.EventHandler( this.toolStripMenuItemレーン内のすべてのチップの選択_Click );\r
+                       // \r
+                       // toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2\r
+                       // \r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.AccessibleDescription = null;\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.AccessibleName = null;\r
+                       resources.ApplyResources( this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2, "toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2" );\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.BackgroundImage = null;\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.Name = "toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2";\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.ShortcutKeyDisplayString = null;\r
+                       this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.Click += new System.EventHandler( this.toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降_Click );\r
                        // \r
                        // toolStripMenuItem小節内のすべてのチップの選択\r
                        // \r
                        this.toolStripMenuItem小節の削除.ShortcutKeyDisplayString = null;\r
                        this.toolStripMenuItem小節の削除.Click += new System.EventHandler( this.toolStripMenuItem小節の削除_Click );\r
                        // \r
+                       // toolStripSeparator18\r
+                       // \r
+                       this.toolStripSeparator18.AccessibleDescription = null;\r
+                       this.toolStripSeparator18.AccessibleName = null;\r
+                       resources.ApplyResources( this.toolStripSeparator18, "toolStripSeparator18" );\r
+                       this.toolStripSeparator18.Name = "toolStripSeparator18";\r
+                       // \r
+                       // ToolStripMenuItemBPMDetections\r
+                       // \r
+                       this.ToolStripMenuItemBPMDetections.AccessibleDescription = null;\r
+                       this.ToolStripMenuItemBPMDetections.AccessibleName = null;\r
+                       resources.ApplyResources( this.ToolStripMenuItemBPMDetections, "ToolStripMenuItemBPMDetections" );\r
+                       this.ToolStripMenuItemBPMDetections.BackgroundImage = null;\r
+                       this.ToolStripMenuItemBPMDetections.Name = "ToolStripMenuItemBPMDetections";\r
+                       this.ToolStripMenuItemBPMDetections.ShortcutKeyDisplayString = null;\r
+                       this.ToolStripMenuItemBPMDetections.Click += new System.EventHandler( this.ToolStripMenuItemBeatChipsGeneration_Click );\r
+                       // \r
+                       // generateBPMFromBeatTipsToolStripMenuItem\r
+                       // \r
+                       this.generateBPMFromBeatTipsToolStripMenuItem.AccessibleDescription = null;\r
+                       this.generateBPMFromBeatTipsToolStripMenuItem.AccessibleName = null;\r
+                       resources.ApplyResources( this.generateBPMFromBeatTipsToolStripMenuItem, "generateBPMFromBeatTipsToolStripMenuItem" );\r
+                       this.generateBPMFromBeatTipsToolStripMenuItem.BackgroundImage = null;\r
+                       this.generateBPMFromBeatTipsToolStripMenuItem.Name = "generateBPMFromBeatTipsToolStripMenuItem";\r
+                       this.generateBPMFromBeatTipsToolStripMenuItem.ShortcutKeyDisplayString = null;\r
+                       this.generateBPMFromBeatTipsToolStripMenuItem.Click += new System.EventHandler( this.ToolStripMenuItemBPMChipsGeneration_Click );\r
+                       // \r
                        // Cメインフォーム\r
                        // \r
                        this.AccessibleDescription = null;\r
                private System.Windows.Forms.ToolStripSeparator toolStripSeparator17;\r
                private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem小節の挿入;\r
                private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem小節の削除;\r
-               private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemレーン内のすべてのチップの選択;\r
+               private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemレーン内のすべてのチップの選択1;\r
                private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem小節内のすべてのチップの選択;\r
                private System.Windows.Forms.Label labelGenre;\r
                internal System.Windows.Forms.TextBox textBoxGenre;\r
+               private System.Windows.Forms.ToolStripSeparator toolStripSeparator18;\r
+               private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItemBPMDetections;\r
+               private System.Windows.Forms.ToolStripMenuItem generateBPMFromBeatTipsToolStripMenuItem;\r
+               private System.Windows.Forms.ToolStripMenuItem toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2;\r
        }\r
 }
\ No newline at end of file
index 6cf2f51..7319147 100644 (file)
@@ -1443,6 +1443,8 @@ namespace DTXCreator
 \r
                                bool b削除されたチップがある = false;\r
                                bool b削除完了 = false;\r
+                               int laneBEAT  = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BEAT" );\r
+                               List<int> list削除処理済BEAT_index = new List<int>();\r
 \r
                                while( !b削除完了 )\r
                                {\r
@@ -1472,21 +1474,40 @@ namespace DTXCreator
                                                        #endregion\r
 \r
 \r
-                                                       // チップオブジェクトを削除する。\r
-\r
-                                                       c小節.listチップ.Remove( cチップ );\r
-                                                       \r
-                                                       \r
-                                                       // フラグを設定してループする。\r
-\r
-                                                       b削除完了 = false;          // まだ終わらんよ\r
-                                                       b削除されたチップがある = true;\r
-                                                       break;\r
+                                                       #region [ チップオブジェクトを削除する。ただしBEATオブジェクトは削除禁止。表裏を反転するだけ。]\r
+                                                       if ( cチップ.nレーン番号0to != laneBEAT )\r
+                                                       {\r
+                                                               c小節.listチップ.Remove( cチップ );\r
+\r
+                                                               // フラグを設定してループする。(foreachのlistを更新しているため)\r
+                                                               b削除完了 = false;          // まだ終わらんよ\r
+                                                               b削除されたチップがある = true;\r
+                                                               break;\r
+                                                       }\r
+                                                       else\r
+                                                       {\r
+                                                               int p = c小節.listチップ.IndexOf( cチップ );\r
+                                                               if ( !list削除処理済BEAT_index.Contains( p ) )     // まだ裏表反転したことがないチップならば\r
+                                                               {\r
+                                                                       cチップ.nチャンネル番号00toFF = ( cチップ.b裏 ) ? 0xF3 : 0xF8;            // 表裏反転\r
+                                                                       cチップ.b裏 = !cチップ.b裏;\r
+                                                                       c小節.listチップ[ p ] = cチップ;\r
+                                                                       list削除処理済BEAT_index.Add( p );\r
+\r
+                                                                       // フラグを設定してループする。(foreachのlistを更新しているため)\r
+                                                                       b削除完了 = false;          // まだ終わらんよ\r
+                                                                       b削除されたチップがある = true;\r
+                                                                       break;\r
+                                                               }\r
+                                                       }\r
+                                                       #endregion\r
                                                }\r
                                        }\r
                                        //-----------------\r
                                        #endregion\r
                                }\r
+                               list削除処理済BEAT_index.Clear();\r
+                               list削除処理済BEAT_index = null;\r
 \r
                                #region [ 1つでもチップを削除したなら、未保存フラグを立てる。 ]\r
                                //-----------------\r
@@ -1844,13 +1865,19 @@ namespace DTXCreator
                        #endregion\r
 \r
                        #region [ コンテクストメニューの[選択]項目に、レーン名と小節番号の情報をを付与する。 ]\r
-                       int indexMenuLaneSelect = this.contextMenuStrip譜面右メニュー.Items.IndexOfKey( "toolStripMenuItemレーン内のすべてのチップの選択" );\r
+                       int indexMenuLaneSelect1 = this.contextMenuStrip譜面右メニュー.Items.IndexOfKey( "toolStripMenuItemレーン内のすべてのチップの選択1" );\r
+                       int indexMenuLaneSelect2 = this.contextMenuStrip譜面右メニュー.Items.IndexOfKey( "toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2" );\r
                        int indexMenuPartSelect = this.contextMenuStrip譜面右メニュー.Items.IndexOfKey( "toolStripMenuItem小節内のすべてのチップの選択" );\r
 \r
-                       string strItemMenuLaneSelect = this.contextMenuStrip譜面右メニュー.Items[ indexMenuLaneSelect ].Text;\r
+                       string strItemMenuLaneSelect = this.contextMenuStrip譜面右メニュー.Items[ indexMenuLaneSelect1 ].Text;\r
                        strItemMenuLaneSelect = System.Text.RegularExpressions.Regex.Replace(\r
                                strItemMenuLaneSelect , @"\[(.*)\]", "[" + strLane + "]" );\r
-                       this.contextMenuStrip譜面右メニュー.Items[ indexMenuLaneSelect ].Text = strItemMenuLaneSelect;\r
+                       this.contextMenuStrip譜面右メニュー.Items[ indexMenuLaneSelect1 ].Text = strItemMenuLaneSelect;\r
+\r
+                       strItemMenuLaneSelect = this.contextMenuStrip譜面右メニュー.Items[ indexMenuLaneSelect2 ].Text;\r
+                       strItemMenuLaneSelect = System.Text.RegularExpressions.Regex.Replace(\r
+                               strItemMenuLaneSelect, @"\[(.*)\]", "[" + strLane + "]" );\r
+                       this.contextMenuStrip譜面右メニュー.Items[ indexMenuLaneSelect2 ].Text = strItemMenuLaneSelect;\r
 \r
                        string strItemMenuPartSelect = this.contextMenuStrip譜面右メニュー.Items[ indexMenuPartSelect ].Text;\r
                        strItemMenuPartSelect = System.Text.RegularExpressions.Regex.Replace(\r
@@ -1983,6 +2010,11 @@ namespace DTXCreator
                                strファイルの絶対パス = this.str作業フォルダ名 + strファイル;\r
                        }\r
 \r
+                       // 正規化する。(\a\b\c\..\d を \a\b\d にする)\r
+\r
+//                     FileInfo fi = new FileInfo( strファイルの絶対パス );\r
+//\                    strファイルの絶対パス = fi.FullName;\r
+\r
                        return strファイルの絶対パス;\r
                }\r
                public Point pt現在のマウス位置を譜面の可視領域相対の座標dotで返す()\r
@@ -2591,6 +2623,40 @@ namespace DTXCreator
                        this.mgr選択モード管理者.tレーン上の全チップを選択する( lane );\r
 \r
                }\r
+               private void toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降_Click( object sender, EventArgs e )\r
+               {\r
+                       // 編集モードなら強制的に選択モードにする。\r
+\r
+                       if ( this.b編集モードである )\r
+                               this.t選択モードにする();\r
+\r
+                       // メニューが開かれたときのマウスの座標を取得。\r
+                       // ※メニューは必ずマウス位置を左上にして表示されるとは限らないため、\r
+                       //  メニューの表示位置からは取得しないこと。\r
+\r
+                       Point ptマウスの位置 = this.pt選択モードのコンテクストメニューを開いたときのマウスの位置;\r
+\r
+                       #region [ クリックされた箇所のレーン番号を取得する。]\r
+                       //-----------------\r
+                       int lane = this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウスの位置.X );\r
+                       if ( lane < 0 )\r
+                               return;         // クリックされた箇所にレーンがない\r
+\r
+                       //-----------------\r
+                       #endregion\r
+                       #region [ クリックされた箇所の小節を取得する。]\r
+                       //-----------------\r
+                       if ( this.mgr譜面管理者.nX座標dotが位置するレーン番号を返す( ptマウスの位置.X ) < 0 )\r
+                               return;         // クリックされた箇所にレーンがない\r
+\r
+                       int n譜面先頭からの位置grid = this.mgr譜面管理者.nY座標dotが位置するgridを返す・ガイド幅単位( ptマウスの位置.Y );\r
+\r
+                       C小節 csクリックされた小節 = this.mgr譜面管理者.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );\r
+                       //-----------------\r
+                       #endregion\r
+\r
+                       this.mgr選択モード管理者.tレーン上の全チップを選択する( lane, csクリックされた小節.n小節番号0to3599 );\r
+               }\r
 \r
                private void toolStripMenuItem小節内のすべてのチップの選択_Click( object sender, EventArgs e )\r
                {\r
@@ -4886,6 +4952,393 @@ namespace DTXCreator
                        this.tシナリオ・Viewerを再生停止する();\r
                }\r
 \r
+               private void ToolStripMenuItemBeatChipsGeneration_Click( object sender, EventArgs e )                   // Beat Detections\r
+               {\r
+                       string filename = "";\r
+\r
+                       #region [ マウスカーソルを待機中に変更 ]\r
+                       this.Cursor = Cursors.WaitCursor;\r
+                       #endregion\r
+\r
+\r
+                       #region [ BGMレーンにあるチップを抽出して、beat検出する対象のサウンドファイルを決める ]\r
+                       #region [ BGM, BPM, BEATレーンのレーン番号を取得 ]\r
+                       int laneBGM = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BGM" );\r
+                       int laneBPM = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BPM" );\r
+                       int laneBEAT = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BEAT" );\r
+                       #endregion\r
+\r
+                       // とりあえずBGMチップは1個しかない前提で進める。追々、複数のBGMチップでも動作するようにはしたい。\r
+                       #region [ BGMチップ抽出 ]\r
+                       int nBGMチップの小節番号 = -1;\r
+                       int nBGMチップのindex = -1;\r
+                       foreach ( KeyValuePair<int, C小節> pair in this.mgr譜面管理者.dic小節 )\r
+                       {\r
+                               C小節 c小節 = pair.Value;\r
+                               nBGMチップのindex = c小節.listチップ.FindIndex(\r
+                                       delegate ( Cチップ cチップ )\r
+                                       {\r
+                                               return ( cチップ.nレーン番号0to == laneBGM );\r
+                                       }\r
+                               );\r
+                               if ( nBGMチップのindex >= 0 )\r
+                               {\r
+                                       nBGMチップの小節番号 = c小節.n小節番号0to3599;\r
+                                       filename = this.mgrWAVリスト管理者.tファイル名を絶対パスで返す( c小節.listチップ[ nBGMチップのindex ].n値・整数1to1295 );\r
+                                       Debug.WriteLine( filename );\r
+                                       break;  // とりあえず1個見つけたらbreakしちゃう\r
+                               }\r
+                               //for ( int i = 0; i < c小節.listチップ.Count; i++ )\r
+                               //{\r
+                                       //Cチップ cチップ = c小節.listチップ[ i ];\r
+                                       //if ( cチップ.nレーン番号0to == lane )\r
+                                       //{\r
+                                       //    nBGMチップのindex = i;\r
+                                       //    filename = this.mgrWAVリスト管理者.tファイル名を絶対パスで返す( cチップ.n値・整数1to1295 );\r
+                                       //    Debug.WriteLine( filename );\r
+                                       //}\r
+                               //}\r
+                       }\r
+                       #endregion\r
+                       #endregion\r
+\r
+\r
+                       #region [  BPM,BEATレーンの情報を消去 ]\r
+                       this.mgr選択モード管理者.tレーン上の全チップを選択する( laneBPM );\r
+                       this.tシナリオ・削除();\r
+                       this.mgr選択モード管理者.tレーン上の全チップを選択する( laneBEAT );\r
+                       this.tシナリオ・削除();\r
+\r
+                       #endregion\r
+\r
+                       #region [ BASSFXのBeat detectionを実行する ]\r
+                       FDK.CBeatDetect cbd = new CBeatDetect( filename );\r
+\r
+                       float tempo = cbd.GetTempo();\r
+                       Debug.WriteLine( "BPM=" + tempo );\r
+\r
+                       List<FDK.CBeatDetect.stBeatPos> listBeatPositions = cbd.GetBeatPositions();\r
+                       Debug.WriteLine( "Count: " + listBeatPositions.Count );\r
+                       #endregion\r
+\r
+                       // 四分音符以下、8分音符以下などと選べるようにしたい。\r
+                       #region [ 四分音符以下の間隔で検出されたbeatを、端折る。端折らないと、検出beat数が多過ぎて、人が扱えなくなる。]\r
+                       float last = 0;\r
+                       float minBeatDelta = 60.0f / tempo;             // 4分音符の長さ\r
+                       int count = 0;\r
+\r
+                       // 最初の10個くらいは、端折らない。まず拍の頭をとるのに必要な情報を落とすわけにはいかないので。\r
+                       // 10個目以降は、四分音符未満の長さのbeatを、端折る。(裏BEATレーンに回す)\r
+                       if ( listBeatPositions.Count > 10 )\r
+                       {\r
+                               for ( int i = count; i < listBeatPositions.Count; i++ )\r
+                               {\r
+                                       if ( listBeatPositions[ i ].fBeatTime - last < minBeatDelta )\r
+                                       {\r
+                                               FDK.CBeatDetect.stBeatPos sbp = new CBeatDetect.stBeatPos(\r
+                                                       listBeatPositions[ i ].fBeatTime,\r
+                                                       0,\r
+                                                       0,\r
+                                                       0,\r
+                                                       ( listBeatPositions[ i ].fBeatTime - last < minBeatDelta ),\r
+                                                       true\r
+                                               );\r
+\r
+                                               listBeatPositions[ i ] = sbp;\r
+                                       }\r
+                                       last = listBeatPositions[ i ].fBeatTime;\r
+                               }\r
+                       }\r
+                       #endregion\r
+\r
+                       #region [ ただのデバッグ表示 ]\r
+                       //last = 0;\r
+                       //for ( int i = 0; i < listBeatPositions.Count; i++ )\r
+                       //{\r
+                       //    //Debug.WriteLine( listBeatPositionsLight[ i ] - last );\r
+                       //    Debug.WriteLine( listBeatPositions[ i ].fBeatTime );\r
+                       //    last = listBeatPositions[ i ].fBeatTime;\r
+                       //}\r
+                       //Debug.WriteLine( "========================" );\r
+                       #endregion\r
+\r
+                       #region [ 未使用: 端折った区間内で、それぞれBPMを再取得してみる → これは意味なし。1つのbeatしか得られないため、正しいBPMを取得できない。]\r
+                       //List<float> listTempo_interval = new List<float>();\r
+                       //last = 0;\r
+                       //for ( int i = 0; i < listBeatPositionsLight.Count - 1; i++ )\r
+                       //{\r
+                       //    listTempo_interval.Add( cbd.GetTempo( last, listBeatPositionsLight[ i ] ) );\r
+                       //    last = listBeatPositionsLight[ i ];\r
+                       //    Debug.WriteLine( listTempo_interval[ i ] );\r
+                       //}\r
+                       #endregion\r
+\r
+\r
+                       int n1拍目のBeatPositionIndex = 0;\r
+\r
+                       #region [ 1小節目の頭に1発目の拍が来るよう、BGMチップをずらす。ただしこれだけだと、最大1grid分の時間誤差が発生する。(BPM=125時に最大10msの誤差)]\r
+                       int nBGM位置grid = 0;\r
+                       float f小節長倍率 = 1.0f;\r
+                       if ( nBGMチップの小節番号 >= 0 && nBGMチップのindex >= 0 )\r
+                       {\r
+                               C小節 c小節_0小節目 = this.mgr譜面管理者.dic小節[ nBGMチップの小節番号 ];\r
+                               Cチップ cチップBGM = c小節_0小節目.listチップ[ nBGMチップのindex ];\r
+                               f小節長倍率 = c小節_0小節目.f小節長倍率;\r
+                               nBGM位置grid = (int) ( 192f * f小節長倍率 * listBeatPositions[ n1拍目のBeatPositionIndex ].fBeatTime / ( ( 60 * 4 ) / tempo ) + 0.5 );        // ここでnBGM位置Gridが192を超えることがある\r
+                                                                                                                                                                                                                       // → そんな時は、tempoを2倍して再計算??\r
+                                                                                                                                                                                                                       // じゃなくて、192をひいて、次の小節に回す(小節長倍率が変化する可能性があることに注意)\r
+                               cチップBGM.n位置grid =(int) (192 * f小節長倍率 + 0.5f) - nBGM位置grid;      // "192-" が必要なことに注意\r
+                               c小節_0小節目.listチップ[ nBGMチップのindex ] = cチップBGM;\r
+                               this.mgr譜面管理者.dic小節[ nBGMチップの小節番号 ] = c小節_0小節目;\r
+                       }\r
+                       #endregion\r
+\r
+                       #region [ 0小節目のBPMを設定し、1つ目の拍が1小節目の頭に来るようにする。]\r
+                       // まず、0小節の頭にBPM設定を追加する。\r
+                       this.mgr編集モード管理者.tBPMチップを配置する( 0 * 192, tempo );\r
+                       this.numericUpDownBPM.Value = (decimal) tempo;\r
+                       numericUpDownBPM_ValueChanged( null, null );\r
+                       numericUpDownBPM_Leave( null, null );\r
+\r
+                       // 更に、先の1グリッド分の誤差をなくすために、BGMチップの位置だけでなく、0小節目のBPMも微調整する。\r
+                       float fBGM再生直後のBPM = ( 60 * 4 ) * nBGM位置grid / ( 192.0f * f小節長倍率 ) / listBeatPositions[ n1拍目のBeatPositionIndex ].fBeatTime;\r
+                       this.mgr編集モード管理者.tBPMチップを配置する( 192 - nBGM位置grid, fBGM再生直後のBPM );\r
+\r
+                       //Debug.WriteLine( "BGM Grid  =" + nBGM位置grid );  \r
+                       //Debug.WriteLine( "First  BPM=" + tempo );\r
+                       //Debug.WriteLine( "Second BPM=" + fBGM再生直後のBPM );\r
+                       #endregion\r
+\r
+                       //#region [ 1小節の頭に、まずは平均テンポを設置する。本当は、次のbeat位置に向けてのBPM値を、平均BPMを使って計算したうえで、設定すべき。]\r
+                       //this.mgr編集モード管理者.tBPMチップを配置する( 1 * 192, tempo );\r
+                       //#endregion\r
+\r
+                       #region [ BEATレーンにチップを配置する ]\r
+//                     int lastGrid = (int) ( 192 * this.mgr譜面管理者.dic小節[ 0 ].f小節長倍率 ); // 0小節目の倍率\r
+                       //int last小節内Grid = 0;\r
+                       //int last小節番号 = nBGMチップの小節番号;\r
+                       int last小節番号 = 1;\r
+                       float lastBeatTime = listBeatPositions[ n1拍目のBeatPositionIndex ].fBeatTime;\r
+\r
+                       for ( int index = n1拍目のBeatPositionIndex; index < listBeatPositions.Count; index++ )\r
+                       {\r
+//Debug.Write( "[" + index + "] " );\r
+\r
+                               // 今注目しているBEATチップが、どの小節・拍(grid)に収まるかを計算する\r
+               //              // 誤差を小さくするため、直前のBEATポイントからの相対位置として計算すること。\r
+               //              // 絶対位置で計算すると、最初のBPM計算の誤差がそのままBEAT位置に現れる。\r
+                               FDK.CBeatDetect.stBeatPos sbp = listBeatPositions[ index ];\r
+\r
+                               float deltatime = sbp.fBeatTime - lastBeatTime;\r
+//Debug.Write( "delta=" + deltatime );\r
+                               int n小節番号 = last小節番号;\r
+                               float f1小節の時間 = ( 60 / tempo ) * 4;\r
+                               #region [ 0小節目の場合 ]\r
+                               if ( deltatime < 0 )\r
+                               {\r
+                                       while ( n小節番号 >= 0 && deltatime < 0 )\r
+                                       {\r
+                                               n小節番号--;\r
+                                               deltatime += f1小節の時間 * this.mgr譜面管理者.dic小節[ n小節番号 ].f小節長倍率;\r
+                                                       //(int) ( 192 * this.mgr譜面管理者.dic小節[ n小節番号 ].f小節長倍率 );  // 0小節目の倍率\r
+                                       }\r
+                                       if ( deltatime < 0 )\r
+                                       {\r
+                                               Debug.WriteLine( "[" + index + "]: deltatime < 0; error (" + deltatime );\r
+                                               continue;\r
+                                       }\r
+                               }\r
+                               #endregion\r
+                               #region [ 1小節目以降の場合 ]\r
+                               else\r
+                               {\r
+//Debug.Write( " + " + f1小節の時間 * this.mgr譜面管理者.dic小節[ n小節番号 ].f小節長倍率 * last小節内Grid / 192 + "(" + lastGrid + "|" + last小節内Grid +")=" );\r
+//                                     deltatime += f1小節の時間 * this.mgr譜面管理者.dic小節[ n小節番号 ].f小節長倍率 * last小節内Grid / 192;         // 直前のgrid(その小節の頭から)の分\r
+//Debug.WriteLine( deltatime );\r
+                                       while ( true )\r
+                                       {\r
+                                               if ( deltatime < f1小節の時間 * this.mgr譜面管理者.dic小節[ n小節番号 ].f小節長倍率 )\r
+                                               {\r
+                                                       break;\r
+                                               }\r
+                                               n小節番号++;\r
+\r
+                                               #region [ 小節ノードが不足しているなら、追加する ]\r
+                                               if ( this.mgr譜面管理者.n現在の最大の小節番号を返す() < n小節番号 )\r
+                                               {\r
+                                                       for ( int i = n小節番号; i < n小節番号 + 5; i++ )\r
+                                                       {\r
+                                                               this.mgr譜面管理者.dic小節.Add( i, new C小節( i ) );\r
+                                                               this.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<int>( null, new DGUndoを実行する<int>( this.mgr譜面管理者.t小節挿入のUndo ), new DGRedoを実行する<int>( this.mgr譜面管理者.t小節挿入のRedo ), i, i ) );\r
+                                                       }\r
+                                               }\r
+                                               #endregion\r
+       \r
+                                               deltatime -= f1小節の時間 * this.mgr譜面管理者.dic小節[ n小節番号 ].f小節長倍率;\r
+                                       }\r
+                                       if ( deltatime < 0 )\r
+                                       {\r
+                                               Debug.WriteLine( "[" + index + "]: deltatime < 0; error (" + deltatime );\r
+                                               continue;\r
+                                       }\r
+                               }\r
+                               #endregion\r
+\r
+                               // ここまでで、n小節番号を得ている\r
+                               // ここで、更にgridを得たうえで、16分音符相当にquantizeして、BEATチップの位置とする\r
+\r
+                               #region [ BEATチップを置く ]\r
+                               f小節長倍率 = this.mgr譜面管理者.dic小節[ n小節番号 ].f小節長倍率;\r
+                               int n小節内Grid = (int) ( 192f * f小節長倍率 * deltatime / ( ( 60 * 4 ) / tempo ) + 0.5 );\r
+\r
+                               #region [ Gridを16分音符単位(==12grid単位)でquantizeする ]\r
+                               Debug.Write( "nGrid: " + n小節内Grid + " -> " );\r
+                               n小節内Grid = ( ( n小節内Grid + 6 ) / 12 ) * 12;\r
+                               Debug.WriteLine( n小節内Grid );\r
+                               #endregion\r
+\r
+                               int nGrid = this.mgr譜面管理者.n譜面先頭からみた小節先頭の位置gridを返す( n小節番号 ) + n小節内Grid;\r
+\r
+                               this.mgr編集モード管理者.tBeatチップを配置する( nGrid, index, sbp.fBeatTime, sbp.b無効 );\r
+//                             this.mgr編集モード管理者.tHHチップを配置する( nGrid, 1, sbp.b無効 );  // デバッグ用・見やすくするために暫定的に。\r
+                               sbp.nGrid = nGrid;\r
+                               sbp.n小節番号 = n小節番号;\r
+                               listBeatPositions[ index ] = sbp;               // Grid情報を入れて、listを更新 (この情報はBPx挿入時に使う)\r
+\r
+                               //if ( !sbp.b無効 )\r
+                               {\r
+                                       //lastGrid = nGrid;\r
+                                       //last小節内Grid = n小節内Grid;\r
+                                       //last小節番号 = n小節番号;\r
+                                       //lastBeatTime = sbp.fBeatTime;\r
+                               }\r
+                               #endregion\r
+Debug.WriteLine( "[" + index + "]: n小節番号=" + n小節番号 + ", Grid= " + n小節内Grid + "/" + nGrid + ", BeatTime=" + sbp.fBeatTime + ", 裏=" + sbp.b無効 );\r
+                       }\r
+                       #endregion\r
+\r
+                       BPMchipsGeneneration_Main();\r
+\r
+                       #region [ マウスカーソルの形を元に戻す ]\r
+                       this.Cursor = Cursors.Default;\r
+                       #endregion\r
+\r
+                       cbd.Dispose();\r
+                       cbd = null;\r
+\r
+                       #region [ 画面の再描画 ]\r
+                       this.pictureBox譜面パネル.Invalidate();\r
+                       #endregion\r
+               }\r
+\r
+               private void ToolStripMenuItemBPMChipsGeneration_Click( object sender, EventArgs e )\r
+               {\r
+                       BPMchipsGeneneration_Main();\r
+               }\r
+\r
+               private void BPMchipsGeneneration_Main()\r
+               {\r
+                       #region [ BPMレーンとHHレーンを消去(0小節目を除く) ]\r
+                       int laneBPM = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BPM" );\r
+                       this.mgr選択モード管理者.tレーン上の全チップを選択する( laneBPM, 1 );\r
+                       this.tシナリオ・削除();\r
+\r
+                       int laneHH = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "HH" );\r
+                       this.mgr選択モード管理者.tレーン上の全チップを選択する( laneHH, 1 );\r
+                       this.tシナリオ・削除();\r
+                       #endregion\r
+\r
+                       #region [ BEATレーンから、listBestPositionを生成 ]\r
+                       int laneBEAT = this.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BEAT" );\r
+                       List<FDK.CBeatDetect.stBeatPos> listBeatPositions = new List<CBeatDetect.stBeatPos>();\r
+                       foreach ( KeyValuePair<int, C小節> pair in this.mgr譜面管理者.dic小節 )\r
+                       {\r
+                               C小節 c小節 = pair.Value;\r
+                               for ( int index = 0; index < c小節.listチップ.Count; index++ )\r
+                               {\r
+                                       if (  c小節.listチップ[ index ].nレーン番号0to == laneBEAT )\r
+                                       {\r
+                                               int n小節番号 = c小節.n小節番号0to3599;\r
+                                               listBeatPositions.Add(\r
+                                                       new CBeatDetect.stBeatPos(\r
+                                                               c小節.listチップ[ index ].f値・浮動小数,\r
+                                                               n小節番号,\r
+                                                               this.mgr譜面管理者.n譜面先頭からみた小節先頭の位置gridを返す( n小節番号 ) + c小節.listチップ[ index ].n位置grid,\r
+                                                               c小節.listチップ[ index ].n位置grid,                                                     // 小節内のGridは以後使わないので、0にしてしまう。\r
+                                                               c小節.listチップ[ index ].b裏,\r
+                                                               true\r
+                                                       )\r
+                                               );\r
+                                       }\r
+                               }\r
+                       }\r
+                       #endregion\r
+\r
+\r
+                       #region [ BEATチップの位置に合わせて、BPMを計算し、BPxチップを配置する ]\r
+\r
+                       int n1拍目のBeatPositionIndex = 0;\r
+\r
+                       int lastindex = 0;\r
+                       for ( int index = n1拍目のBeatPositionIndex + 1; index < listBeatPositions.Count; index++ )\r
+                       {\r
+                               if ( listBeatPositions[ index ].b無効 )\r
+                               {\r
+                                       continue;\r
+                               }\r
+                               #region [ 次の有効なBeatPointを検出する ]\r
+                               int nextIndex = -1;\r
+                               for ( int i = index + 1; i < listBeatPositions.Count; i++ )\r
+                               {\r
+                                       if ( listBeatPositions[ i ].bレーン表示する && !listBeatPositions[ i ].b無効 )\r
+                                       //if ( listBeatPositions[ i ].bレーン表示する )\r
+                                       {\r
+                                               nextIndex = i;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                               #endregion\r
+\r
+                               #region [ BPMチップを置く]\r
+                               //int lastgrid = (int) ( 192 * this.mgr譜面管理者.dic小節[ 0 ].f小節長倍率 );       // 0小節目の倍率\r
+                               //int lastindex = n1拍目のBeatPositionIndex;\r
+                               //int last小節番号 = nBGMチップの小節番号;\r
+\r
+                               if ( nextIndex >= 0 )\r
+                               {\r
+                                       float deltatime = listBeatPositions[ nextIndex ].fBeatTime - listBeatPositions[ index ].fBeatTime;\r
+\r
+                                       //int current小節番号 = listBeatPositionsLight[ index ].n小節番号;\r
+                                       //int next小節番号 = listBeatPositionsLight[ nextIndex ].n小節番号;\r
+                                       int deltagrid = listBeatPositions[ nextIndex ].nGrid - listBeatPositions[ index ].nGrid;\r
+\r
+                                       float fBPM = 60.0f / ( deltatime / deltagrid * 48 );            // 四分音符==48grid\r
+\r
+\r
+                                       // BPMチップを配置する(裏BEATチップに対しては、配置しない)\r
+                                       if ( nextIndex >= 0 )\r
+                                       {\r
+                                               this.mgr編集モード管理者.tBPMチップを配置する( listBeatPositions[ index ].nGrid, fBPM );\r
+                                       }\r
+\r
+\r
+                                       //this.mgr編集モード管理者.tHHチップを配置する( listBeatPositions[ index ].nGrid, 1, listBeatPositions[ index ].b無効 );      // デバッグ用・見やすくするために暫定的に。\r
+\r
+                                       Debug.WriteLine( "(" + index + "->" + nextIndex + "): BPM=" + fBPM + ", nGrid=" + listBeatPositions[ index ].nGrid + ", deltagrid=" + deltagrid +" , deltatime=" + deltatime );\r
+                                       lastindex = index;\r
+                               }\r
+                               #endregion\r
+                       }\r
+                       #region [ デバッグ用: HHチップを置く ]\r
+                       for ( int index = n1拍目のBeatPositionIndex + 1; index < listBeatPositions.Count; index++ )\r
+                       {\r
+                               this.mgr編集モード管理者.tHHチップを配置する( listBeatPositions[ index ].nGrid, 1, listBeatPositions[ index ].b無効 );        // デバッグ用・見やすくするために暫定的に。\r
+                       }\r
+                       #endregion\r
+                       #endregion\r
+               }\r
+\r
+\r
 \r
                //-----------------\r
                #endregion\r
index d9a1905..fbecbcf 100644 (file)
   <resheader name="writer">\r
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </resheader>\r
+  <data name="tabPage基本情報.Text" xml:space="preserve">\r
+    <value>基本情報</value>\r
+  </data>\r
   <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />\r
   <data name="labelGenre.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>37, 87</value>\r
   <data name="textBox曲名.ToolTip" xml:space="preserve">\r
     <value>演奏データのタイトルを設定します。</value>\r
   </data>\r
-  <data name="tabPage基本情報.Text" xml:space="preserve">\r
-    <value>基本情報</value>\r
-  </data>\r
   <data name="columnHeaderWAV_ラベル.Text" xml:space="preserve">\r
     <value>ラベル</value>\r
   </data>\r
   <data name="toolStripButtonAVIリスト下移動.ToolTipText" xml:space="preserve">\r
     <value>選択行を1つ下に移動します。</value>\r
   </data>\r
+  <data name="toolStripMenuItemファイル.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>70, 20</value>\r
+  </data>\r
+  <data name="toolStripMenuItemファイル.Text" xml:space="preserve">\r
+    <value>ファイル(&amp;F)</value>\r
+  </data>\r
   <data name="toolStripMenuItem新規.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>195, 22</value>\r
   </data>\r
   <data name="toolStripMenuItem終了.Text" xml:space="preserve">\r
     <value>終了(&amp;X)</value>\r
   </data>\r
-  <data name="toolStripMenuItemファイル.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>70, 20</value>\r
+  <data name="toolStripMenuItem編集.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>60, 20</value>\r
   </data>\r
-  <data name="toolStripMenuItemファイル.Text" xml:space="preserve">\r
-    <value>ファイル(&amp;F)</value>\r
+  <data name="toolStripMenuItem編集.Text" xml:space="preserve">\r
+    <value>編集(&amp;E)</value>\r
   </data>\r
   <data name="toolStripMenuItemアンドゥ.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>191, 22</value>\r
   <data name="toolStripMenuItem置換.Text" xml:space="preserve">\r
     <value>置換(&amp;Q)</value>\r
   </data>\r
-  <data name="toolStripMenuItem編集.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>60, 20</value>\r
+  <data name="toolStripMenuItem表示.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>61, 20</value>\r
   </data>\r
-  <data name="toolStripMenuItem編集.Text" xml:space="preserve">\r
-    <value>編集(&amp;E)</value>\r
+  <data name="toolStripMenuItem表示.Text" xml:space="preserve">\r
+    <value>表示(&amp;V)</value>\r
   </data>\r
   <data name="toolStripMenuItemチップパレット.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>150, 22</value>\r
   <data name="toolStripMenuItemチップパレット.Text" xml:space="preserve">\r
     <value>チップパレット(&amp;P)</value>\r
   </data>\r
+  <data name="toolStripMenuItemガイド間隔.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>150, 22</value>\r
+  </data>\r
+  <data name="toolStripMenuItemガイド間隔.Text" xml:space="preserve">\r
+    <value>ガイド間隔(&amp;G)</value>\r
+  </data>\r
   <data name="toolStripMenuItemガイド間隔4分.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>141, 22</value>\r
   </data>\r
   <data name="toolStripMenuItemガイド間隔縮小.Text" xml:space="preserve">\r
     <value>縮小(&amp;N)</value>\r
   </data>\r
-  <data name="toolStripMenuItemガイド間隔.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>150, 22</value>\r
-  </data>\r
-  <data name="toolStripMenuItemガイド間隔.Text" xml:space="preserve">\r
-    <value>ガイド間隔(&amp;G)</value>\r
-  </data>\r
-  <data name="toolStripMenuItem表示.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>61, 20</value>\r
+  <data name="toolStripMenuItem再生.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>60, 20</value>\r
   </data>\r
-  <data name="toolStripMenuItem表示.Text" xml:space="preserve">\r
-    <value>表示(&amp;V)</value>\r
+  <data name="toolStripMenuItem再生.Text" xml:space="preserve">\r
+    <value>再生(&amp;P)</value>\r
   </data>\r
   <data name="toolStripMenuItem先頭から再生.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>240, 22</value>\r
   <data name="toolStripMenuItem再生停止.Text" xml:space="preserve">\r
     <value>再生停止(&amp;S)</value>\r
   </data>\r
-  <data name="toolStripMenuItem再生.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>60, 20</value>\r
+  <data name="toolStripMenuItemツール.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>66, 20</value>\r
   </data>\r
-  <data name="toolStripMenuItem再生.Text" xml:space="preserve">\r
-    <value>再生(&amp;P)</value>\r
+  <data name="toolStripMenuItemツール.Text" xml:space="preserve">\r
+    <value>ツール(&amp;T)</value>\r
   </data>\r
   <data name="toolStripMenuItemオプション.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>136, 22</value>\r
   <data name="toolStripMenuItemオプション.Text" xml:space="preserve">\r
     <value>オプション(&amp;O)</value>\r
   </data>\r
-  <data name="toolStripMenuItemã\83\84ã\83¼ã\83«.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>66, 20</value>\r
+  <data name="toolStripMenuItemã\83\98ã\83«ã\83\97.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>67, 20</value>\r
   </data>\r
-  <data name="toolStripMenuItemã\83\84ã\83¼ã\83«.Text" xml:space="preserve">\r
-    <value>ã\83\84ã\83¼ã\83«(&amp;T)</value>\r
+  <data name="toolStripMenuItemã\83\98ã\83«ã\83\97.Text" xml:space="preserve">\r
+    <value>ã\83\98ã\83«ã\83\97(&amp;H)</value>\r
   </data>\r
   <data name="toolStripMenuItemDTXCreaterマニュアル.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>233, 22</value>\r
   <data name="toolStripMenuItemバージョン.Text" xml:space="preserve">\r
     <value>バージョン情報(&amp;V)</value>\r
   </data>\r
-  <data name="toolStripMenuItemヘルプ.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>67, 20</value>\r
-  </data>\r
-  <data name="toolStripMenuItemヘルプ.Text" xml:space="preserve">\r
-    <value>ヘルプ(&amp;H)</value>\r
-  </data>\r
   <data name="toolStripButton新規作成.ToolTipText" xml:space="preserve">\r
     <value>新しい譜面を作成します。</value>\r
   </data>\r
     <value>DTXViewerでの再生速度を指定します。 (#DTXVPLAYSPEED)</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップの切り取り.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップの切り取り.Text" xml:space="preserve">\r
     <value>選択チップの切り取り(&amp;T)</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップのコピー.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップのコピー.Text" xml:space="preserve">\r
     <value>選択チップのコピー(&amp;C)</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップの貼り付け.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップの貼り付け.Text" xml:space="preserve">\r
     <value>選択チップの貼り付け(&amp;P)</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップの削除.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップの削除.Text" xml:space="preserve">\r
     <value>選択チップの削除(&amp;D)</value>\r
   </data>\r
   <data name="toolStripSeparator15.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>250, 6</value>\r
+    <value>332, 6</value>\r
   </data>\r
   <data name="toolStripMenuItemすべてのチップの選択.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="toolStripMenuItemすべてのチップの選択.Text" xml:space="preserve">\r
     <value>すべてのチップの選択(&amp;A)</value>\r
   </data>\r
-  <data name="toolStripMenuItemレーン内のすべてのチップの選択.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+  <data name="toolStripMenuItemレーン内のすべてのチップの選択1.Text" xml:space="preserve">\r
+    <value>レーン内のすべてのチップの選択(全小節)(&amp;L) []</value>\r
   </data>\r
-  <data name="toolStripMenuItemレーン内のすべてのチップの選択.Text" xml:space="preserve">\r
-    <value>レーン内のすべてのチップの選択(&amp;L) []</value>\r
+  <data name="toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.Text" xml:space="preserve">\r
+    <value>レーン内のすべてのチップの選択(指定小節以降)(&amp;L) []</value>\r
   </data>\r
   <data name="toolStripMenuItem小節内のすべてのチップの選択.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="toolStripMenuItem小節内のすべてのチップの選択.Text" xml:space="preserve">\r
     <value>小節内のすべてのチップの選択(&amp;R) []</value>\r
   </data>\r
   <data name="toolStripSeparator16.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>250, 6</value>\r
+    <value>332, 6</value>\r
   </data>\r
   <data name="toolStripMenuItem小節長変更.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="toolStripMenuItem小節長変更.Text" xml:space="preserve">\r
     <value>小節長の変更(&amp;B)</value>\r
   </data>\r
   <data name="toolStripSeparator17.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>250, 6</value>\r
+    <value>332, 6</value>\r
   </data>\r
   <data name="toolStripMenuItem小節の挿入.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="toolStripMenuItem小節の挿入.Text" xml:space="preserve">\r
     <value>小節の挿入(&amp;I)</value>\r
   </data>\r
   <data name="toolStripMenuItem小節の削除.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>253, 22</value>\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="toolStripMenuItem小節の削除.Text" xml:space="preserve">\r
     <value>小節の削除(&amp;D)</value>\r
   </data>\r
+  <data name="toolStripSeparator18.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>332, 6</value>\r
+  </data>\r
+  <data name="ToolStripMenuItemBPMDetections.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>335, 22</value>\r
+  </data>\r
+  <data name="ToolStripMenuItemBPMDetections.Text" xml:space="preserve">\r
+    <value>BEATチップの生成(&amp;B)</value>\r
+  </data>\r
+  <data name="generateBPMFromBeatTipsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>335, 22</value>\r
+  </data>\r
+  <data name="generateBPMFromBeatTipsToolStripMenuItem.Text" xml:space="preserve">\r
+    <value>BEATチップからBPMチップを生成(&amp;B)</value>\r
+  </data>\r
   <data name="contextMenuStrip譜面右メニュー.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>254, 242</value>\r
+    <value>336, 336</value>\r
   </data>\r
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
     <value>\r
index 358d6a2..09efd5c 100644 (file)
     <value>Bass level, (easy) 1 to 100 (Hard). \r
 0 means no drums.</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripMenuItemレーン内のすべてのチップの選択1.Name" xml:space="preserve">\r
+    <value>toolStripMenuItemレーン内のすべてのチップの選択1</value>\r
+  </data>\r
   <data name="toolStripButtonWAVリストプレビュースイッチ.Text" xml:space="preserve">\r
     <value>toolStripButton1</value>\r
   </data>\r
   <data name="&gt;&gt;textBoxRESULTIMAGE.Name" xml:space="preserve">\r
     <value>textBoxRESULTIMAGE</value>\r
   </data>\r
-  <data name="splitContainerタブと譜面を分割.Panel1.ToolTip" xml:space="preserve">\r
-    <value />\r
+  <data name="&gt;&gt;toolStripMenuItemモード切替.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="labelPREVIEW.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>33, 241</value>\r
   <data name="&gt;&gt;toolStripMenuItem削除.Name" xml:space="preserve">\r
     <value>toolStripMenuItem削除</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.Name" xml:space="preserve">\r
+    <value>toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2</value>\r
+  </data>\r
   <data name="listViewBMPリスト.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>3, 3</value>\r
   </data>\r
   <data name="&gt;&gt;tabControl情報パネル.ZOrder" xml:space="preserve">\r
     <value>0</value>\r
   </data>\r
-  <data name="tabPageBMP.Location" type="System.Drawing.Point, System.Drawing">\r
-    <value>4, 22</value>\r
-  </data>\r
-  <data name="&gt;&gt;toolStripMenuItem貼り付け.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
-  </data>\r
   <data name="&gt;&gt;labelパネル.ZOrder" xml:space="preserve">\r
     <value>18</value>\r
   </data>\r
   <data name="&gt;&gt;tabPageAVI.ZOrder" xml:space="preserve">\r
     <value>3</value>\r
   </data>\r
-  <data name="hScrollBarDLEVEL.ToolTip" xml:space="preserve">\r
-    <value>Drums level, (easy) 1 to 100 (Hard). \r
-0 means no drums.</value>\r
+  <data name="toolStripMenuItemレーン内のすべてのチップの選択.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>335, 22</value>\r
   </data>\r
   <data name="&gt;&gt;labelDLEVEL.Name" xml:space="preserve">\r
     <value>labelDLEVEL</value>\r
@@ -241,6 +240,9 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripButton切り取り.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="labelPREIMAGE.AutoSize" type="System.Boolean, mscorlib">\r
+    <value>True</value>\r
+  </data>\r
   <data name="labelコメント.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>53, 12</value>\r
   </data>\r
@@ -258,7 +260,7 @@ The image size is 204x269.</value>
 </value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップの切り取り.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
+    <value>267, 22</value>\r
   </data>\r
   <data name="labelBLEVEL.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">\r
     <value>TopRight</value>\r
@@ -308,8 +310,11 @@ The image size is 204x269.</value>
   <data name="toolStripMenuItemすべて選択.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">\r
     <value>Ctrl+A</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripWAVツールバー.Name" xml:space="preserve">\r
-    <value>toolStripWAVツールバー</value>\r
+  <data name="labeRESULTIMAGE.AutoSize" type="System.Boolean, mscorlib">\r
+    <value>True</value>\r
+  </data>\r
+  <data name="&gt;&gt;ToolStripMenuItemBPMDetections.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="&gt;&gt;tabPage自由入力.Name" xml:space="preserve">\r
     <value>tabPage自由入力</value>\r
@@ -333,7 +338,7 @@ The image size is 204x269.</value>
     <value>148, 17</value>\r
   </data>\r
   <data name="toolStripSeparator15.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>204, 6</value>\r
+    <value>264, 6</value>\r
   </data>\r
   <data name="toolStripButton先頭から再生.ToolTipText" xml:space="preserve">\r
     <value>Play from top with a viewer</value>\r
@@ -341,8 +346,8 @@ The image size is 204x269.</value>
   <data name="toolStripButtonWAVリストプレビュー再生停止.ToolTipText" xml:space="preserve">\r
     <value>Stop sound</value>\r
   </data>\r
-  <data name="buttonPREVIEW参照.ToolTip" xml:space="preserve">\r
-    <value>Select file...</value>\r
+  <data name="&gt;&gt;toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降.Name" xml:space="preserve">\r
+    <value>toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降</value>\r
   </data>\r
   <data name="hScrollBarGLEVEL.TabIndex" type="System.Int32, mscorlib">\r
     <value>6</value>\r
@@ -380,9 +385,6 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripMenuItem新規.Name" xml:space="preserve">\r
     <value>toolStripMenuItem新規</value>\r
   </data>\r
-  <data name="&gt;&gt;pictureBox譜面パネル.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
-  </data>\r
   <data name="&gt;&gt;toolStripButton新規作成.Name" xml:space="preserve">\r
     <value>toolStripButton新規作成</value>\r
   </data>\r
@@ -398,23 +400,20 @@ The image size is 204x269.</value>
   <data name="splitContainerタブと譜面を分割.ToolTip" xml:space="preserve">\r
     <value />\r
   </data>\r
-  <data name="labelパネル.TabIndex" type="System.Int32, mscorlib">\r
-    <value>15</value>\r
+  <data name="&gt;&gt;toolStripButtonリドゥ.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </data>\r
+  <data name="&gt;&gt;tooltoolStripMenuItemレーン内のすべてのチップの選択.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="toolStripButton先頭から再生.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
     <value>Magenta</value>\r
   </data>\r
-  <data name="columnHeaderWAV_番号.Width" type="System.Int32, mscorlib">\r
-    <value>28</value>\r
-  </data>\r
-  <data name="labelBLEVEL.TabIndex" type="System.Int32, mscorlib">\r
-    <value>13</value>\r
-  </data>\r
   <data name="&gt;&gt;toolStripButton再生停止.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
-  <data name="labelPREIMAGE.AutoSize" type="System.Boolean, mscorlib">\r
-    <value>True</value>\r
+  <data name="labelパネル.TabIndex" type="System.Int32, mscorlib">\r
+    <value>15</value>\r
   </data>\r
   <data name="labelBPM.Text" xml:space="preserve">\r
     <value>BPM</value>\r
@@ -435,7 +434,7 @@ The image size is 204x269.</value>
     <value>toolStripButton再生停止</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップのコピー.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
+    <value>267, 22</value>\r
   </data>\r
   <data name="&gt;&gt;buttonPREIMAGE参照.Name" xml:space="preserve">\r
     <value>buttonPREIMAGE参照</value>\r
@@ -483,11 +482,14 @@ The image size is 204x269.</value>
   <data name="toolStripComboBox演奏速度.Items3" xml:space="preserve">\r
     <value>x1.2</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripSeparator4.Name" xml:space="preserve">\r
+    <value>toolStripSeparator4</value>\r
+  </data>\r
   <data name="textBoxPREVIEW.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>156, 19</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップの削除.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
+    <value>267, 22</value>\r
   </data>\r
   <data name="toolStripButtonリドゥ.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>23, 22</value>\r
@@ -504,6 +506,9 @@ The image size is 204x269.</value>
   <data name="columnHeaderWAV_ラベル.Text" xml:space="preserve">\r
     <value>Label</value>\r
   </data>\r
+  <data name="toolStripMenuItem新規.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>163, 22</value>\r
+  </data>\r
   <data name="columnHeaderWAV_BGM.Width" type="System.Int32, mscorlib">\r
     <value>34</value>\r
   </data>\r
@@ -528,6 +533,9 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripMenuItem先頭から再生.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="buttonPREVIEW参照.ToolTip" xml:space="preserve">\r
+    <value>Select file...</value>\r
+  </data>\r
   <data name="hScrollBarBLEVEL.TabIndex" type="System.Int32, mscorlib">\r
     <value>7</value>\r
   </data>\r
@@ -582,9 +590,6 @@ The image size is 204x269.</value>
   <data name="listViewAVIリスト.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">\r
     <value>Fill</value>\r
   </data>\r
-  <data name="toolStripMenuItemガイド間隔フリー.Text" xml:space="preserve">\r
-    <value>&amp;Free</value>\r
-  </data>\r
   <data name="labelBACKGROUND.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">\r
     <value>TopRight</value>\r
   </data>\r
@@ -594,6 +599,9 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;labelPREIMAGE.Name" xml:space="preserve">\r
     <value>labelPREIMAGE</value>\r
   </data>\r
+  <data name="splitContainerタブと譜面を分割.Panel1.ToolTip" xml:space="preserve">\r
+    <value />\r
+  </data>\r
   <data name="labelBACKGROUND.TabIndex" type="System.Int32, mscorlib">\r
     <value>29</value>\r
   </data>\r
@@ -621,8 +629,8 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripMenuItemモード切替.Name" xml:space="preserve">\r
     <value>toolStripMenuItemモード切替</value>\r
   </data>\r
-  <data name="labeRESULTIMAGE.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">\r
-    <value>TopRight</value>\r
+  <data name="contextMenuStrip譜面右メニュー.ToolTip" xml:space="preserve">\r
+    <value />\r
   </data>\r
   <data name="buttonPREIMAGE参照.TabIndex" type="System.Int32, mscorlib">\r
     <value>19</value>\r
@@ -635,7 +643,7 @@ The image size is 204x269.</value>
     <value>False</value>\r
   </data>\r
   <data name="contextMenuStrip譜面右メニュー.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>208, 242</value>\r
+    <value>268, 314</value>\r
   </data>\r
   <data name="labelDLEVEL.TabIndex" type="System.Int32, mscorlib">\r
     <value>11</value>\r
@@ -661,9 +669,6 @@ The image size is 204x269.</value>
   <data name="labelSTAGEFILE.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>5, 289</value>\r
   </data>\r
-  <data name="&gt;&gt;tabPageBMP.Name" xml:space="preserve">\r
-    <value>tabPageBMP</value>\r
-  </data>\r
   <data name="&gt;&gt;toolStripMenuItemガイド間隔12分.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -716,14 +721,14 @@ The image size is 204x269.</value>
     <value>Ctrl+V</value>\r
   </data>\r
   <data name="toolStripMenuItem小節内のすべてのチップの選択.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
-  </data>\r
-  <data name="labeRESULTIMAGE.AutoSize" type="System.Boolean, mscorlib">\r
-    <value>True</value>\r
+    <value>267, 22</value>\r
   </data>\r
   <data name="labelBLEVEL.AutoSize" type="System.Boolean, mscorlib">\r
     <value>True</value>\r
   </data>\r
+  <data name="&gt;&gt;pictureBox譜面パネル.ZOrder" xml:space="preserve">\r
+    <value>0</value>\r
+  </data>\r
   <data name="textBoxGenre.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>85, 84</value>\r
   </data>\r
@@ -797,8 +802,8 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;textBoxSTAGEFILE.ZOrder" xml:space="preserve">\r
     <value>14</value>\r
   </data>\r
-  <data name="textBoxパネル.ToolTip" xml:space="preserve">\r
-    <value>Panel message shown in playing screen.</value>\r
+  <data name="labelBLEVEL.TabIndex" type="System.Int32, mscorlib">\r
+    <value>13</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripMenuItem選択チップの切り取り.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
@@ -824,9 +829,6 @@ The image size is 204x269.</value>
   <data name="textBoxコメント.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">\r
     <value>Top, Left, Right</value>\r
   </data>\r
-  <data name="&gt;&gt;textBoxコメント.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
-  </data>\r
   <data name="&gt;&gt;toolStripSeparator1.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -896,6 +898,9 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;columnHeaderWAV_音量.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>267, 22</value>\r
+  </data>\r
   <data name="buttonPREIMAGE参照.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>25, 23</value>\r
   </data>\r
@@ -990,12 +995,18 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripMenuItemDTXCreaterマニュアル.Name" xml:space="preserve">\r
     <value>toolStripMenuItemDTXCreaterマニュアル</value>\r
   </data>\r
+  <data name="textBoxGLEVEL.Location" type="System.Drawing.Point, System.Drawing">\r
+    <value>85, 161</value>\r
+  </data>\r
   <data name="toolStripMenuItemガイド間隔4分.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>138, 22</value>\r
   </data>\r
   <data name="columnHeaderAVI_ラベル.Width" type="System.Int32, mscorlib">\r
     <value>127</value>\r
   </data>\r
+  <data name="toolStripSeparator18.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>264, 6</value>\r
+  </data>\r
   <data name="toolStripMenuItem再生停止.Text" xml:space="preserve">\r
     <value>&amp;Stop</value>\r
   </data>\r
@@ -1008,11 +1019,11 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripMenuItemガイド間隔拡大.Name" xml:space="preserve">\r
     <value>toolStripMenuItemガイド間隔拡大</value>\r
   </data>\r
-  <data name="toolStripMenuItem先頭から再生.Text" xml:space="preserve">\r
-    <value>Play from &amp;top</value>\r
+  <data name="&gt;&gt;columnHeaderAVI_ラベル.Name" xml:space="preserve">\r
+    <value>columnHeaderAVI_ラベル</value>\r
   </data>\r
   <data name="toolStripMenuItem小節長変更.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
+    <value>267, 22</value>\r
   </data>\r
   <data name="labelBPM.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>29, 12</value>\r
@@ -1020,6 +1031,9 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripMenuItem選択モード.Name" xml:space="preserve">\r
     <value>toolStripMenuItem選択モード</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripWAVツールバー.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </data>\r
   <data name="&gt;&gt;toolStripSeparator5.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -1057,7 +1071,7 @@ The image size is 204x269.</value>
     <value>1/4</value>\r
   </data>\r
   <data name="toolStripMenuItemすべてのチップの選択.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
+    <value>267, 22</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripSeparator12.Name" xml:space="preserve">\r
     <value>toolStripSeparator12</value>\r
@@ -1071,6 +1085,9 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripMenuItem編集.Name" xml:space="preserve">\r
     <value>toolStripMenuItem編集</value>\r
   </data>\r
+  <data name="&gt;&gt;generateBPMFromBeatTipsToolStripMenuItem.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </data>\r
   <data name="labelSTAGEFILE.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>74, 12</value>\r
   </data>\r
@@ -1080,14 +1097,14 @@ The image size is 204x269.</value>
   <data name="textBoxGLEVEL.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">\r
     <value>Center</value>\r
   </data>\r
-  <data name="toolStripMenuItemガイド間隔32分.Text" xml:space="preserve">\r
-    <value>1/&amp;32</value>\r
+  <data name="&gt;&gt;generateBPMFromBeatTipsToolStripMenuItem.Name" xml:space="preserve">\r
+    <value>generateBPMFromBeatTipsToolStripMenuItem</value>\r
   </data>\r
   <data name="textBoxパネル.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>85, 210</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripSeparator10.Name" xml:space="preserve">\r
-    <value>toolStripSeparator10</value>\r
+  <data name="generateBPMFromBeatTipsToolStripMenuItem.Text" xml:space="preserve">\r
+    <value>Generate &amp;BPM from Beat chips</value>\r
   </data>\r
   <data name="&gt;&gt;label曲名.ZOrder" xml:space="preserve">\r
     <value>31</value>\r
@@ -1138,8 +1155,8 @@ The image size is 204x269.</value>
   <data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>160, 6</value>\r
   </data>\r
-  <data name="toolStripButtonアンドゥ.Enabled" type="System.Boolean, mscorlib">\r
-    <value>False</value>\r
+  <data name="numericUpDownBPM.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">\r
+    <value>Center</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripツールバー.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
@@ -1156,8 +1173,8 @@ The image size is 204x269.</value>
   <data name="textBox自由入力欄.Multiline" type="System.Boolean, mscorlib">\r
     <value>True</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripMenuItem切り取り.Name" xml:space="preserve">\r
-    <value>toolStripMenuItem切り取り</value>\r
+  <data name="&gt;&gt;toolStripButtonチップパレット.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="toolStripMenuItem現在位置から再生.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">\r
     <value>F6</value>\r
@@ -1171,6 +1188,9 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripButtonWAVリストプレビュー再生開始.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="listViewBMPリスト.TabIndex" type="System.Int32, mscorlib">\r
+    <value>1</value>\r
+  </data>\r
   <data name="&gt;&gt;toolStripMenuItem再生.Name" xml:space="preserve">\r
     <value>toolStripMenuItem再生</value>\r
   </data>\r
@@ -1183,6 +1203,9 @@ The image size is 204x269.</value>
   <data name="textBoxコメント.TabIndex" type="System.Int32, mscorlib">\r
     <value>2</value>\r
   </data>\r
+  <data name="&gt;&gt;labelBPM.Name" xml:space="preserve">\r
+    <value>labelBPM</value>\r
+  </data>\r
   <data name="&gt;&gt;labelGLEVEL.ZOrder" xml:space="preserve">\r
     <value>22</value>\r
   </data>\r
@@ -1192,9 +1215,6 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripBMPツールバー.Name" xml:space="preserve">\r
     <value>toolStripBMPツールバー</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripSeparator10.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
-  </data>\r
   <data name="numericUpDownBPM.ToolTip" xml:space="preserve">\r
     <value>Song's BGM (Beats Per Minute)</value>\r
   </data>\r
@@ -1213,15 +1233,15 @@ The image size is 204x269.</value>
   <data name="textBox自由入力欄.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">\r
     <value>10, 10, 10, 10</value>\r
   </data>\r
-  <data name="toolStripMenuItem名前を付けて保存.Text" xml:space="preserve">\r
-    <value>Save &amp;As ...</value>\r
-  </data>\r
   <data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>182, 6</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripButtonWAVリストプレビュー再生停止.Name" xml:space="preserve">\r
     <value>toolStripButtonWAVリストプレビュー再生停止</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripButtonコピー.Name" xml:space="preserve">\r
+    <value>toolStripButtonコピー</value>\r
+  </data>\r
   <data name="textBoxBLEVEL.TabIndex" type="System.Int32, mscorlib">\r
     <value>7</value>\r
   </data>\r
@@ -1237,8 +1257,8 @@ The image size is 204x269.</value>
   <data name="buttonPREIMAGE参照.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">\r
     <value>Top, Right</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripButtonチップパレット.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  <data name="toolStripBMPツールバー.Location" type="System.Drawing.Point, System.Drawing">\r
+    <value>3, 390</value>\r
   </data>\r
   <data name="toolStripMenuItemガイド間隔16分.Text" xml:space="preserve">\r
     <value>1/1&amp;6</value>\r
@@ -1292,8 +1312,8 @@ The image size is 640x480.</value>
   <data name="tabPage自由入力.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>4, 22</value>\r
   </data>\r
-  <data name="&gt;&gt;textBoxPREIMAGE.ZOrder" xml:space="preserve">\r
-    <value>15</value>\r
+  <data name="&gt;&gt;columnHeaderAVI_ファイル名.Name" xml:space="preserve">\r
+    <value>columnHeaderAVI_ファイル名</value>\r
   </data>\r
   <data name="labelGLEVEL.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>29, 164</value>\r
@@ -1365,8 +1385,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;buttonPREVIEW参照.ZOrder" xml:space="preserve">\r
     <value>6</value>\r
   </data>\r
-  <data name="&gt;&gt;textBoxコメント.Parent" xml:space="preserve">\r
-    <value>tabPage基本情報</value>\r
+  <data name="&gt;&gt;toolStripMenuItemガイド間隔12分.Name" xml:space="preserve">\r
+    <value>toolStripMenuItemガイド間隔12分</value>\r
   </data>\r
   <data name="labelPREIMAGE.ToolTip" xml:space="preserve">\r
     <value>Preview image shown when song selected.\r
@@ -1390,8 +1410,8 @@ The image size is 204x269.</value>
   <data name="textBoxコメント.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>187, 19</value>\r
   </data>\r
-  <data name="labelDLEVEL.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>46, 12</value>\r
+  <data name="&gt;&gt;toolStripButtonBMPリスト下移動.Name" xml:space="preserve">\r
+    <value>toolStripButtonBMPリスト下移動</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripMenuItem小節長変更.Name" xml:space="preserve">\r
     <value>toolStripMenuItem小節長変更</value>\r
@@ -1434,11 +1454,14 @@ The image size is 204x269.</value>
     <value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップの貼り付け.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
+    <value>267, 22</value>\r
   </data>\r
   <data name="hScrollBarDLEVEL.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">\r
     <value>Top, Left, Right</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripMenuItemレーン内のすべてのチップの選択1.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </data>\r
   <data name="hScrollBarBLEVEL.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>148, 17</value>\r
   </data>\r
@@ -1484,8 +1507,11 @@ The image size is 204x269.</value>
   <data name="label曲名.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">\r
     <value>TopRight</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripButton選択モード.Name" xml:space="preserve">\r
-    <value>toolStripButton選択モード</value>\r
+  <data name="toolStripButtonWAVリストプレビュースイッチ.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
+    <value>Magenta</value>\r
+  </data>\r
+  <data name="toolStripツールバー.TabIndex" type="System.Int32, mscorlib">\r
+    <value>2</value>\r
   </data>\r
   <data name="toolStripMenuItem編集.Text" xml:space="preserve">\r
     <value>&amp;Edit</value>\r
@@ -1499,8 +1525,8 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripButton新規作成.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
-  <data name="&gt;&gt;textBoxGLEVEL.Parent" xml:space="preserve">\r
-    <value>tabPage基本情報</value>\r
+  <data name="&gt;&gt;pictureBox譜面パネル.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="toolStripButtonWAVリスト上移動.Text" xml:space="preserve">\r
     <value>toolStripButton1</value>\r
@@ -1581,8 +1607,8 @@ The image size is 204x269.</value>
   <data name="toolStripButtonWAVリスト下移動.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>23, 22</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripMenuItem検索.Name" xml:space="preserve">\r
-    <value>toolStripMenuItem検索</value>\r
+  <data name="tabPageBMP.ToolTip" xml:space="preserve">\r
+    <value />\r
   </data>\r
   <data name="toolStripMenuItem貼り付け.Text" xml:space="preserve">\r
     <value>&amp;Paste</value>\r
@@ -1593,6 +1619,9 @@ The image size is 204x269.</value>
   <data name="pictureBox譜面パネル.ToolTip" xml:space="preserve">\r
     <value />\r
   </data>\r
+  <data name="toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>335, 22</value>\r
+  </data>\r
   <data name="&gt;&gt;labeRESULTIMAGE.Parent" xml:space="preserve">\r
     <value>tabPage基本情報</value>\r
   </data>\r
@@ -1602,8 +1631,8 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;hScrollBarGLEVEL.Name" xml:space="preserve">\r
     <value>hScrollBarGLEVEL</value>\r
   </data>\r
-  <data name="toolStripButtonコピー.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
-    <value>Magenta</value>\r
+  <data name="toolStripMenuItemガイド間隔フリー.Text" xml:space="preserve">\r
+    <value>&amp;Free</value>\r
   </data>\r
   <data name="labelパネル.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">\r
     <value>TopRight</value>\r
@@ -1614,6 +1643,9 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;label製作者.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降2.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </data>\r
   <data name="textBoxDLEVEL.TabIndex" type="System.Int32, mscorlib">\r
     <value>5</value>\r
   </data>\r
@@ -1635,9 +1667,6 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripツールバー.ZOrder" xml:space="preserve">\r
     <value>3</value>\r
   </data>\r
-  <data name="labelコメント.Location" type="System.Drawing.Point, System.Drawing">\r
-    <value>26, 59</value>\r
-  </data>\r
   <data name="textBox自由入力欄.TabIndex" type="System.Int32, mscorlib">\r
     <value>0</value>\r
   </data>\r
@@ -1650,15 +1679,15 @@ The image size is 204x269.</value>
   <data name="textBox製作者.TabIndex" type="System.Int32, mscorlib">\r
     <value>1</value>\r
   </data>\r
-  <data name="&gt;&gt;menuStripメニューバー.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
-  </data>\r
   <data name="tabControl情報パネル.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>286, 444</value>\r
   </data>\r
   <data name="&gt;&gt;textBoxPREVIEW.ZOrder" xml:space="preserve">\r
     <value>16</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripButton選択モード.Name" xml:space="preserve">\r
+    <value>toolStripButton選択モード</value>\r
+  </data>\r
   <data name="&gt;&gt;toolStripMenuItemガイド間隔16分.Name" xml:space="preserve">\r
     <value>toolStripMenuItemガイド間隔16分</value>\r
   </data>\r
@@ -1677,8 +1706,8 @@ The image size is 204x269.</value>
   <data name="statusStripステータスバー.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>731, 22</value>\r
   </data>\r
-  <data name="&gt;&gt;pictureBox譜面パネル.ZOrder" xml:space="preserve">\r
-    <value>0</value>\r
+  <data name="labelコメント.Location" type="System.Drawing.Point, System.Drawing">\r
+    <value>26, 59</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripButton上書き保存.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
@@ -1692,6 +1721,9 @@ The image size is 204x269.</value>
   <data name="toolStripButton現在位置からBGMのみ再生.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
     <value>Magenta</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripSeparator18.Name" xml:space="preserve">\r
+    <value>toolStripSeparator18</value>\r
+  </data>\r
   <data name="toolStripMenuItemガイド間隔縮小.Text" xml:space="preserve">\r
     <value>&amp;Narrow</value>\r
   </data>\r
@@ -1738,7 +1770,10 @@ The image size is 204x269.</value>
     <value>35, 12</value>\r
   </data>\r
   <data name="toolStripMenuItem小節の削除.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
+    <value>267, 22</value>\r
+  </data>\r
+  <data name="toolStripMenuItem編集モード.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>185, 22</value>\r
   </data>\r
   <data name="listViewBMPリスト.Font" type="System.Drawing.Font, System.Drawing">\r
     <value>MS ゴシック, 9pt</value>\r
@@ -1755,6 +1790,9 @@ The image size is 204x269.</value>
   <data name="&gt;&gt;toolStripButtonWAVリストプレビュースイッチ.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripWAVツールバー.Name" xml:space="preserve">\r
+    <value>toolStripWAVツールバー</value>\r
+  </data>\r
   <data name="toolStripSeparator11.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>6, 25</value>\r
   </data>\r
@@ -1785,8 +1823,8 @@ The image size is 204x269.</value>
   <data name="buttonBACKGROUND参照.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>247, 311</value>\r
   </data>\r
-  <data name="textBoxGLEVEL.Location" type="System.Drawing.Point, System.Drawing">\r
-    <value>85, 161</value>\r
+  <data name="&gt;&gt;columnHeaderWAV_番号.Name" xml:space="preserve">\r
+    <value>columnHeaderWAV_番号</value>\r
   </data>\r
   <data name="toolStripSeparator3.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>182, 6</value>\r
@@ -1803,6 +1841,9 @@ The image size is 204x269.</value>
   <data name="labeRESULTIMAGE.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>11, 339</value>\r
   </data>\r
+  <data name="tooltoolStripMenuItemレーン内のすべてのチップの選択.Text" xml:space="preserve">\r
+    <value>Select all in the &amp;lane (all part) []</value>\r
+  </data>\r
   <data name="&gt;&gt;toolStripMenuItem小節の挿入.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -1830,9 +1871,15 @@ The image size is 204x269.</value>
   <data name="toolStripButton新規作成.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
     <value>Magenta</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripMenuItem検索.Name" xml:space="preserve">\r
+    <value>toolStripMenuItem検索</value>\r
+  </data>\r
   <data name="&gt;&gt;toolStripComboBox譜面拡大率.Name" xml:space="preserve">\r
     <value>toolStripComboBox譜面拡大率</value>\r
   </data>\r
+  <data name="toolStripMenuItemレーン内のすべてのチップの選択1.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>335, 22</value>\r
+  </data>\r
   <data name="&gt;&gt;toolStripSeparator2.Name" xml:space="preserve">\r
     <value>toolStripSeparator2</value>\r
   </data>\r
@@ -1853,12 +1900,6 @@ The image size is 640x480.</value>
     <value>Paste chip(s)\r
 </value>\r
   </data>\r
-  <data name="toolStripWAVツールバー.Location" type="System.Drawing.Point, System.Drawing">\r
-    <value>3, 390</value>\r
-  </data>\r
-  <data name="&gt;&gt;toolStripMenuItemすべて選択.Name" xml:space="preserve">\r
-    <value>toolStripMenuItemすべて選択</value>\r
-  </data>\r
   <data name="textBoxBLEVEL.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>85, 182</value>\r
   </data>\r
@@ -1904,8 +1945,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;textBoxコメント.Name" xml:space="preserve">\r
     <value>textBoxコメント</value>\r
   </data>\r
-  <data name="splitContainerタブと譜面を分割.Location" type="System.Drawing.Point, System.Drawing">\r
-    <value>0, 49</value>\r
+  <data name="toolStripMenuItem名前を付けて保存.Text" xml:space="preserve">\r
+    <value>Save &amp;As ...</value>\r
   </data>\r
   <data name="tabPageWAV.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>4, 22</value>\r
@@ -1928,6 +1969,9 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;hScrollBarDLEVEL.Parent" xml:space="preserve">\r
     <value>tabPage基本情報</value>\r
   </data>\r
+  <data name="&gt;&gt;ToolStripMenuItemBPMDetections.Name" xml:space="preserve">\r
+    <value>ToolStripMenuItemBPMDetections</value>\r
+  </data>\r
   <data name="&gt;&gt;textBoxGenre.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -1949,8 +1993,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripButton開く.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
-  <data name="toolStripMenuItemレーン内のすべてのチップの選択.Text" xml:space="preserve">\r
-    <value>Select all in the &amp;lane []</value>\r
+  <data name="tabPageWAV.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>278, 418</value>\r
   </data>\r
   <data name="&gt;&gt;textBoxBLEVEL.ZOrder" xml:space="preserve">\r
     <value>20</value>\r
@@ -2019,11 +2063,11 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripSeparator16.Name" xml:space="preserve">\r
     <value>toolStripSeparator16</value>\r
   </data>\r
-  <data name="textBoxPREIMAGE.TabIndex" type="System.Int32, mscorlib">\r
-    <value>10</value>\r
+  <data name="tabPageBMP.Location" type="System.Drawing.Point, System.Drawing">\r
+    <value>4, 22</value>\r
   </data>\r
   <data name="toolStripSeparator16.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>204, 6</value>\r
+    <value>264, 6</value>\r
   </data>\r
   <data name="toolStripButton現在位置からBGMのみ再生.ToolTipText" xml:space="preserve">\r
     <value>Play BGM from currect part with a viewer</value>\r
@@ -2034,6 +2078,9 @@ The image size is 640x480.</value>
   <data name="toolStripMenuItemガイド間隔拡大.ShortcutKeys" type="System.Windows.Forms.Keys, System.Windows.Forms">\r
     <value>F3</value>\r
   </data>\r
+  <data name="toolStripComboBoxガイド間隔.Items8" xml:space="preserve">\r
+    <value>Free</value>\r
+  </data>\r
   <data name="toolStripComboBoxガイド間隔.Items7" xml:space="preserve">\r
     <value>1/64</value>\r
   </data>\r
@@ -2043,8 +2090,8 @@ The image size is 640x480.</value>
   <data name="columnHeaderWAV_番号.Text" xml:space="preserve">\r
     <value>No</value>\r
   </data>\r
-  <data name="toolStripツールバー.TabIndex" type="System.Int32, mscorlib">\r
-    <value>2</value>\r
+  <data name="&gt;&gt;menuStripメニューバー.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="labelSTAGEFILE.Text" xml:space="preserve">\r
     <value>LoadingImage</value>\r
@@ -2058,8 +2105,11 @@ The image size is 640x480.</value>
   <data name="textBoxコメント.ToolTip" xml:space="preserve">\r
     <value>Comment</value>\r
   </data>\r
-  <data name="&gt;&gt;labelBPM.Name" xml:space="preserve">\r
-    <value>labelBPM</value>\r
+  <data name="ToolStripMenuItemBPMDetections.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>267, 22</value>\r
+  </data>\r
+  <data name="toolStripButtonAVIリスト下移動.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
+    <value>Magenta</value>\r
   </data>\r
   <data name="toolStripMenuItem選択チップのコピー.Text" xml:space="preserve">\r
     <value>&amp;Copy selected chip(s)</value>\r
@@ -2082,6 +2132,9 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;textBoxSTAGEFILE.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="&gt;&gt;columnHeaderBMP_ファイル名.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </data>\r
   <data name="labelGLEVEL.Text" xml:space="preserve">\r
     <value>GuitarLv.\r
 </value>\r
@@ -2089,8 +2142,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripSeparator1.Name" xml:space="preserve">\r
     <value>toolStripSeparator1</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripMenuItemガイド間隔12分.Name" xml:space="preserve">\r
-    <value>toolStripMenuItemガイド間隔12分</value>\r
+  <data name="&gt;&gt;hScrollBarGLEVEL.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.HScrollBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="listViewAVIリスト.ToolTip" xml:space="preserve">\r
     <value />\r
@@ -2188,17 +2241,11 @@ The image size is 640x480.</value>
   <data name="textBox自由入力欄.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>3, 3</value>\r
   </data>\r
-  <data name="&gt;&gt;columnHeaderAVI_ラベル.Name" xml:space="preserve">\r
-    <value>columnHeaderAVI_ラベル</value>\r
-  </data>\r
-  <data name="&gt;&gt;columnHeaderWAV_番号.Name" xml:space="preserve">\r
-    <value>columnHeaderWAV_番号</value>\r
-  </data>\r
   <data name="buttonPREVIEW参照.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">\r
     <value>Top, Right</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripSeparator4.Name" xml:space="preserve">\r
-    <value>toolStripSeparator4</value>\r
+  <data name="&gt;&gt;toolStripSeparator18.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripMenuItemチップパレット.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
@@ -2224,14 +2271,14 @@ The image size is 640x480.</value>
   <data name="labelコメント.ToolTip" xml:space="preserve">\r
     <value>Comment</value>\r
   </data>\r
-  <data name="listViewBMPリスト.TabIndex" type="System.Int32, mscorlib">\r
-    <value>1</value>\r
+  <data name="&gt;&gt;textBoxGLEVEL.Parent" xml:space="preserve">\r
+    <value>tabPage基本情報</value>\r
   </data>\r
   <data name="&gt;&gt;textBoxPREVIEW.Name" xml:space="preserve">\r
     <value>textBoxPREVIEW</value>\r
   </data>\r
-  <data name="toolStripMenuItem新規.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>163, 22</value>\r
+  <data name="&gt;&gt;toolStripSeparator10.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="&gt;&gt;buttonBACKGROUND参照.Name" xml:space="preserve">\r
     <value>buttonBACKGROUND参照</value>\r
@@ -2242,8 +2289,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;textBoxコメント.ZOrder" xml:space="preserve">\r
     <value>33</value>\r
   </data>\r
-  <data name="toolStripButtonWAVリストプレビュースイッチ.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
-    <value>Magenta</value>\r
+  <data name="&gt;&gt;toolStripMenuItem貼り付け.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripSeparator5.Name" xml:space="preserve">\r
     <value>toolStripSeparator5</value>\r
@@ -2300,6 +2347,9 @@ The image size is 640x480.</value>
   <data name="toolStripComboBox譜面拡大率.IntegralHeight" type="System.Boolean, mscorlib">\r
     <value>False</value>\r
   </data>\r
+  <data name="labeRESULTIMAGE.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>68, 12</value>\r
+  </data>\r
   <data name="&gt;&gt;hScrollBar譜面用水平スクロールバー.ZOrder" xml:space="preserve">\r
     <value>1</value>\r
   </data>\r
@@ -2740,8 +2790,8 @@ The image size is 640x480.</value>
         AACH/wAAh/8AAI//AAA=\r
 </value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripButtonBMPリスト下移動.Name" xml:space="preserve">\r
-    <value>toolStripButtonBMPリスト下移動</value>\r
+  <data name="&gt;&gt;textBoxコメント.Parent" xml:space="preserve">\r
+    <value>tabPage基本情報</value>\r
   </data>\r
   <data name="&gt;&gt;columnHeaderBMP_ラベル.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
@@ -2761,6 +2811,9 @@ The image size is 640x480.</value>
   <data name="toolStripMenuItemオプション.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>112, 22</value>\r
   </data>\r
+  <data name="&gt;&gt;labelGLEVEL.Parent" xml:space="preserve">\r
+    <value>tabPage基本情報</value>\r
+  </data>\r
   <data name="&gt;&gt;textBoxDLEVEL.Parent" xml:space="preserve">\r
     <value>tabPage基本情報</value>\r
   </data>\r
@@ -2768,11 +2821,14 @@ The image size is 640x480.</value>
     <value>5</value>\r
   </data>\r
   <data name="toolStripMenuItem小節の挿入.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
+    <value>267, 22</value>\r
   </data>\r
   <data name="&gt;&gt;labelコメント.Name" xml:space="preserve">\r
     <value>labelコメント</value>\r
   </data>\r
+  <data name="tooltoolStripMenuItemレーン内のすべてのチップの選択.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>267, 22</value>\r
+  </data>\r
   <data name="toolStripButton新規作成.ToolTipText" xml:space="preserve">\r
     <value>Create a new file</value>\r
   </data>\r
@@ -2785,15 +2841,12 @@ The image size is 640x480.</value>
   <data name="toolStripMenuItemすべて選択.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>185, 22</value>\r
   </data>\r
-  <data name="numericUpDownBPM.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">\r
-    <value>Center</value>\r
+  <data name="&gt;&gt;toolStripSeparator10.Name" xml:space="preserve">\r
+    <value>toolStripSeparator10</value>\r
   </data>\r
   <data name="vScrollBar譜面用垂直スクロールバー.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>17, 444</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripButtonリドゥ.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
-  </data>\r
   <data name="&gt;&gt;toolStripMenuItem小節の挿入.Name" xml:space="preserve">\r
     <value>toolStripMenuItem小節の挿入</value>\r
   </data>\r
@@ -2806,8 +2859,8 @@ The image size is 640x480.</value>
   <data name="toolStripMenuItem現在位置から再生.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>235, 22</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripMenuItem上書き保存.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  <data name="&gt;&gt;toolStripMenuItem切り取り.Name" xml:space="preserve">\r
+    <value>toolStripMenuItem切り取り</value>\r
   </data>\r
   <data name="hScrollBarBLEVEL.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">\r
     <value>Top, Left, Right</value>\r
@@ -2815,8 +2868,8 @@ The image size is 640x480.</value>
   <data name="textBox曲名.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>85, 6</value>\r
   </data>\r
-  <data name="tabPageWAV.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>278, 418</value>\r
+  <data name="toolStripButtonアンドゥ.Enabled" type="System.Boolean, mscorlib">\r
+    <value>False</value>\r
   </data>\r
   <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">\r
     <value>731, 515</value>\r
@@ -2833,14 +2886,14 @@ The image size is 640x480.</value>
   <data name="tabPageBMP.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">\r
     <value>3, 3, 3, 3</value>\r
   </data>\r
-  <data name="toolStripMenuItemバージョン.Text" xml:space="preserve">\r
-    <value>&amp;Version</value>\r
+  <data name="textBoxPREIMAGE.TabIndex" type="System.Int32, mscorlib">\r
+    <value>10</value>\r
   </data>\r
   <data name="toolStripComboBox演奏速度.Items9" xml:space="preserve">\r
     <value>x0.6</value>\r
   </data>\r
-  <data name="$this.Text" xml:space="preserve">\r
-    <value>DTXCreator</value>\r
+  <data name="hScrollBar譜面用水平スクロールバー.TabIndex" type="System.Int32, mscorlib">\r
+    <value>0</value>\r
   </data>\r
   <data name="labelBPM.TabIndex" type="System.Int32, mscorlib">\r
     <value>8</value>\r
@@ -2872,8 +2925,8 @@ The image size is 640x480.</value>
   <data name="buttonSTAGEFILE参照.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>25, 23</value>\r
   </data>\r
-  <data name="toolStripButtonAVIリスト下移動.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
-    <value>Magenta</value>\r
+  <data name="toolStripMenuItem先頭から再生.Text" xml:space="preserve">\r
+    <value>Play from &amp;top</value>\r
   </data>\r
   <data name="&gt;&gt;tabPage基本情報.Name" xml:space="preserve">\r
     <value>tabPage基本情報</value>\r
@@ -2914,8 +2967,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;statusStripステータスバー.Name" xml:space="preserve">\r
     <value>statusStripステータスバー</value>\r
   </data>\r
-  <data name="toolStripButtonWAVリストプレビュー再生開始.ToolTipText" xml:space="preserve">\r
-    <value>Play the current wave sound</value>\r
+  <data name="toolStripMenuItemバージョン.Text" xml:space="preserve">\r
+    <value>&amp;Version</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripMenuItemガイド間隔64分.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
@@ -2968,8 +3021,9 @@ The image size is 640x480.</value>
   <data name="textBoxPREVIEW.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">\r
     <value>Top, Left, Right</value>\r
   </data>\r
-  <data name="hScrollBar譜面用水平スクロールバー.TabIndex" type="System.Int32, mscorlib">\r
-    <value>0</value>\r
+  <data name="hScrollBarDLEVEL.ToolTip" xml:space="preserve">\r
+    <value>Drums level, (easy) 1 to 100 (Hard). \r
+0 means no drums.</value>\r
   </data>\r
   <data name="toolStripMenuItemすべてのチップの選択.Text" xml:space="preserve">\r
     <value>Select &amp;All</value>\r
@@ -2998,6 +3052,9 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;columnHeaderWAV_ラベル.Name" xml:space="preserve">\r
     <value>columnHeaderWAV_ラベル</value>\r
   </data>\r
+  <data name="&gt;&gt;toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </data>\r
   <data name="&gt;&gt;labelBACKGROUND.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -3007,9 +3064,6 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripMenuItem削除.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
-  <data name="&gt;&gt;splitContainerタブと譜面を分割.Parent" xml:space="preserve">\r
-    <value>$this</value>\r
-  </data>\r
   <data name="tabControl情報パネル.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">\r
     <value>Fill</value>\r
   </data>\r
@@ -3049,8 +3103,8 @@ The image size is 640x480.</value>
   <data name="label製作者.TabIndex" type="System.Int32, mscorlib">\r
     <value>6</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripButtonコピー.Name" xml:space="preserve">\r
-    <value>toolStripButtonコピー</value>\r
+  <data name="&gt;&gt;tabPageBMP.Name" xml:space="preserve">\r
+    <value>tabPageBMP</value>\r
   </data>\r
   <data name="textBoxGenre.ToolTip" xml:space="preserve">\r
     <value>Genre</value>\r
@@ -3073,9 +3127,6 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripMenuItemガイド間隔24分.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripMenuItemモード切替.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
-  </data>\r
   <data name="&gt;&gt;toolStripSeparator8.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripSeparator, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -3121,7 +3172,7 @@ The image size is 640x480.</value>
     <value>3</value>\r
   </data>\r
   <data name="toolStripSeparator17.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>204, 6</value>\r
+    <value>264, 6</value>\r
   </data>\r
   <data name="labelBPM.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">\r
     <value>TopRight</value>\r
@@ -3151,8 +3202,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;labelGLEVEL.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
-  <data name="labeRESULTIMAGE.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>68, 12</value>\r
+  <data name="&gt;&gt;splitContainerタブと譜面を分割.Parent" xml:space="preserve">\r
+    <value>$this</value>\r
   </data>\r
   <data name="toolStripButton切り取り.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>23, 22</value>\r
@@ -3166,8 +3217,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;textBoxDLEVEL.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
-  <data name="toolStripBMPツールバー.Location" type="System.Drawing.Point, System.Drawing">\r
-    <value>3, 390</value>\r
+  <data name="columnHeaderWAV_番号.Width" type="System.Int32, mscorlib">\r
+    <value>28</value>\r
   </data>\r
   <data name="&gt;&gt;textBoxBLEVEL.Parent" xml:space="preserve">\r
     <value>tabPage基本情報</value>\r
@@ -3233,6 +3284,9 @@ The image size is 640x480.</value>
   <data name="toolStripButton再生停止.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
     <value>Magenta</value>\r
   </data>\r
+  <data name="ToolStripMenuItemBPMDetections.Text" xml:space="preserve">\r
+    <value>Generate &amp;Beat chips</value>\r
+  </data>\r
   <data name="&gt;&gt;buttonPREIMAGE参照.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -3251,6 +3305,9 @@ The image size is 640x480.</value>
   <data name="textBoxBLEVEL.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>36, 19</value>\r
   </data>\r
+  <data name="textBoxパネル.ToolTip" xml:space="preserve">\r
+    <value>Panel message shown in playing screen.</value>\r
+  </data>\r
   <data name="labelパネル.Location" type="System.Drawing.Point, System.Drawing">\r
     <value>18, 213</value>\r
   </data>\r
@@ -3290,8 +3347,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;textBoxBACKGROUND.Name" xml:space="preserve">\r
     <value>textBoxBACKGROUND</value>\r
   </data>\r
-  <data name="&gt;&gt;labelGLEVEL.Parent" xml:space="preserve">\r
-    <value>tabPage基本情報</value>\r
+  <data name="&gt;&gt;textBoxPREIMAGE.ZOrder" xml:space="preserve">\r
+    <value>15</value>\r
   </data>\r
   <data name="&gt;&gt;label製作者.Name" xml:space="preserve">\r
     <value>label製作者</value>\r
@@ -3326,6 +3383,9 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;columnHeaderAVI_ファイル名.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="toolStripButtonコピー.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
+    <value>Magenta</value>\r
+  </data>\r
   <data name="&gt;&gt;toolStripMenuItem置換.Name" xml:space="preserve">\r
     <value>toolStripMenuItem置換</value>\r
   </data>\r
@@ -3372,9 +3432,6 @@ The image size is 640x480.</value>
   <data name="hScrollBar譜面用水平スクロールバー.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">\r
     <value>Bottom</value>\r
   </data>\r
-  <data name="contextMenuStrip譜面右メニュー.ToolTip" xml:space="preserve">\r
-    <value />\r
-  </data>\r
   <data name="&gt;&gt;textBoxGLEVEL.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -3387,8 +3444,8 @@ The image size is 640x480.</value>
   <data name="tabPageWAV.Text" xml:space="preserve">\r
     <value>WAV</value>\r
   </data>\r
-  <data name="&gt;&gt;hScrollBarDLEVEL.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.HScrollBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  <data name="generateBPMFromBeatTipsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>267, 22</value>\r
   </data>\r
   <data name="tabPageAVI.ToolTip" xml:space="preserve">\r
     <value />\r
@@ -3408,8 +3465,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;listViewBMPリスト.Parent" xml:space="preserve">\r
     <value>tabPageBMP</value>\r
   </data>\r
-  <data name="toolStripComboBoxガイド間隔.Items8" xml:space="preserve">\r
-    <value>Free</value>\r
+  <data name="toolStripMenuItemレーン内のすべてのチップの選択_特定小節以降.Text" xml:space="preserve">\r
+    <value>Select all in the &amp;lane to the tail []</value>\r
   </data>\r
   <data name="tabPageWAV.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">\r
     <value>3, 3, 3, 3</value>\r
@@ -3453,8 +3510,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripMenuItem選択チップの削除.Name" xml:space="preserve">\r
     <value>toolStripMenuItem選択チップの削除</value>\r
   </data>\r
-  <data name="tabPageBMP.ToolTip" xml:space="preserve">\r
-    <value />\r
+  <data name="labeRESULTIMAGE.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">\r
+    <value>TopRight</value>\r
   </data>\r
   <data name="toolStripComboBox演奏速度.Items6" xml:space="preserve">\r
     <value>x0.9</value>\r
@@ -3471,8 +3528,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripAVIツールバー.Parent" xml:space="preserve">\r
     <value>tabPageAVI</value>\r
   </data>\r
-  <data name="toolStripMenuItemレーン内のすべてのチップの選択.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>207, 22</value>\r
+  <data name="toolStripWAVツールバー.Location" type="System.Drawing.Point, System.Drawing">\r
+    <value>3, 390</value>\r
   </data>\r
   <data name="columnHeaderBMP_ラベル.Width" type="System.Int32, mscorlib">\r
     <value>127</value>\r
@@ -3495,8 +3552,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripMenuItem現在位置から再生.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
-  <data name="&gt;&gt;columnHeaderBMP_ファイル名.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  <data name="toolStripMenuItem編集モード.Text" xml:space="preserve">\r
+    <value>&amp;Edit mode</value>\r
   </data>\r
   <data name="toolStripButtonWAVリストプレビュー再生開始.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">\r
     <value>Magenta</value>\r
@@ -3519,9 +3576,6 @@ The image size is 640x480.</value>
   <data name="toolStripButtonBMPリスト下移動.Text" xml:space="preserve">\r
     <value>toolStripButton1</value>\r
   </data>\r
-  <data name="toolStripMenuItem編集モード.Text" xml:space="preserve">\r
-    <value>&amp;Edit mode</value>\r
-  </data>\r
   <data name="&gt;&gt;tabPageWAV.ZOrder" xml:space="preserve">\r
     <value>1</value>\r
   </data>\r
@@ -3549,6 +3603,9 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;pictureBox譜面パネル.Name" xml:space="preserve">\r
     <value>pictureBox譜面パネル</value>\r
   </data>\r
+  <data name="$this.Text" xml:space="preserve">\r
+    <value>DTXCreator</value>\r
+  </data>\r
   <data name="$this.ToolTip" xml:space="preserve">\r
     <value />\r
   </data>\r
@@ -3568,6 +3625,9 @@ The image size is 640x480.</value>
   <data name="labelコメント.AutoSize" type="System.Boolean, mscorlib">\r
     <value>True</value>\r
   </data>\r
+  <data name="splitContainerタブと譜面を分割.Location" type="System.Drawing.Point, System.Drawing">\r
+    <value>0, 49</value>\r
+  </data>\r
   <data name="&gt;&gt;splitContainerタブと譜面を分割.Panel1.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
@@ -3580,8 +3640,8 @@ The image size is 640x480.</value>
   <data name="tabPageAVI.TabIndex" type="System.Int32, mscorlib">\r
     <value>3</value>\r
   </data>\r
-  <data name="&gt;&gt;columnHeaderAVI_ファイル名.Name" xml:space="preserve">\r
-    <value>columnHeaderAVI_ファイル名</value>\r
+  <data name="toolStripButtonWAVリストプレビュー再生開始.ToolTipText" xml:space="preserve">\r
+    <value>Play the current wave sound</value>\r
   </data>\r
   <data name="buttonSTAGEFILE参照.TabIndex" type="System.Int32, mscorlib">\r
     <value>21</value>\r
@@ -3589,8 +3649,8 @@ The image size is 640x480.</value>
   <data name="toolStripMenuItem置換.Text" xml:space="preserve">\r
     <value>Replace(&amp;Q)</value>\r
   </data>\r
-  <data name="&gt;&gt;tabPage基本情報.Parent" xml:space="preserve">\r
-    <value>tabControl情報パネル</value>\r
+  <data name="&gt;&gt;toolStripMenuItemすべて選択.Name" xml:space="preserve">\r
+    <value>toolStripMenuItemすべて選択</value>\r
   </data>\r
   <data name="&gt;&gt;numericUpDownBPM.Name" xml:space="preserve">\r
     <value>numericUpDownBPM</value>\r
@@ -3604,8 +3664,11 @@ The image size is 640x480.</value>
   <data name="tabPageAVI.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">\r
     <value>3, 3, 3, 3</value>\r
   </data>\r
-  <data name="&gt;&gt;hScrollBarGLEVEL.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.HScrollBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  <data name="&gt;&gt;toolStripMenuItem上書き保存.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </data>\r
+  <data name="labelDLEVEL.Size" type="System.Drawing.Size, System.Drawing">\r
+    <value>46, 12</value>\r
   </data>\r
   <data name="hScrollBar譜面用水平スクロールバー.ToolTip" xml:space="preserve">\r
     <value />\r
@@ -3620,6 +3683,9 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripMenuItemツール.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="&gt;&gt;tabPage基本情報.Parent" xml:space="preserve">\r
+    <value>tabControl情報パネル</value>\r
+  </data>\r
   <data name="toolStripButton貼り付け.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>23, 22</value>\r
   </data>\r
@@ -3663,14 +3729,14 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;pictureBox譜面パネル.Parent" xml:space="preserve">\r
     <value>splitContainerタブと譜面を分割.Panel2</value>\r
   </data>\r
-  <data name="&gt;&gt;toolStripWAVツールバー.Type" xml:space="preserve">\r
-    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  <data name="&gt;&gt;tooltoolStripMenuItemレーン内のすべてのチップの選択.Name" xml:space="preserve">\r
+    <value>tooltoolStripMenuItemレーン内のすべてのチップの選択</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripSeparator11.Name" xml:space="preserve">\r
     <value>toolStripSeparator11</value>\r
   </data>\r
-  <data name="toolStripMenuItem編集モード.Size" type="System.Drawing.Size, System.Drawing">\r
-    <value>185, 22</value>\r
+  <data name="&gt;&gt;columnHeaderBMP_BMP番号.Name" xml:space="preserve">\r
+    <value>columnHeaderBMP_BMP番号</value>\r
   </data>\r
   <data name="&gt;&gt;toolStripMenuItemガイド間隔8分.Name" xml:space="preserve">\r
     <value>toolStripMenuItemガイド間隔8分</value>\r
@@ -3696,6 +3762,9 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripMenuItem小節の削除.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
+  <data name="toolStripMenuItemガイド間隔32分.Text" xml:space="preserve">\r
+    <value>1/&amp;32</value>\r
+  </data>\r
   <data name="toolStripMenuItem選択モード.Text" xml:space="preserve">\r
     <value>&amp;Select mode</value>\r
   </data>\r
@@ -3711,6 +3780,9 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;labelGenre.Parent" xml:space="preserve">\r
     <value>tabPage基本情報</value>\r
   </data>\r
+  <data name="&gt;&gt;hScrollBarDLEVEL.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.HScrollBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
+  </data>\r
   <data name="toolStripMenuItem現在位置からBGMのみ再生.Text" xml:space="preserve">\r
     <value>Play &amp;BGM from current part</value>\r
   </data>\r
@@ -3822,8 +3894,8 @@ The image size is 640x480.</value>
   <data name="&gt;&gt;toolStripMenuItemヘルプ.Type" xml:space="preserve">\r
     <value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
-  <data name="&gt;&gt;columnHeaderBMP_BMP番号.Name" xml:space="preserve">\r
-    <value>columnHeaderBMP_BMP番号</value>\r
+  <data name="&gt;&gt;textBoxコメント.Type" xml:space="preserve">\r
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\r
   </data>\r
   <data name="toolStripButton編集モード.Size" type="System.Drawing.Size, System.Drawing">\r
     <value>23, 22</value>\r
@@ -3918,14 +3990,14 @@ The image size is 640x480.</value>
   <metadata name="statusStripステータスバー.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>0, 493</value>\r
   </metadata>\r
-  <metadata name="toolTipツールチップ.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
-    <value>572, 17</value>\r
+  <metadata name="contextMenuStrip譜面右メニュー.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
+    <value>203, 39</value>\r
   </metadata>\r
   <metadata name="toolStripBMPツールバー.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>3, 390</value>\r
   </metadata>\r
-  <metadata name="contextMenuStrip譜面右メニュー.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
-    <value>203, 39</value>\r
+  <metadata name="toolTipツールチップ.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
+    <value>572, 17</value>\r
   </metadata>\r
   <metadata name="toolStripツールバー.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
     <value>0, 24</value>\r
@@ -3940,7 +4012,7 @@ The image size is 640x480.</value>
     <value>0, 0</value>\r
   </metadata>\r
   <metadata name="toolStripAVIツールバー.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">\r
-    <value>3, 387</value>\r
+    <value>3, 390</value>\r
   </metadata>\r
   <metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">\r
     <value>Japanese (Japan)</value>\r
index 02a3d32..8779d8b 100644 (file)
@@ -6,7 +6,7 @@ namespace DTXCreator.UndoRedo
 {\r
        internal abstract class CUndoRedoセル仮想\r
        {\r
-               public E種別 eノード種別;\r
+               public E種別 eノード種別 = E種別.単独;\r
                public enum E種別\r
                {\r
                        単独,\r
index f243ed1..768012d 100644 (file)
@@ -195,6 +195,11 @@ namespace DTXCreator.WAV_BMP_AVI
                                }\r
                        }\r
                }\r
+               public string tファイル名を絶対パスで返す( int nWAV番号1to1295 )\r
+               {\r
+                       CWAV wc = this.WAVキャッシュ.tWAVをキャッシュから検索して返す( nWAV番号1to1295 );\r
+                       return this._Form.strファイルの存在するディレクトリを絶対パスで返す( wc.strファイル名 );\r
+               }\r
                public void tプレビュー音を再生する( CWAV wc )\r
                {\r
                        if( ( wc != null ) && ( wc.strファイル名.Length != 0 ) )\r
index fb09093..569afef 100644 (file)
@@ -7,7 +7,7 @@ namespace DTXCreator.譜面
        internal class Cクリップセル\r
        {\r
                public bool b貼り付け済;\r
-               public int nグループID;\r
+               //public int nグループID;\r
                public int nレーン番号 = -1;\r
                public int n位置grid;\r
                public Cチップ pチップ;\r
index 4f8e89b..32e3575 100644 (file)
@@ -111,12 +111,23 @@ namespace DTXCreator.譜面
                }\r
                public static void t表チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色 )\r
                {\r
-                       t表チップを描画する・本体( g, rcチップ描画領域, col色 );\r
-                       if( nチップ番号 >= 0 )\r
+                       t表チップを描画する( g, rcチップ描画領域, nチップ番号, col色, Cレーン.E種別.WAV );   // とにかくCレーン.E種別.BEAT以外を指定する\r
+               }\r
+               public static void t表チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色, Cレーン.E種別 e種別 )\r
+               {\r
+                       if ( e種別 == Cレーン.E種別.BEAT )\r
                        {\r
-                               string str = C変換.str数値を36進数2桁に変換して返す( nチップ番号 );\r
-                               str = str[ 0 ] + " " + str[ 1 ];\r
-                               t表チップを描画する・番号( g, rcチップ描画領域, str );\r
+                               t表チップを描画する・本体( g, rcチップ描画領域, col色, e種別 );\r
+                       }\r
+                       else\r
+                       {\r
+                               t表チップを描画する・本体( g, rcチップ描画領域, col色 );\r
+                               if ( nチップ番号 >= 0 )\r
+                               {\r
+                                       string str = C変換.str数値を36進数2桁に変換して返す( nチップ番号 );\r
+                                       str = str[ 0 ] + " " + str[ 1 ];\r
+                                       t表チップを描画する・番号( g, rcチップ描画領域, str );\r
+                               }\r
                        }\r
                }\r
                public static void t表チップを描画する( Graphics g, Rectangle rcチップ描画領域, float fチップ数値, Color col色 )\r
@@ -130,13 +141,27 @@ namespace DTXCreator.譜面
                }\r
                public static void t裏チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色 )\r
                {\r
-                       t裏チップを描画する・本体( g, rcチップ描画領域, col色 );\r
-                       if( nチップ番号 >= 0 )\r
+                       t裏チップを描画する( g, rcチップ描画領域, nチップ番号, col色, Cレーン.E種別.WAV );   // とにかくCレーン.E種別.BEAT以外を指定する\r
+               }\r
+               public static void t裏チップを描画する( Graphics g, Rectangle rcチップ描画領域, int nチップ番号, Color col色, Cレーン.E種別 e種別 )\r
+               {\r
+                       t裏チップを描画する・本体( g, rcチップ描画領域, col色, e種別 );\r
+\r
+                       if ( e種別 == Cレーン.E種別.BEAT )\r
                        {\r
-                               string str = C変換.str数値を36進数2桁に変換して返す( nチップ番号 );\r
-                               str = str[ 0 ] + " " + str[ 1 ];\r
-                               t裏チップを描画する・番号( g, rcチップ描画領域, str );\r
+                               t裏チップを描画する・本体( g, rcチップ描画領域, col色, e種別 );\r
                        }\r
+                       else\r
+                       {\r
+                               t裏チップを描画する・本体( g, rcチップ描画領域, col色 );\r
+                               if ( nチップ番号 >= 0 )\r
+                               {\r
+                                       string str = C変換.str数値を36進数2桁に変換して返す( nチップ番号 );\r
+                                       str = str[ 0 ] + " " + str[ 1 ];\r
+                                       t裏チップを描画する・番号( g, rcチップ描画領域, str );\r
+                               }\r
+                       }\r
+       \r
                }\r
                public static void t裏チップを描画する( Graphics g, Rectangle rcチップ描画領域, float fチップ数値, Color col色 )\r
                {\r
@@ -147,7 +172,6 @@ namespace DTXCreator.譜面
                                t裏チップを描画する・番号( g, rcチップ描画領域, str );\r
                        }\r
                }\r
-\r
                protected static Font ftチップ文字用フォント = new Font( "MS Gothic", 8f, FontStyle.Bold );\r
 \r
                #region [ private ]\r
@@ -159,35 +183,98 @@ namespace DTXCreator.譜面
 \r
                private static void t表チップを描画する・番号( Graphics g, Rectangle rcチップ描画領域, string str番号文字列 )\r
                {\r
-                       StringFormat format = new StringFormat();\r
-                       format.Alignment = StringAlignment.Center;\r
-                       format.LineAlignment = StringAlignment.Near;\r
-                       RectangleF layoutRectangle = new RectangleF();\r
-                       layoutRectangle.X = rcチップ描画領域.X;\r
-                       layoutRectangle.Y = rcチップ描画領域.Y + 1;\r
-                       layoutRectangle.Width = rcチップ描画領域.Width;\r
-                       layoutRectangle.Height = rcチップ描画領域.Height;\r
-                       g.DrawString( str番号文字列, ftチップ文字用フォント, Brushes.Black, layoutRectangle, format );\r
-                       layoutRectangle.X--;\r
-                       layoutRectangle.Y--;\r
-                       g.DrawString( str番号文字列, ftチップ文字用フォント, Brushes.White, layoutRectangle, format );\r
+                       tチップを描画する・番号( g, rcチップ描画領域, str番号文字列, false );\r
+               }\r
+\r
+               // BEATレーン専用; ●を書く\r
+               private static void t表チップを描画する・本体( Graphics g, Rectangle rcチップ描画領域, Color col色, Cレーン.E種別 e種別 )\r
+               {\r
+                       if ( e種別 == Cレーン.E種別.BEAT )\r
+                       {\r
+                               tチップを描画する・本体( g, rcチップ描画領域, col色, false, true );\r
+                       }\r
+                       else\r
+                       {\r
+                               tチップを描画する・本体( g, rcチップ描画領域, col色, false, false );\r
+                       }\r
                }\r
                private static void t表チップを描画する・本体( Graphics g, Rectangle rcチップ描画領域, Color col色 )\r
                {\r
-                       SolidBrush brush = new SolidBrush( Color.FromArgb( 0x80, col色.R, col色.G, col色.B ) );\r
-                       Pen pen = new Pen( Color.FromArgb( 0xff, col色.R, col色.G, col色.B ) );\r
-                       Pen pen2 = new Pen( Color.FromArgb( 0x40, col色.R, col色.G, col色.B ) );\r
+                       tチップを描画する・本体( g, rcチップ描画領域, col色, false, false );\r
+               }\r
+               private static void t裏チップを描画する・番号( Graphics g, Rectangle rcチップ描画領域, string str番号文字列 )\r
+               {\r
+                       tチップを描画する・番号( g, rcチップ描画領域, str番号文字列, true );\r
+               }\r
+\r
+               // BEATレーン専用; ●を書く\r
+               private static void t裏チップを描画する・本体( Graphics g, Rectangle rcチップ描画領域, Color col色, Cレーン.E種別 e種別 )\r
+               {\r
+                       if ( e種別 == Cレーン.E種別.BEAT )\r
+                       {\r
+                               tチップを描画する・本体( g, rcチップ描画領域, col色, true, true );\r
+                       }\r
+                       else\r
+                       {\r
+                               tチップを描画する・本体( g, rcチップ描画領域, col色, true, false );\r
+                       }\r
+               }\r
+               private static void t裏チップを描画する・本体( Graphics g, Rectangle rcチップ描画領域, Color col色 )\r
+               {\r
+                        tチップを描画する・本体( g, rcチップ描画領域, col色, true, false );\r
+               }\r
+\r
+               private static void tチップを描画する・本体( Graphics g, Rectangle rcチップ描画領域, Color col色, bool b裏チップである, bool bBEATチップである )\r
+               {\r
+                       int alphaBrush = 128;\r
+                       int alphaPen = 255;\r
+                       int alphaPen2 = 64;\r
+                       if ( b裏チップである )\r
+                       {\r
+                               rcチップ描画領域.Width -= 8;\r
+                               rcチップ描画領域.Height -= 2;\r
+                               rcチップ描画領域.X += 4;\r
+                               rcチップ描画領域.Y++;\r
+                               alphaBrush = 80;\r
+                               alphaPen = 180;\r
+                               alphaPen2 = 44;\r
+                       }\r
+                       SolidBrush brush = new SolidBrush( Color.FromArgb( alphaBrush, col色.R, col色.G, col色.B ) );\r
+                       Pen pen = new Pen( Color.FromArgb( alphaPen, col色.R, col色.G, col色.B ) );\r
+                       Pen pen2 = new Pen( Color.FromArgb( alphaPen2, col色.R, col色.G, col色.B ) );\r
                        g.FillRectangle( brush, rcチップ描画領域 );\r
                        g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
                        g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.X, rcチップ描画領域.Bottom );\r
                        g.DrawLine( pen2, rcチップ描画領域.X, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Bottom );\r
                        g.DrawLine( pen2, rcチップ描画領域.Right, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
+                       if ( bBEATチップである )\r
+                       {\r
+                               SolidBrush brushWhite = new SolidBrush( Color.White );\r
+                               g.FillEllipse(\r
+                                       brushWhite,\r
+                                       ( rcチップ描画領域.X + rcチップ描画領域.Width / 2.0f ) - ( rcチップ描画領域.Height / 2.0f ),\r
+                                       ( rcチップ描画領域.Y ),\r
+                                       rcチップ描画領域.Height,\r
+                                       rcチップ描画領域.Height\r
+                               );\r
+                               brushWhite.Dispose();\r
+\r
+                               if ( b裏チップである )\r
+                               {\r
+                                       Pen pen3 = new Pen( Color.White );\r
+                                       g.DrawLine( pen3, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.X + rcチップ描画領域.Width, rcチップ描画領域.Y + rcチップ描画領域.Height );\r
+                                       g.DrawLine( pen3, rcチップ描画領域.X, rcチップ描画領域.Y + rcチップ描画領域.Height, rcチップ描画領域.X + rcチップ描画領域.Width, rcチップ描画領域.Y );\r
+                                       pen3.Dispose();\r
+                               }\r
+                       }\r
                        brush.Dispose();\r
                        pen.Dispose();\r
                        pen2.Dispose();\r
                }\r
-               private static void t裏チップを描画する・番号( Graphics g, Rectangle rcチップ描画領域, string str番号文字列 )\r
+               private static void tチップを描画する・番号( Graphics g, Rectangle rcチップ描画領域, string str番号文字列, bool b裏チップである )\r
                {\r
+                       // 表裏に関係なく、番号描画は共通\r
+\r
                        StringFormat format = new StringFormat();\r
                        format.Alignment = StringAlignment.Center;\r
                        format.LineAlignment = StringAlignment.Near;\r
@@ -201,24 +288,6 @@ namespace DTXCreator.譜面
                        layoutRectangle.Y--;\r
                        g.DrawString( str番号文字列, ftチップ文字用フォント, Brushes.White, layoutRectangle, format );\r
                }\r
-               private static void t裏チップを描画する・本体( Graphics g, Rectangle rcチップ描画領域, Color col色 )\r
-               {\r
-                       rcチップ描画領域.Width -= 8;\r
-                       rcチップ描画領域.Height -= 2;\r
-                       rcチップ描画領域.X += 4;\r
-                       rcチップ描画領域.Y++;\r
-                       SolidBrush brush = new SolidBrush( Color.FromArgb( 80, col色.R, col色.G, col色.B ) );\r
-                       Pen pen = new Pen( Color.FromArgb( 180, col色.R, col色.G, col色.B ) );\r
-                       Pen pen2 = new Pen( Color.FromArgb( 0x2c, col色.R, col色.G, col色.B ) );\r
-                       g.FillRectangle( brush, rcチップ描画領域 );\r
-                       g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
-                       g.DrawLine( pen, rcチップ描画領域.X, rcチップ描画領域.Y, rcチップ描画領域.X, rcチップ描画領域.Bottom );\r
-                       g.DrawLine( pen2, rcチップ描画領域.X, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Bottom );\r
-                       g.DrawLine( pen2, rcチップ描画領域.Right, rcチップ描画領域.Bottom, rcチップ描画領域.Right, rcチップ描画領域.Y );\r
-                       brush.Dispose();\r
-                       pen.Dispose();\r
-                       pen2.Dispose();\r
-               }\r
                //-----------------\r
                #endregion\r
        }\r
index 31234bb..f983997 100644 (file)
@@ -12,6 +12,7 @@ namespace DTXCreator.譜面
                public enum E種別\r
                {\r
                        BPM,\r
+                       BEAT,\r
                        WAV,\r
                        BMP,\r
                        AVI,\r
@@ -30,6 +31,7 @@ namespace DTXCreator.譜面
                public enum ELaneType\r
                {\r
                        BPM,\r
+                       Beat,\r
                        Drums,\r
                        BGM,\r
                        SE1_5,\r
index 0dd2a82..2ff7f03 100644 (file)
@@ -19,7 +19,8 @@ namespace DTXCreator.譜面
                }\r
                internal void MouseClick( MouseEventArgs e )\r
                {\r
-                       if( e.Y < ( C譜面管理.nレーン割付チップ番号表示高さdot + 10 ) )\r
+                       #region [ レーン割り付け ]\r
+                       if ( e.Y < ( C譜面管理.nレーン割付チップ番号表示高さdot + 10 ) )\r
                        {\r
                                Cレーン lc = this.mgr譜面管理者ref.listレーン[ this.n現在のチップカーソルがあるレーン番号0to ];\r
                                if( ( ( ( lc.eレーン種別 == Cレーン.E種別.GtR ) || ( lc.eレーン種別 == Cレーン.E種別.GtG ) ) || ( ( lc.eレーン種別 == Cレーン.E種別.GtB ) || ( lc.eレーン種別 == Cレーン.E種別.BsR ) ) ) || ( ( lc.eレーン種別 == Cレーン.E種別.BsG ) || ( lc.eレーン種別 == Cレーン.E種別.BsB ) ) )\r
@@ -51,6 +52,7 @@ namespace DTXCreator.譜面
                                        }\r
                                }\r
                        }\r
+                       #endregion\r
                        else\r
                        {\r
                                this.tチップの配置または削除( e );\r
@@ -129,8 +131,8 @@ namespace DTXCreator.譜面
                        if( ( this.rc現在のチップカーソル領域.Width > 0 ) && ( this.rc現在のチップカーソル領域.Height > 0 ) )\r
                        {\r
                                Cレーン cレーン = this.mgr譜面管理者ref.listレーン[ this.n現在のチップカーソルがあるレーン番号0to ];\r
-                               bool flag = ( Control.ModifierKeys & Keys.Control ) == Keys.Control;\r
-                               int num = -1;\r
+                               bool bCtrl押下中 = ( Control.ModifierKeys & Keys.Control ) == Keys.Control;\r
+                               int nチップ番号 = -1;\r
                                switch( cレーン.eレーン種別 )\r
                                {\r
                                        case Cレーン.E種別.GtR:\r
@@ -140,28 +142,31 @@ namespace DTXCreator.譜面
                                        case Cレーン.E種別.BsG:\r
                                        case Cレーン.E種別.BsB:\r
                                        case Cレーン.E種別.BPM:\r
-                                               num = -1;\r
+                                               nチップ番号 = -1;\r
                                                break;\r
 \r
+                                       case Cレーン.E種別.BEAT:           // BEATレーンはユーザー設置禁止のため、チップカーソルも表示しない\r
+                                               return;\r
+\r
                                        default:\r
-                                               num = this._Form.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 + 1;\r
-                                               if( ( Control.ModifierKeys & Keys.Shift ) != Keys.Shift )\r
+                                               nチップ番号 = this._Form.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 + 1;\r
+                                               if( ( Control.ModifierKeys & Keys.Shift ) != Keys.Shift )       // Shift非押下中\r
                                                {\r
-                                                       int num2 = flag ? cレーン.nレーン割付チップ・裏0or1to1295 : cレーン.nレーン割付チップ・表0or1to1295;\r
-                                                       if( num2 != 0 )\r
+                                                       int nチップ番号・レーン割り付け = bCtrl押下中 ? cレーン.nレーン割付チップ・裏0or1to1295 : cレーン.nレーン割付チップ・表0or1to1295;\r
+                                                       if( nチップ番号・レーン割り付け != 0 )\r
                                                        {\r
-                                                               num = num2;\r
+                                                               nチップ番号 = nチップ番号・レーン割り付け;\r
                                                        }\r
                                                }\r
                                                break;\r
                                }\r
-                               if( !flag )\r
+                               if( !bCtrl押下中 )\r
                                {\r
-                                       Cチップ.t表チップを描画する( g, this.rc現在のチップカーソル領域, num, cレーン.col背景色 );\r
+                                       Cチップ.t表チップを描画する( g, this.rc現在のチップカーソル領域, nチップ番号, cレーン.col背景色, cレーン.eレーン種別 );\r
                                }\r
                                else\r
                                {\r
-                                       Cチップ.t裏チップを描画する( g, this.rc現在のチップカーソル領域, num, cレーン.col背景色 );\r
+                                       Cチップ.t裏チップを描画する( g, this.rc現在のチップカーソル領域, nチップ番号, cレーン.col背景色, cレーン.eレーン種別 );\r
                                }\r
                                Cチップ.tチップの周囲の太枠を描画する( g, this.rc現在のチップカーソル領域 );\r
                        }\r
@@ -172,34 +177,42 @@ namespace DTXCreator.譜面
                        {\r
                                if( e.Button == MouseButtons.Left )\r
                                {\r
-                                       bool flag = ( Control.ModifierKeys & Keys.Control ) == Keys.Control;\r
-                                       bool flag2 = ( Control.ModifierKeys & Keys.Shift ) == Keys.Shift;\r
+                                       bool bCtrl押下中 = ( Control.ModifierKeys & Keys.Control ) == Keys.Control;\r
+                                       bool bShift押下中 = ( Control.ModifierKeys & Keys.Shift ) == Keys.Shift;\r
                                        Cレーン cレーン = this.mgr譜面管理者ref.listレーン[ this.n現在のチップカーソルがあるレーン番号0to ];\r
-                                       if( cレーン.eレーン種別 != Cレーン.E種別.BPM )\r
+                                       int nチップ番号・レーン割り付け = bCtrl押下中 ? cレーン.nレーン割付チップ・裏0or1to1295 : cレーン.nレーン割付チップ・表0or1to1295;\r
+                                       switch ( cレーン.eレーン種別 )\r
                                        {\r
-                                               if( ( cレーン.eレーン種別 == Cレーン.E種別.GtV ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsV ) )\r
-                                               {\r
-                                                       int num5 = flag ? cレーン.nレーン割付チップ・裏0or1to1295 : cレーン.nレーン割付チップ・表0or1to1295;\r
-                                                       if( ( num5 == 0 ) || flag2 )\r
+                                               #region [ GtV/BsVレーン ]\r
+                                               case Cレーン.E種別.GtV:\r
+                                               case Cレーン.E種別.BsV:\r
+                                                       // int nチップ番号・レーン割り付け = bCtrl押下中 ? cレーン.nレーン割付チップ・裏0or1to1295 : cレーン.nレーン割付チップ・表0or1to1295;\r
+                                                       if ( ( nチップ番号・レーン割り付け == 0 ) || bShift押下中 )\r
                                                        {\r
-                                                               num5 = this._Form.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 + 1;\r
+                                                               nチップ番号・レーン割り付け = this._Form.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 + 1;\r
                                                        }\r
                                                        this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
-                                                       this.mgr譜面管理者ref.tチップを配置または置換する( this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, num5, 0f, flag );\r
+                                                       this.mgr譜面管理者ref.tチップを配置または置換する( this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, nチップ番号・レーン割り付け, 0f, bCtrl押下中 );\r
                                                        if( this.b指定位置にRGBチップがひとつもない( this.n現在のチップカーソルの譜面先頭からの位置grid, this.n現在のチップカーソルがあるレーン番号0to + 1, this.n現在のチップカーソルがあるレーン番号0to + 2, this.n現在のチップカーソルがあるレーン番号0to + 3 ) )\r
                                                        {\r
                                                                this.mgr譜面管理者ref.tチップを配置または置換する( this.n現在のチップカーソルがあるレーン番号0to + 1, this.n現在のチップカーソルの譜面先頭からの位置grid, 2, 0f, false );\r
                                                        }\r
                                                        this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する();\r
-                                               }\r
-                                               else if( ( ( cレーン.eレーン種別 == Cレーン.E種別.GtR ) || ( cレーン.eレーン種別 == Cレーン.E種別.GtG ) ) || ( cレーン.eレーン種別 == Cレーン.E種別.GtB ) )\r
-                                               {\r
-                                                       if( flag )\r
+                                                       break;\r
+                                               #endregion\r
+                                               #region [ Guitar R/G/B, Bass R/G/B レーン ]\r
+                                               case Cレーン.E種別.GtR:\r
+                                               case Cレーン.E種別.GtG:\r
+                                               case Cレーン.E種別.GtB:\r
+                                               case Cレーン.E種別.BsR:\r
+                                               case Cレーン.E種別.BsG:\r
+                                               case Cレーン.E種別.BsB:\r
+                                                       if( bCtrl押下中 )\r
                                                        {\r
                                                                for( int i = 0; i < this.mgr譜面管理者ref.listレーン.Count; i++ )\r
                                                                {\r
                                                                        Cレーン cレーン2 = this.mgr譜面管理者ref.listレーン[ i ];\r
-                                                                       if( cレーン2.eレーン種別 == Cレーン.E種別.GtR )\r
+                                                                       if( cレーン2.eレーン種別 == Cレーン.E種別.GtR || cレーン2.eレーン種別 == Cレーン.E種別.BsR )\r
                                                                        {\r
                                                                                this.mgr譜面管理者ref.tチップを配置または置換する( i, this.n現在のチップカーソルの譜面先頭からの位置grid, 2, 0f, false );\r
                                                                                break;\r
@@ -210,86 +223,59 @@ namespace DTXCreator.譜面
                                                        {\r
                                                                this.mgr譜面管理者ref.tチップを配置または置換する( this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, 1, 0f, false );\r
                                                        }\r
-                                               }\r
-                                               else if( ( ( cレーン.eレーン種別 == Cレーン.E種別.BsR ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsG ) ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsB ) )\r
-                                               {\r
-                                                       if( flag )\r
+                                                       break;\r
+                                               #endregion\r
+                                               #region [ BPMレーン ]\r
+                                               case Cレーン.E種別.BPM:\r
+                                                       #region [ ダイアログでBPM値を入力させる ]\r
+                                                       this._Form.dlgチップパレット.t一時的に隠蔽する();\r
+                                                       C数値入力ダイアログ c数値入力ダイアログ = new C数値入力ダイアログ( this.mgr譜面管理者ref.dc譜面先頭からの位置gridにおけるBPMを返す( this.n現在のチップカーソルの譜面先頭からの位置grid ), 0.0001M, 1000M, Resources.strBPM選択ダイアログの説明文 );\r
+                                                       Point point = this._Form.pictureBox譜面パネル.PointToScreen( new Point( e.X, e.Y ) );\r
+                                                       c数値入力ダイアログ.Left = point.X - ( c数値入力ダイアログ.Width / 2 );\r
+                                                       c数値入力ダイアログ.Top = point.Y + 4;\r
+                                                       DialogResult result = c数値入力ダイアログ.ShowDialog();\r
+                                                       this._Form.dlgチップパレット.t一時的な隠蔽を解除する();\r
+                                                       if ( result != DialogResult.OK )\r
                                                        {\r
-                                                               for( int j = 0; j < this.mgr譜面管理者ref.listレーン.Count; j++ )\r
-                                                               {\r
-                                                                       Cレーン cレーン3 = this.mgr譜面管理者ref.listレーン[ j ];\r
-                                                                       if( cレーン3.eレーン種別 == Cレーン.E種別.BsR )\r
-                                                                       {\r
-                                                                               this.mgr譜面管理者ref.tチップを配置または置換する( j, this.n現在のチップカーソルの譜面先頭からの位置grid, 2, 0f, false );\r
-                                                                               break;\r
-                                                                       }\r
-                                                               }\r
+                                                               return;\r
                                                        }\r
-                                                       else\r
-                                                       {\r
-                                                               this.mgr譜面管理者ref.tチップを配置または置換する( this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, 1, 0f, false );\r
-                                                       }\r
-                                               }\r
-                                               else\r
-                                               {\r
-                                                       int num8 = flag ? cレーン.nレーン割付チップ・裏0or1to1295 : cレーン.nレーン割付チップ・表0or1to1295;\r
-                                                       if( ( num8 == 0 ) || flag2 )\r
-                                                       {\r
-                                                               num8 = this._Form.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 + 1;\r
-                                                       }\r
-                                                       this.mgr譜面管理者ref.tチップを配置または置換する( this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, num8, 0f, flag );\r
-                                               }\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               this._Form.dlgチップパレット.t一時的に隠蔽する();\r
-                                               C数値入力ダイアログ c数値入力ダイアログ = new C数値入力ダイアログ( this.mgr譜面管理者ref.dc譜面先頭からの位置gridにおけるBPMを返す( this.n現在のチップカーソルの譜面先頭からの位置grid ), 0.0001M, 1000M, Resources.strBPM選択ダイアログの説明文 );\r
-                                               Point point = this._Form.pictureBox譜面パネル.PointToScreen( new Point( e.X, e.Y ) );\r
-                                               c数値入力ダイアログ.Left = point.X - ( c数値入力ダイアログ.Width / 2 );\r
-                                               c数値入力ダイアログ.Top = point.Y + 4;\r
-                                               DialogResult result = c数値入力ダイアログ.ShowDialog();\r
-                                               this._Form.dlgチップパレット.t一時的な隠蔽を解除する();\r
-                                               if( result != DialogResult.OK )\r
-                                               {\r
-                                                       return;\r
-                                               }\r
-                                               float num = (float) c数値入力ダイアログ.dc数値;\r
-                                               int key = -1;\r
-                                               foreach( KeyValuePair<int, float> pair in this.mgr譜面管理者ref.dicBPx )\r
-                                               {\r
-                                                       if( pair.Value == num )\r
-                                                       {\r
-                                                               key = pair.Key;\r
-                                                               break;\r
-                                                       }\r
-                                               }\r
-                                               if( key == -1 )\r
-                                               {\r
-                                                       for( int k = 1; k < 36 * 36; k++ )\r
+                                                       #endregion\r
+                                                       float fBPM = ( float ) c数値入力ダイアログ.dc数値;\r
+\r
+                                                       tBPMチップを配置する( n現在のチップカーソルの譜面先頭からの位置grid, fBPM );\r
+                                                       break;\r
+                                               #endregion\r
+                                               #region [ Beatレーン ]\r
+                                               case Cレーン.E種別.BEAT:\r
+                                                       // BEATレーンに対しては、クリック押下でのチップ設置は禁止\r
+                                                       break;\r
+                                               #endregion\r
+                                               #region [ その他通常チップ ]\r
+                                               default:\r
+                                                       //int nチップ番号・レーン割り付け = bCtrl押下中 ? cレーン.nレーン割付チップ・裏0or1to1295 : cレーン.nレーン割付チップ・表0or1to1295;\r
+                                                       if( ( nチップ番号・レーン割り付け == 0 ) || bShift押下中 )\r
                                                        {\r
-                                                               if( !this.mgr譜面管理者ref.dicBPx.ContainsKey( k ) )\r
-                                                               {\r
-                                                                       this.mgr譜面管理者ref.dicBPx.Add( k, num );\r
-                                                                       key = k;\r
-                                                                       break;\r
-                                                               }\r
+                                                               nチップ番号・レーン割り付け = this._Form.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 + 1;\r
                                                        }\r
-                                               }\r
-                                               this.mgr譜面管理者ref.tチップを配置または置換する( this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, key, num, false );\r
+                                                       this.mgr譜面管理者ref.tチップを配置または置換する( this.n現在のチップカーソルがあるレーン番号0to, this.n現在のチップカーソルの譜面先頭からの位置grid, nチップ番号・レーン割り付け, 0f, bCtrl押下中 );\r
+                                                       break;\r
+                                               #endregion\r
                                        }\r
-                                       if( this._Form.appアプリ設定.PlaySoundOnWAVChipAllocated && ( ( ( cレーン.eレーン種別 == Cレーン.E種別.WAV ) || ( cレーン.eレーン種別 == Cレーン.E種別.GtV ) ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsV ) ) )\r
+                                       #region [ 必要に応じて、プレビュー音を再生する ]\r
+                                       if ( this._Form.appアプリ設定.PlaySoundOnWAVChipAllocated && ( ( ( cレーン.eレーン種別 == Cレーン.E種別.WAV ) || ( cレーン.eレーン種別 == Cレーン.E種別.GtV ) ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsV ) ) )\r
                                        {\r
-                                               int num9 = flag ? cレーン.nレーン割付チップ・裏0or1to1295 : cレーン.nレーン割付チップ・表0or1to1295;\r
-                                               if( ( num9 == 0 ) || flag2 )\r
+                                               int nWAV番号1to1295 = bCtrl押下中 ? cレーン.nレーン割付チップ・裏0or1to1295 : cレーン.nレーン割付チップ・表0or1to1295;\r
+                                               if( ( nWAV番号1to1295 == 0 ) || bShift押下中 )\r
                                                {\r
-                                                       num9 = this._Form.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 + 1;\r
+                                                       nWAV番号1to1295 = this._Form.n現在選択中のWAV・BMP・AVIリストの行番号0to1294 + 1;\r
                                                }\r
-                                               CWAV wc = this._Form.mgrWAVリスト管理者.tWAVをキャッシュから検索して返す( num9 );\r
+                                               CWAV wc = this._Form.mgrWAVリスト管理者.tWAVをキャッシュから検索して返す( nWAV番号1to1295 );\r
                                                if( ( wc != null ) && ( !this._Form.appアプリ設定.NoPreviewBGM || !wc.bBGMとして使用 ) )\r
                                                {\r
                                                        this._Form.mgrWAVリスト管理者.tプレビュー音を再生する( wc );\r
                                                }\r
                                        }\r
+                                       #endregion\r
                                }\r
                                if( e.Button == MouseButtons.Right )\r
                                {\r
@@ -297,6 +283,70 @@ namespace DTXCreator.譜面
                                }\r
                        }\r
                }\r
+\r
+               // tチップの配置または削除() から株分け\r
+               public void tBPMチップを配置する( int _n現在のチップカーソルの譜面先頭からの位置grid, float BPM )\r
+               {\r
+                       int key = -1;\r
+                       foreach ( KeyValuePair<int, float> pair in this.mgr譜面管理者ref.dicBPx )\r
+                       {\r
+                               if ( pair.Value == BPM )\r
+                               {\r
+                                       key = pair.Key;\r
+                                       break;\r
+                               }\r
+                       }\r
+                       if ( key == -1 )\r
+                       {\r
+                               for ( int k = 1; k < 36 * 36; k++ )\r
+                               {\r
+                                       if ( !this.mgr譜面管理者ref.dicBPx.ContainsKey( k ) )\r
+                                       {\r
+                                               this.mgr譜面管理者ref.dicBPx.Add( k, BPM );\r
+                                               key = k;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       this.n現在のチップカーソルがあるレーン番号0to = this.mgr譜面管理者ref.nレーン名に対応するレーン番号を返す( "BPM" );\r
+                       this.n現在のチップカーソルの譜面先頭からの位置grid = _n現在のチップカーソルの譜面先頭からの位置grid;\r
+\r
+                       this.mgr譜面管理者ref.tチップを配置または置換する(\r
+                               this.n現在のチップカーソルがあるレーン番号0to,\r
+                               this.n現在のチップカーソルの譜面先頭からの位置grid,\r
+                               key,\r
+                               BPM,\r
+                               false\r
+                       );\r
+               }\r
+\r
+               public void tBeatチップを配置する( int _n現在のチップカーソルの譜面先頭からの位置grid, int index, float fBeatTime, bool b裏として配置 )\r
+               {\r
+                       this.n現在のチップカーソルがあるレーン番号0to = this.mgr譜面管理者ref.nレーン名に対応するレーン番号を返す( "BEAT" );\r
+                       this.n現在のチップカーソルの譜面先頭からの位置grid = _n現在のチップカーソルの譜面先頭からの位置grid;\r
+\r
+                       this.mgr譜面管理者ref.tチップを配置または置換する(\r
+                               this.n現在のチップカーソルがあるレーン番号0to,\r
+                               this.n現在のチップカーソルの譜面先頭からの位置grid,\r
+                               index,\r
+                               fBeatTime,\r
+                               b裏として配置\r
+                       );\r
+               }\r
+               public void tHHチップを配置する( int _n現在のチップカーソルの譜面先頭からの位置grid, int index, bool b裏として配置 )\r
+               {\r
+                       this.n現在のチップカーソルがあるレーン番号0to = this.mgr譜面管理者ref.nレーン名に対応するレーン番号を返す( "HH" );\r
+                       this.n現在のチップカーソルの譜面先頭からの位置grid = _n現在のチップカーソルの譜面先頭からの位置grid;\r
+\r
+                       this.mgr譜面管理者ref.tチップを配置または置換する(\r
+                               this.n現在のチップカーソルがあるレーン番号0to,\r
+                               this.n現在のチップカーソルの譜面先頭からの位置grid,\r
+                               index,\r
+                               0,\r
+                               b裏として配置\r
+                       );\r
+               }\r
                private void tレーン割付のRedo( Cレーン割付用UndoRedo lur変更前, Cレーン割付用UndoRedo lur変更後 )\r
                {\r
                        if( !lur変更前.b裏 )\r
index bf3dc0e..96b87e9 100644 (file)
@@ -262,56 +262,73 @@ namespace DTXCreator.譜面
                        C小節 c小節 = this.p譜面先頭からの位置gridを含む小節を返す( n譜面先頭からの位置grid );\r
                        if( c小節 != null )\r
                        {\r
-                               bool flag3;\r
+                               bool b削除完了;\r
                                int num = n譜面先頭からの位置grid - this.n譜面先頭からみた小節先頭の位置gridを返す( c小節.n小節番号0to3599 );\r
                                this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
+                               int laneBEAT = this._Form.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "BEAT" );\r
                                do\r
                                {\r
                                        Cレーン cレーン = this.listレーン[ nレーン番号0to ];\r
-                                       bool flag = ( ( cレーン.eレーン種別 == Cレーン.E種別.GtR ) || ( cレーン.eレーン種別 == Cレーン.E種別.GtG ) ) || ( cレーン.eレーン種別 == Cレーン.E種別.GtB );\r
-                                       bool flag2 = ( ( cレーン.eレーン種別 == Cレーン.E種別.BsR ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsG ) ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsB );\r
-                                       flag3 = true;\r
+                                       bool bRGBGuitar = ( ( cレーン.eレーン種別 == Cレーン.E種別.GtR ) || ( cレーン.eレーン種別 == Cレーン.E種別.GtG ) ) || ( cレーン.eレーン種別 == Cレーン.E種別.GtB );\r
+                                       bool bRGBBass = ( ( cレーン.eレーン種別 == Cレーン.E種別.BsR ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsG ) ) || ( cレーン.eレーン種別 == Cレーン.E種別.BsB );\r
+                                       b削除完了 = true;\r
                                        foreach( Cチップ cチップ in c小節.listチップ )\r
                                        {\r
                                                if( cチップ.n位置grid == num )\r
                                                {\r
+                                                       //cチップ.nチャンネル番号00toFF = 0xF3;                       // 裏チップにする (表は0xF8)\r
+                                                       //cチップ.b裏 = true;\r
                                                        if( cチップ.nレーン番号0to == nレーン番号0to )\r
                                                        {\r
                                                                Cチップ cc = new Cチップ();\r
                                                                cc.tコピーfrom( cチップ );\r
                                                                Cチップ配置用UndoRedo redo = new Cチップ配置用UndoRedo( c小節.n小節番号0to3599, cc );\r
                                                                this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ配置用UndoRedo>( null, new DGUndoを実行する<Cチップ配置用UndoRedo>( this.tチップ削除のUndo ), new DGRedoを実行する<Cチップ配置用UndoRedo>( this.tチップ削除のRedo ), redo, redo ) );\r
-                                                               c小節.listチップ.Remove( cチップ );\r
-                                                               flag3 = false;\r
+\r
+                                                               #region [ チップオブジェクトを削除する。ただしBEATオブジェクトは削除禁止。裏に回すだけ。]\r
+                                                               if ( cチップ.nレーン番号0to != laneBEAT )\r
+                                                               {\r
+                                                                       c小節.listチップ.Remove( cチップ );\r
+                                                                       b削除完了 = false;\r
+                                                               }\r
+                                                               else\r
+                                                               {\r
+                                                                       int p = c小節.listチップ.IndexOf( cチップ );\r
+                                                                       cチップ.nチャンネル番号00toFF = (cチップ.b裏)? 0xF3 : 0xF8;               // 表裏反転\r
+                                                                       cチップ.b裏 = !cチップ.b裏;\r
+                                                                       c小節.listチップ[ p ] = cチップ;\r
+                                                               }\r
                                                                this._Form.b未保存 = true;\r
+                                                               #endregion\r
+\r
                                                                break;\r
                                                        }\r
-                                                       if( ( flag && ( this.listレーン[ cチップ.nレーン番号0to ].eレーン種別 == Cレーン.E種別.GtR ) ) && ( cチップ.n値・整数1to1295 == 2 ) )\r
+                                                       if( ( bRGBGuitar && ( this.listレーン[ cチップ.nレーン番号0to ].eレーン種別 == Cレーン.E種別.GtR ) ) && ( cチップ.n値・整数1to1295 == 2 ) )\r
                                                        {\r
                                                                Cチップ cチップ3 = new Cチップ();\r
                                                                cチップ3.tコピーfrom( cチップ );\r
                                                                Cチップ配置用UndoRedo redo2 = new Cチップ配置用UndoRedo( c小節.n小節番号0to3599, cチップ3 );\r
                                                                this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ配置用UndoRedo>( null, new DGUndoを実行する<Cチップ配置用UndoRedo>( this.tチップ削除のUndo ), new DGRedoを実行する<Cチップ配置用UndoRedo>( this.tチップ削除のRedo ), redo2, redo2 ) );\r
                                                                c小節.listチップ.Remove( cチップ );\r
-                                                               flag3 = false;\r
+                                                               b削除完了 = false;\r
                                                                this._Form.b未保存 = true;\r
                                                                break;\r
                                                        }\r
-                                                       if( ( flag2 && ( this.listレーン[ cチップ.nレーン番号0to ].eレーン種別 == Cレーン.E種別.BsR ) ) && ( cチップ.n値・整数1to1295 == 2 ) )\r
+                                                       if( ( bRGBBass && ( this.listレーン[ cチップ.nレーン番号0to ].eレーン種別 == Cレーン.E種別.BsR ) ) && ( cチップ.n値・整数1to1295 == 2 ) )\r
                                                        {\r
                                                                Cチップ cチップ4 = new Cチップ();\r
                                                                cチップ4.tコピーfrom( cチップ );\r
                                                                Cチップ配置用UndoRedo redo3 = new Cチップ配置用UndoRedo( c小節.n小節番号0to3599, cチップ4 );\r
                                                                this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ配置用UndoRedo>( null, new DGUndoを実行する<Cチップ配置用UndoRedo>( this.tチップ削除のUndo ), new DGRedoを実行する<Cチップ配置用UndoRedo>( this.tチップ削除のRedo ), redo3, redo3 ) );\r
                                                                c小節.listチップ.Remove( cチップ );\r
-                                                               flag3 = false;\r
+                                                               b削除完了 = false;\r
                                                                this._Form.b未保存 = true;\r
                                                                break;\r
                                                        }\r
                                                }\r
                                        }\r
                                }\r
-                               while( !flag3 );\r
+                               while( !b削除完了 );\r
                                this._Form.tUndoRedo用GUIの有効・無効を設定する();\r
                                this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する();\r
                        }\r
@@ -750,6 +767,7 @@ namespace DTXCreator.譜面
                        int alpha = 0x19;\r
 \r
                        this.listレーン.Add( new Cレーン( Cレーン.E種別.BPM, "BPM", 0x08, 0x03, true, Color.FromArgb( alpha, 160, 160, 160 ), 0, width, Cレーン.ELaneType.BPM, true ) );\r
+                       this.listレーン.Add( new Cレーン( Cレーン.E種別.BEAT, "BEAT", 0xF8, 0xF3, true, Color.FromArgb( alpha, 160, 160, 160 ), 0, width, Cレーン.ELaneType.Beat, true ) );\r
 \r
                        this.listレーン.Add( new Cレーン( Cレーン.E種別.WAV, "LC",  0x1a, 0x1a, true,  Color.FromArgb( alpha, 0, 0xff, 0xff ), 0, width, Cレーン.ELaneType.Drums, true ) );\r
                        this.listレーン.Add( new Cレーン( Cレーン.E種別.WAV, "HH",  0x11, 0x18, false, Color.FromArgb( alpha, 0, 0xff, 0xff ), 0, width, Cレーン.ELaneType.Drums, true ) );\r
@@ -925,6 +943,10 @@ namespace DTXCreator.譜面
                                                        Cチップ.t表チップを描画する( g, rectangle, cチップ.f値・浮動小数, cレーン.col背景色 );\r
                                                        break;\r
 \r
+                                               case Cレーン.E種別.BEAT:\r
+                                                       Cチップ.t表チップを描画する( g, rectangle, cチップ.n値・整数1to1295, cレーン.col背景色, Cレーン.E種別.BEAT );\r
+                                                       break;\r
+\r
                                                default:\r
                                                        Cチップ.t表チップを描画する( g, rectangle, cチップ.n値・整数1to1295, cレーン.col背景色 );\r
                                                        break;\r
@@ -934,6 +956,10 @@ namespace DTXCreator.譜面
                                {\r
                                        Cチップ.t裏チップを描画する( g, rectangle, cチップ.f値・浮動小数, cレーン.col背景色 );\r
                                }\r
+                               else if ( cレーン.eレーン種別 == Cレーン.E種別.BEAT )\r
+                               {\r
+                                       Cチップ.t裏チップを描画する( g, rectangle, cチップ.n値・整数1to1295, cレーン.col背景色, Cレーン.E種別.BEAT );\r
+                               }\r
                                else\r
                                {\r
                                        Cチップ.t裏チップを描画する( g, rectangle, cチップ.n値・整数1to1295, cレーン.col背景色 );\r
index 19aaacb..9ad766b 100644 (file)
@@ -117,14 +117,22 @@ namespace DTXCreator.譜面
                        this._Form.t選択チップの有無に応じて編集用GUIの有効・無効を設定する();\r
                        this._Form.pictureBox譜面パネル.Refresh();\r
                }\r
-               public void tレーン上の全チップを選択する( int lane )                     // #32134 2013.9.29 suggested by beatme\r
+               public void tレーン上の全チップを選択する( int lane )\r
                {\r
+                       tレーン上の全チップを選択する( lane, 0 );\r
+               }\r
+               public void tレーン上の全チップを選択する( int lane, int fromBAR )                        // #32134 2013.9.29 suggested by beatme\r
+               {                                                                                                                                                       // fromBAR: 開始小節\r
                        // Debug.WriteLine( "laneno=" + lane + " " + this.mgr譜面管理者ref.listレーン[ lane ].strレーン名 );\r
 \r
                        this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
                        foreach ( KeyValuePair<int, C小節> pair in this.mgr譜面管理者ref.dic小節 )\r
                        {\r
                                C小節 c小節 = pair.Value;\r
+                               if ( c小節.n小節番号0to3599 < fromBAR )\r
+                               {\r
+                                       continue;\r
+                               }\r
                                for ( int i = 0; i < c小節.listチップ.Count; i++ )\r
                                {\r
                                        Cチップ cチップ = c小節.listチップ[ i ];\r
@@ -170,10 +178,21 @@ namespace DTXCreator.譜面
                }\r
                internal void MouseClick( MouseEventArgs e )\r
                {\r
-                       if( e.Button == MouseButtons.Right )\r
+                       if ( e.Button == MouseButtons.Right )\r
                        {\r
                                this._Form.t選択モードのコンテクストメニューを表示する( e.X, e.Y );\r
                        }\r
+                       else\r
+                       {       // BEATレーンに限り、左クリックで裏表切り替え\r
+                               if ( this.pt現在のドラッグ開始位置dot.X == e.X && this.pt現在のドラッグ開始位置dot.Y == e.Y )\r
+                               {\r
+                                       int n現在のチップカーソルがあるレーン番号0to = this.mgr譜面管理者ref.nX座標dotが位置するレーン番号を返す( e.X );\r
+                                       if ( n現在のチップカーソルがあるレーン番号0to == this.mgr譜面管理者ref.nレーン名に対応するレーン番号を返す( "BEAT" ) )\r
+                                       {\r
+                                               t選択チップを表裏反転置換する( false );\r
+                                       }\r
+                               }\r
+                       }\r
                }\r
                internal void MouseDown( MouseEventArgs e )\r
                {\r
@@ -697,6 +716,10 @@ namespace DTXCreator.譜面
                }\r
                private void t選択チップを表裏反転置換する()\r
                {\r
+                       t選択チップを表裏反転置換する( true );\r
+               }\r
+               private void t選択チップを表裏反転置換する( bool bShowResult )\r
+               {\r
                        int num = 0;\r
                        this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
                        foreach( KeyValuePair<int, C小節> pair in this._Form.mgr譜面管理者.dic小節 )\r
@@ -729,7 +752,10 @@ namespace DTXCreator.譜面
                        {\r
                                this._Form.b未保存 = true;\r
                                this._Form.pictureBox譜面パネル.Refresh();\r
-                               MessageBox.Show( num + Resources.str個のチップを置換しましたMSG, Resources.str置換結果ダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1 );\r
+                               if ( bShowResult )\r
+                               {\r
+                                       MessageBox.Show( num + Resources.str個のチップを置換しましたMSG, Resources.str置換結果ダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1 );\r
+                               }\r
                        }\r
                }\r
                private void t置換する・メイン()\r
index f0d9a20..4acf702 100644 (file)
Binary files a/DTXCreatorプロジェクト/作成資料/DTXCreator設計書.ppt and b/DTXCreatorプロジェクト/作成資料/DTXCreator設計書.ppt differ
index cce47e5..a43dfa0 100644 (file)
     <Compile Include="コード\05.DirectShow\CDirectShow.cs" />\r
     <Compile Include="コード\05.DirectShow\CDStoWAVFileImage.cs" />\r
     <Compile Include="コード\05.DirectShow\MemoryRenderer.cs" />\r
+    <Compile Include="コード\06.Tempo\CBeatDetect.cs" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <EmbeddedResource Include="コード\01.フレームワーク\Properties\Resources.resx">\r
diff --git a/FDK17プロジェクト/コード/06.Tempo/CBeatDetect.cs b/FDK17プロジェクト/コード/06.Tempo/CBeatDetect.cs
new file mode 100644 (file)
index 0000000..75673c4
--- /dev/null
@@ -0,0 +1,209 @@
+using System;\r
+using System.Collections.Generic;\r
+using System.Text;\r
+using System.Diagnostics;\r
+using System.Threading;\r
+using Un4seen.Bass;\r
+//using Un4seen.BassAsio;\r
+//using Un4seen.BassWasapi;\r
+//using Un4seen.Bass.AddOn.Mix;\r
+using Un4seen.Bass.AddOn.Fx;\r
+\r
+namespace FDK\r
+{\r
+       public class CBeatDetect : IDisposable\r
+       {\r
+               public struct stBeatPos\r
+               {\r
+                       public float fBeatTime;\r
+                       public int n小節番号;\r
+                       public int nGrid;\r
+                       public int n小節内Grid;\r
+                       public bool b無効;                                    // \r
+                       public bool bレーン表示する;             // 未使用\r
+\r
+                       public stBeatPos( float _fBeatTime, int _n小節番号, int _nGrid, int _n小節内Grid, bool _b無効, bool _bレーン表示する )\r
+                       {\r
+                               fBeatTime = _fBeatTime;\r
+                               n小節番号 = _n小節番号;\r
+                               nGrid = _nGrid;\r
+                               n小節内Grid = _n小節内Grid;\r
+                               b無効 = _b無効;\r
+                               bレーン表示する= _bレーン表示する;\r
+                       }\r
+               }\r
+\r
+               #region [ コンストラクタ ]\r
+               public CBeatDetect()\r
+               {\r
+                       Initialize();\r
+               }\r
+               public CBeatDetect( string _filename )\r
+               {\r
+                       this.filename = _filename;\r
+                       Initialize();\r
+               }\r
+               #endregion\r
+               #region [ 初期化(コンストラクタから呼び出される) ]\r
+               private void Initialize()\r
+               {\r
+                       if ( this.listBeatPositions == null )\r
+                       {\r
+                               this.listBeatPositions = new List<stBeatPos>();\r
+                       }\r
+\r
+                       #region [ BASS registration ]\r
+                       // BASS.NET ユーザ登録(BASSスプラッシュが非表示になる)。\r
+\r
+                       BassNet.Registration( "dtx2013@gmail.com", "2X9181017152222" );\r
+                       #endregion\r
+                       #region [ BASS Version Check ]\r
+                       // BASS のバージョンチェック。\r
+                       int nBASSVersion = Utils.HighWord( Bass.BASS_GetVersion() );\r
+                       if ( nBASSVersion != Bass.BASSVERSION )\r
+                               throw new DllNotFoundException( string.Format( "bass.dll のバージョンが異なります({0})。このプログラムはバージョン{1}で動作します。", nBASSVersion, Bass.BASSVERSION ) );\r
+\r
+                       int nBASSFXVersion = Utils.HighWord( BassFx.BASS_FX_GetVersion() );\r
+                       if ( nBASSFXVersion != BassFx.BASSFXVERSION )\r
+                               throw new DllNotFoundException( string.Format( "bass_fx.dll のバージョンが異なります({0})。このプログラムはバージョン{1}で動作します。", nBASSFXVersion, BassFx.BASSFXVERSION ) );\r
+                       #endregion\r
+\r
+                       #region [ BASS の設定。]\r
+                       //this.bIsBASSFree = true;\r
+                       //Debug.Assert( Bass.BASS_SetConfig( BASSConfig.BASS_CONFIG_UPDATEPERIOD, 0 ),          // 0:BASSストリームの自動更新を行わない。(サウンド出力しないため)\r
+                       //    string.Format( "BASS_SetConfig() に失敗しました。[{0}", Bass.BASS_ErrorGetCode() ) );\r
+                       #endregion\r
+                       #region [ BASS の初期化。]\r
+                       int nデバイス = 0;          // 0:"no sound" … BASS からはデバイスへアクセスさせない。\r
+                       int n周波数 = 44100; // 仮決め。lデバイス(≠ドライバ)がネイティブに対応している周波数であれば何でもいい?ようだ。いずれにしろBASSMXで自動的にリサンプリングされる。\r
+                       if ( !Bass.BASS_Init( nデバイス, n周波数, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero ) )\r
+                               throw new Exception( string.Format( "BASS の初期化に失敗しました。(BASS_Init)[{0}]", Bass.BASS_ErrorGetCode().ToString() ) );\r
+                       #endregion\r
+\r
+                       #region [ 指定されたサウンドファイルをBASSでオープンし、必要最小限の情報を取得する。]\r
+                       //this.hBassStream = Bass.BASS_StreamCreateFile( this.filename, 0, 0, BASSFlag.BASS_STREAM_PRESCAN | BASSFlag.BASS_STREAM_DECODE );\r
+                       this.hBassStream = Bass.BASS_StreamCreateFile( this.filename, 0, 0, BASSFlag.BASS_STREAM_DECODE );\r
+                       if ( this.hBassStream == 0 )\r
+                               throw new Exception( string.Format( "{0}: サウンドストリームの生成に失敗しました。(BASS_StreamCreateFile)[{1}]", filename, Bass.BASS_ErrorGetCode().ToString() ) );\r
+\r
+                       this.nTotalBytes = Bass.BASS_ChannelGetLength( this.hBassStream );\r
+\r
+                       this.nTotalSeconds = Bass.BASS_ChannelBytes2Seconds( this.hBassStream, nTotalBytes );\r
+                       if ( !Bass.BASS_ChannelGetAttribute( this.hBassStream, BASSAttribute.BASS_ATTRIB_FREQ, ref fFreq ) )\r
+                       {\r
+                               string errmes = string.Format( "サウンドストリームの周波数取得に失敗しました。(BASS_ChannelGetAttribute)[{0}]", Bass.BASS_ErrorGetCode().ToString() );\r
+                               Bass.BASS_Free();\r
+                               throw new Exception( errmes );\r
+                       }\r
+                       #endregion\r
+               }\r
+               #endregion\r
+\r
+               /// <summary>\r
+               /// 曲全体のテンポを取得する\r
+               /// </summary>\r
+               /// <returns>テンポ値</returns>\r
+               /// <remarks>テンポ値の範囲は70-300</remarks>\r
+               public float GetTempo()\r
+               {\r
+                       fTempo = BassFx.BASS_FX_BPM_DecodeGet(\r
+                               this.hBassStream,\r
+                               0,\r
+                               nTotalSeconds,\r
+                               ( 300 << 16 ) + 70,             // MAX BPM=320, MIN BPM=70\r
+                               //0,\r
+                               BASSFXBpm.BASS_FX_BPM_DEFAULT,          //BASSFXBpm.BASS_FX_BPM_MULT2,\r
+                               null,\r
+                               IntPtr.Zero );\r
+                       return fTempo;\r
+               }\r
+               /// <summary>\r
+               /// 曲の一部分のテンポを取得する\r
+               /// </summary>\r
+               /// <param name="startSec">開始位置</param>\r
+               /// <param name="endSec">終了位置</param>\r
+               /// <returns>テンポ値</returns>\r
+               /// <remarks>テンポ値の範囲は70-300</remarks>\r
+               public float GetTempo( double startSec, double endSec )\r
+               {\r
+                       fTempo = BassFx.BASS_FX_BPM_DecodeGet(\r
+                               this.hBassStream,\r
+                               startSec,\r
+                               endSec,\r
+                               ( 300 << 16 ) + 70,             // MAX BPM=320, MIN BPM=70\r
+                               //0,\r
+                               BASSFXBpm.BASS_FX_BPM_DEFAULT,          //BASSFXBpm.BASS_FX_BPM_MULT2,\r
+                               null,\r
+                               IntPtr.Zero );\r
+                       return fTempo;\r
+               }\r
+\r
+\r
+               /// <summary>\r
+               /// Beatの検出位置をListで返す\r
+               /// </summary>\r
+               /// <returns>Beat検出位置群</returns>\r
+               public List<stBeatPos> GetBeatPositions()\r
+               {\r
+                       #region [  BeatPosition格納リストの初期化 ]\r
+                       if ( this.listBeatPositions != null )\r
+                       {\r
+                               this.listBeatPositions.Clear();\r
+                       }\r
+                       else\r
+                       {\r
+                               this.listBeatPositions = new List<stBeatPos>();\r
+                       }\r
+                       #endregion\r
+\r
+                       BPMBEATPROC _beatProc = new BPMBEATPROC( GetBeat_ProgressCallback );\r
+\r
+                       bool ret = BassFx.BASS_FX_BPM_BeatDecodeGet(\r
+                               this.hBassStream,\r
+                               0,\r
+                               nTotalSeconds,\r
+                               //0,\r
+                               BASSFXBpm.BASS_FX_BPM_DEFAULT,          //BASSFXBpm.BASS_FX_BPM_MULT2,\r
+                               _beatProc,\r
+                               IntPtr.Zero );\r
+\r
+                       return this.listBeatPositions;\r
+               }\r
+\r
+               private void GetBeat_ProgressCallback( int channel, double beatpos, IntPtr user )\r
+               {\r
+                       stBeatPos sbp = new stBeatPos(\r
+                               (float) beatpos,\r
+                               0,\r
+                               0,\r
+                               0,\r
+                               false,\r
+                               true\r
+                       );                              \r
+                               \r
+\r
+                       listBeatPositions.Add( sbp );\r
+//                     Debug.WriteLine( "Beat at: " + beatpos.ToString() );\r
+               }\r
+\r
+\r
+       \r
+               \r
+               public void Dispose()   // 使い終わったら必ずDispose()すること。BASSのリソースを握りっぱなしにすると、他の再生に不都合が生じるため。\r
+               {\r
+                       BassFx.BASS_FX_BPM_Free( this.hBassStream );\r
+                       Bass.BASS_StreamFree( this.hBassStream );\r
+                       this.hBassStream = -1;\r
+                       Bass.BASS_Free();\r
+               }\r
+       \r
+               // =============\r
+               private string filename = "";\r
+               private int hBassStream = -1;\r
+               private long nTotalBytes = 0;\r
+               private double nTotalSeconds = 0.0f;\r
+               private float fFreq = 0.0f;\r
+               private float fTempo;\r
+               private List<stBeatPos> listBeatPositions = null;\r
+       }\r
+}\r
index 9b5e94a..80d23b3 100644 (file)
Binary files a/実行時フォルダ(DTXCreator)/DTXCreator.exe and b/実行時フォルダ(DTXCreator)/DTXCreator.exe differ
index f785cd7..f8a9ad5 100644 (file)
Binary files a/実行時フォルダ(DTXCreator)/dll/FDK.dll and b/実行時フォルダ(DTXCreator)/dll/FDK.dll differ
index 5e67dea..cd67266 100644 (file)
Binary files a/実行時フォルダ(DTXCreator)/ja-JP/DTXCreator.resources.dll and b/実行時フォルダ(DTXCreator)/ja-JP/DTXCreator.resources.dll differ
index f785cd7..f8a9ad5 100644 (file)
Binary files a/実行時フォルダ/dll/FDK.dll and b/実行時フォルダ/dll/FDK.dll differ