OSDN Git Service

#30333 WAVリストにBPMが大量に出現するのを修正
authorikanick <ikanick@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Tue, 5 Apr 2016 16:56:43 +0000 (16:56 +0000)
committerikanick <ikanick@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Tue, 5 Apr 2016 16:56:43 +0000 (16:56 +0000)
BPMチップが表示されなくなっていたのを修正
先頭BPMが指定される条件を、合計デルタタイムが0の時に変更

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/branches/160321(DTXCreator%20with%20MIDI%20Import)@967 16f42ceb-6dc6-49c8-ba94-f2d53467949d

DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIインポートダイアログ.cs
DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIトラック.cs

index def1991..e836589 100644 (file)
@@ -103,14 +103,14 @@ namespace DTXCreator.MIDIインポート
                private void dgvチャンネル一覧_CellValueChanged( object sender, DataGridViewCellEventArgs e )\r
                {\r
                        if ( cMIDI != null ) {\r
-                               t読み込むチャンネルを取得して割り当て一覧のノート数に反映する();\r
+                               t読み込むチャンネルを取得してキー毎のノート数を計算する();\r
                        }\r
                }\r
 \r
                /// <summary>\r
                /// ファイルを開いた時か、チャンネル一覧のチェック変更時に呼び出す\r
                /// </summary>\r
-               private void t読み込むチャンネルを取得して割り当て一覧のノート数に反映する()\r
+               private void t読み込むチャンネルを取得してキー毎のノート数を計算する()\r
                {\r
                        // キー毎のノート数初期化\r
                        for ( int i = 0 ; i < 128 ; i++ ) cMIDI.nドラムチャンネルのキー毎のノート数[i] = 0;\r
@@ -120,9 +120,10 @@ namespace DTXCreator.MIDIインポート
                        {\r
                                if (vMIDIイベント.eイベントタイプ == CMIDIイベント.Eイベントタイプ.NoteOnOff)\r
                                {\r
-                                       if ( (bool)cMIDI.dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells["ChLoad"].Value )\r
+                                       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
@@ -335,7 +336,7 @@ namespace DTXCreator.MIDIインポート
                        dgvチャンネル一覧変更イベント復旧();\r
 \r
             // 各キーのノート数を割り当て一覧に出力する\r
-                       t読み込むチャンネルを取得して割り当て一覧のノート数に反映する();\r
+                       t読み込むチャンネルを取得してキー毎のノート数を計算する();\r
 \r
                        // 設定に応じて処理する\r
                        tMIDIチップをレーンに割り当てる();\r
@@ -381,6 +382,10 @@ namespace DTXCreator.MIDIインポート
                                        vMIDIイベント.nベロシティ_DTX変換後 = velo;\r
                                }\r
                                #endregion\r
+                               \r
+                               #region [ 読み込むチャンネルを取得してキー毎のノート数を計算する ]\r
+                               t読み込むチャンネルを取得してキー毎のノート数を計算する();\r
+                               #endregion\r
 \r
                                #region [ 配置予定チップを割り当て一覧に沿ってレーンを割り当てる ]\r
                                tMIDIチップをレーンに割り当てる();\r
@@ -404,8 +409,8 @@ namespace DTXCreator.MIDIインポート
                                \r
                                foreach ( CMIDIイベント vMIDIWAV in cMIDI.lMIDIWAV )\r
                                {\r
-                                       // ノートチップ以外をWAVリストに表示させない\r
-                                       if ( vMIDIWAV.eイベントタイプ != CMIDIイベント.Eイベントタイプ.NoteOnOff ) continue;\r
+                                       // ノートチップ以外をWAVリストに表示させない→WAVリスト化する部分で処理する\r
+                                       //if ( vMIDIWAV.eイベントタイプ != CMIDIイベント.Eイベントタイプ.NoteOnOff ) continue;\r
 \r
                                        // レーン毎に1行空ける\r
                                        if ( nWAVCount > 4 && nレーン番号before != vMIDIWAV.nレーン番号 ) nWAVCount++;\r
@@ -450,7 +455,7 @@ namespace DTXCreator.MIDIインポート
                                // 配置予定チップで、選択されているチャンネルのノーツを実際に配置する\r
                 foreach ( CMIDIイベント vMIDIイベント in cMIDI.lMIDIイベント )\r
                 {\r
-                                       if ( vMIDIイベント.b入力 && (bool)dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells["ChLoad"].Value )\r
+                                       if ( vMIDIイベント.b入力 )\r
                                        {\r
                                                vMIDIイベント.挿入( this.formメインフォーム, cMIDI.n分解能 );\r
                                        }\r
@@ -505,7 +510,7 @@ namespace DTXCreator.MIDIインポート
                                                vMIDIイベント.nレーン番号 = this.formメインフォーム.mgr譜面管理者.nレーン名に対応するレーン番号を返す( (string)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells["DTX_Lane"].Value );\r
                                                vMIDIイベント.strコメント = (string)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells["Comment"].Value;\r
                                                vMIDIイベント.b裏チャンネル = (bool)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells["BackCH"].Value;\r
-                                               vMIDIイベント.b入力 = true;\r
+                                               vMIDIイベント.b入力 = (bool)cMIDI.dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells["ChLoad"].Value;\r
                                        }\r
                                        else\r
                                        {\r
@@ -528,6 +533,9 @@ namespace DTXCreator.MIDIインポート
 \r
                        foreach ( CMIDIイベント vMIDIイベント in cMIDI.lMIDIイベント )\r
                        {\r
+                               // チャンネル一覧で選択されているものと、ノートのみリスト化\r
+                               if ( !vMIDIイベント.b入力 || vMIDIイベント.eイベントタイプ != CMIDIイベント.Eイベントタイプ.NoteOnOff ) continue;\r
+\r
                                // WAVリストで、同じ内容(キーとベロシティ)が無ければ挿入する\r
                                bool bMIDIWAV_AddFlag = true;\r
                                foreach ( CMIDIイベント vMIDIWAV in cMIDI.lMIDIWAV )\r
index 8fcc502..a9c667a 100644 (file)
@@ -147,7 +147,7 @@ namespace DTXCreator.MIDIインポート
                                                // FF 51 BPM\r
                                                case 0x51:\r
                                                        float fBPM = (float) ( Math.Round( (float) 60.0 * Math.Pow( 10, 6 ) / CMIDI.nBin2Int( this.byMIDIトラックバイナリ, p + nデルタタイムLen + 3, 3 ), 2 ) );\r
-                                                       if ( cMIDI.f先頭BPM == 0.0f ) cMIDI.f先頭BPM = fBPM;\r
+                                                       if ( nデルタタイム合計 == 0 ) cMIDI.f先頭BPM = fBPM;\r
                                                        nイベントLen = 6;\r
                                                        cMIDI.lMIDIイベント.Add( new CMIDIBPM( nデルタタイム合計, fBPM ) );\r
                                                        cMIDI.nドラムチャンネルのキー毎のノート数[ 128 ]++;\r