OSDN Git Service

#30333 [DTXC] 小節挿入の方法を若干変更, 設定保存機能の仕込み
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Wed, 6 Apr 2016 12:16:11 +0000 (12:16 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Wed, 6 Apr 2016 12:16:11 +0000 (12:16 +0000)
git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/branches/160321(DTXCreator%20with%20MIDI%20Import)@970 16f42ceb-6dc6-49c8-ba94-f2d53467949d

DTXCreatorプロジェクト/DTXCreatorプロジェクト.csproj
DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIインポートダイアログ.cs
実行時フォルダ(DTXCreator)/DTXCreator.exe
実行時フォルダ(DTXCreator)/ja-JP/DTXCreator.resources.dll

index d79f430..a930a14 100644 (file)
@@ -65,6 +65,7 @@
     <Reference Include="System.Data" />\r
     <Reference Include="System.Drawing" />\r
     <Reference Include="System.Management" />\r
+    <Reference Include="System.Runtime.Serialization" />\r
     <Reference Include="System.Windows.Forms" />\r
     <Reference Include="System.Xml" />\r
   </ItemGroup>\r
index 20ef1b4..253a2cb 100644 (file)
@@ -7,6 +7,8 @@ using System.ComponentModel;
 using System.IO;\r
 using System.Drawing;\r
 using System.Diagnostics;\r
+using System.Xml;\r
+using System.Runtime.Serialization;\r
 using DTXCreator.譜面;\r
 using DTXCreator.WAV_BMP_AVI;\r
 using DTXCreator.Properties;\r
@@ -123,9 +125,9 @@ namespace DTXCreator.MIDIインポート
                                        if ((bool)cMIDI.dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells["ChLoad"].Value)\r
                                        {\r
                                                cMIDI.nドラムチャンネルのキー毎のノート数[vMIDIイベント.nキー] ++;\r
-                                       }\r
                                }\r
                        }\r
+                       }\r
             for ( int i = 0 ; i < 128 ; i++ )\r
                 this.dgv割り当て一覧.Rows[127-i].Cells["Notes"].Value = cMIDI.nドラムチャンネルのキー毎のノート数[i];\r
 \r
@@ -197,8 +199,7 @@ namespace DTXCreator.MIDIインポート
                     case 78 : str楽器名 = "Mute Cuica"; break;\r
                     case 79 : str楽器名 = "Open Cuica"; break;\r
                     case 80 : str楽器名 = "Mute Triangle"; break;\r
-                    case 81 : str楽器名 = "Open Triangle"; break;\r
-                }\r
+                    case 81 : str楽器名 = "Open Triangle"; break;                }\r
                 this.dgv割り当て一覧.Rows.Add( i, strキー名[i%12], strレーン名, b裏チャンネル, 0, str楽器名 );\r
 \r
                                // 黒鍵に色付け\r
@@ -216,6 +217,15 @@ namespace DTXCreator.MIDIインポート
 \r
             this.dgv割り当て一覧.FirstDisplayedScrollingRowIndex = 81;//key35=LBDが表示される位置\r
 \r
+                       if (Control.IsKeyLocked(Keys.CapsLock))\r
+                       {\r
+                               tMIDIインポート設定をファイルから読み込む();\r
+\r
+                       }\r
+                       else\r
+                       {\r
+                               tMIDIインポート設定をファイルに保存する();\r
+                       }\r
         }\r
 \r
         public void tMIDIチャンネル一覧を作成する()\r
@@ -567,10 +577,10 @@ namespace DTXCreator.MIDIインポート
                                // チャンネル一覧で選択されているものと、ノートのみ数える\r
                                if ( !vMIDIイベント.b入力 || vMIDIイベント.eイベントタイプ != CMIDIイベント.Eイベントタイプ.NoteOnOff ) continue;\r
 \r
-                               string str = "" + vMIDIイベント.nレーン番号 + ":" + vMIDIイベント.n時間;\r
-                               if ( lMIDIイベント_重複.Contains( str ) ) cMIDI.n重複チップ数 ++;\r
-                               else lMIDIイベント_重複.Add( str );\r
-                       }\r
+                                       string str = "" + vMIDIイベント.nレーン番号 + ":" + vMIDIイベント.n時間;\r
+                                       if ( lMIDIイベント_重複.Contains( str ) ) cMIDI.n重複チップ数 ++;\r
+                                       else lMIDIイベント_重複.Add( str );\r
+                               }\r
 \r
                        this.label重複チップ数.Text = resource.GetString("label重複チップ数.Text") + " : " + cMIDI.n重複チップ数;\r
                }\r
@@ -595,8 +605,8 @@ namespace DTXCreator.MIDIインポート
 \r
                        // 最終拍子イベント以降、曲最後までの小節について、この先のロジックで小節長を変更するために、ダミーで最後に拍子変更のイベントを入れる。\r
 \r
-                       int n最終分子 = 1;\r
-                       int n最終分母 = 1;\r
+                       int n最終分子 = 4;\r
+                       int n最終分母 = 4;\r
                        int n最終時間 = (int)cml[ cml.Count - 1 ].n時間;\r
 \r
                        cml.Reverse();\r
@@ -611,11 +621,11 @@ namespace DTXCreator.MIDIインポート
                        }\r
                        cml.Reverse();\r
 \r
-                       if ( n最終時間 >= 0 )\r
+                       //if ( n最終時間 >= 0 )\r
                        {\r
                                cml.Add( new CMIDIBARLen( (UInt32)n最終時間, n最終分子, n最終分母 ) );\r
                        }\r
-\r
+                       /*\r
                        // 拍子変更以外のイベントが小節外にある時チップが配置されなかったので最初のcm.eイベントタイプ条件式をなくした\r
                        this.formメインフォーム.mgr譜面管理者.dic小節.Clear();\r
                        foreach ( CMIDIイベント cm in cml )\r
@@ -665,9 +675,9 @@ namespace DTXCreator.MIDIインポート
                                        }\r
                                }\r
                        }\r
-\r
+                       */\r
                        // 最初のcm.eイベントタイプ条件式をなくす変更前\r
-                       /*\r
+               \r
                        foreach ( CMIDIイベント cm in cml )\r
                        {\r
                                if ( cm.eイベントタイプ == CMIDIイベント.Eイベントタイプ.BarLen )\r
@@ -717,8 +727,8 @@ namespace DTXCreator.MIDIインポート
                                                }\r
                                        }\r
                                }\r
-                       }*/\r
-               }\r
+                       }\r
+                       }\r
 \r
                /// <summary>\r
                /// WAVリストを順番にソートする\r
@@ -753,5 +763,61 @@ namespace DTXCreator.MIDIインポート
                        }\r
                }\r
 \r
+//             [Serializable]\r
+               [DataContract]\r
+               [KnownType( typeof( DTXC_MIDIConvSetting ) )]\r
+               public struct DTXC_MIDIConvSetting\r
+               {\r
+                       [DataMember]\r
+                       public int MIDI_Key;\r
+                       [DataMember]\r
+                       public string DTX_Lane;\r
+                       [DataMember]\r
+                       public bool BackCH;\r
+\r
+                       public DTXC_MIDIConvSetting(int _MIDI_Key, string _DTX_Lane, bool _BackCH)\r
+                       {\r
+                               MIDI_Key = _MIDI_Key;\r
+                               DTX_Lane = _DTX_Lane;\r
+                               BackCH   = _BackCH;\r
+                       }\r
+               }\r
+       \r
+               private void tMIDIインポート設定をファイルに保存する()\r
+               {\r
+                       DTXC_MIDIConvSetting[] mcs = new DTXC_MIDIConvSetting[ 128 ];\r
+\r
+                       for (int i = 0; i < 127; i++)\r
+                       {\r
+                               mcs[ i ].MIDI_Key = (int)    this.dgv割り当て一覧.Rows[ i ].Cells[ "MIDI_Key" ].Value;\r
+                               mcs[ i ].DTX_Lane = (string) this.dgv割り当て一覧.Rows[ i ].Cells[ "DTX_Lane" ].Value;\r
+                               mcs[ i ].BackCH   = (bool)   this.dgv割り当て一覧.Rows[ i ].Cells[ "BackCH" ].Value;\r
+                       }\r
+\r
+                       using ( var stream = new FileStream( "DTXCreatorSMFSettings.xml", FileMode.Create ) )\r
+                       {\r
+                               var serializer = new System.Xml.Serialization.XmlSerializer( typeof( DTXC_MIDIConvSetting[] ) );\r
+                               serializer.Serialize( stream, mcs );\r
+                       }\r
+               }\r
+               private void tMIDIインポート設定をファイルから読み込む()\r
+               {\r
+                       DTXC_MIDIConvSetting[] mcs;      //= new DTXC_MIDIConvSetting[ 128 ];\r
+\r
+                       using ( var stream = new FileStream( "DTXCreatorSMFSettings.xml", FileMode.Open ) )\r
+                       {\r
+                               var serializer = new System.Xml.Serialization.XmlSerializer( typeof( DTXC_MIDIConvSetting[] ) );\r
+                               mcs = (DTXC_MIDIConvSetting[]) serializer.Deserialize( stream );\r
+                       }\r
+\r
+                       for ( int i = 0; i < 127; i++ )\r
+                       {\r
+                               this.dgv割り当て一覧.Rows[ i ].Cells[ "MIDI_Key" ].Value = mcs[ i ].MIDI_Key;\r
+                               this.dgv割り当て一覧.Rows[ i ].Cells[ "DTX_Lane" ].Value = mcs[ i ].DTX_Lane;\r
+                               this.dgv割り当て一覧.Rows[ i ].Cells[ "BackCH" ].Value = mcs[ i ].BackCH;\r
+                               this.dgv割り当て一覧.Rows[ i ].Cells[ "Key" ].Value = i%12;\r
+                       }\r
+               }\r
+\r
        }\r
 }\r
index bd9deeb..627524c 100644 (file)
Binary files a/実行時フォルダ(DTXCreator)/DTXCreator.exe and b/実行時フォルダ(DTXCreator)/DTXCreator.exe differ
index 1e20d28..7e57a84 100644 (file)
Binary files a/実行時フォルダ(DTXCreator)/ja-JP/DTXCreator.resources.dll and b/実行時フォルダ(DTXCreator)/ja-JP/DTXCreator.resources.dll differ