From bed8cdd84aca2552eb30cad95486a5b3906c8e3b Mon Sep 17 00:00:00 2001 From: ikanick Date: Tue, 5 Apr 2016 16:56:43 +0000 Subject: [PATCH] =?utf8?q?#30333=20WAV=E3=83=AA=E3=82=B9=E3=83=88=E3=81=AB?= =?utf8?q?BPM=E3=81=8C=E5=A4=A7=E9=87=8F=E3=81=AB=E5=87=BA=E7=8F=BE?= =?utf8?q?=E3=81=99=E3=82=8B=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3=20BPM?= =?utf8?q?=E3=83=81=E3=83=83=E3=83=97=E3=81=8C=E8=A1=A8=E7=A4=BA=E3=81=95?= =?utf8?q?=E3=82=8C=E3=81=AA=E3=81=8F=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=84?= =?utf8?q?=E3=81=9F=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3=20=E5=85=88?= =?utf8?q?=E9=A0=ADBPM=E3=81=8C=E6=8C=87=E5=AE=9A=E3=81=95=E3=82=8C?= =?utf8?q?=E3=82=8B=E6=9D=A1=E4=BB=B6=E3=82=92=E3=80=81=E5=90=88=E8=A8=88?= =?utf8?q?=E3=83=87=E3=83=AB=E3=82=BF=E3=82=BF=E3=82=A4=E3=83=A0=E3=81=8C0?= =?utf8?q?=E3=81=AE=E6=99=82=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/branches/160321(DTXCreator%20with%20MIDI%20Import)@967 16f42ceb-6dc6-49c8-ba94-f2d53467949d --- .../CMIDIインポートダイアログ.cs | 26 ++++++++++++++-------- .../07.MIDIインポート/CMIDIトラック.cs | 2 +- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIインポートダイアログ.cs b/DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIインポートダイアログ.cs index def19913..e836589d 100644 --- a/DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIインポートダイアログ.cs +++ b/DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIインポートダイアログ.cs @@ -103,14 +103,14 @@ namespace DTXCreator.MIDIインポート private void dgvチャンネル一覧_CellValueChanged( object sender, DataGridViewCellEventArgs e ) { if ( cMIDI != null ) { - t読み込むチャンネルを取得して割り当て一覧のノート数に反映する(); + t読み込むチャンネルを取得してキー毎のノート数を計算する(); } } /// /// ファイルを開いた時か、チャンネル一覧のチェック変更時に呼び出す /// - private void t読み込むチャンネルを取得して割り当て一覧のノート数に反映する() + private void t読み込むチャンネルを取得してキー毎のノート数を計算する() { // キー毎のノート数初期化 for ( int i = 0 ; i < 128 ; i++ ) cMIDI.nドラムチャンネルのキー毎のノート数[i] = 0; @@ -120,9 +120,10 @@ namespace DTXCreator.MIDIインポート { if (vMIDIイベント.eイベントタイプ == CMIDIイベント.Eイベントタイプ.NoteOnOff) { - if ( (bool)cMIDI.dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells["ChLoad"].Value ) + if ((bool)cMIDI.dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells["ChLoad"].Value) + { cMIDI.nドラムチャンネルのキー毎のノート数[vMIDIイベント.nキー] ++; - + } } } for ( int i = 0 ; i < 128 ; i++ ) @@ -335,7 +336,7 @@ namespace DTXCreator.MIDIインポート dgvチャンネル一覧変更イベント復旧(); // 各キーのノート数を割り当て一覧に出力する - t読み込むチャンネルを取得して割り当て一覧のノート数に反映する(); + t読み込むチャンネルを取得してキー毎のノート数を計算する(); // 設定に応じて処理する tMIDIチップをレーンに割り当てる(); @@ -381,6 +382,10 @@ namespace DTXCreator.MIDIインポート vMIDIイベント.nベロシティ_DTX変換後 = velo; } #endregion + + #region [ 読み込むチャンネルを取得してキー毎のノート数を計算する ] + t読み込むチャンネルを取得してキー毎のノート数を計算する(); + #endregion #region [ 配置予定チップを割り当て一覧に沿ってレーンを割り当てる ] tMIDIチップをレーンに割り当てる(); @@ -404,8 +409,8 @@ namespace DTXCreator.MIDIインポート foreach ( CMIDIイベント vMIDIWAV in cMIDI.lMIDIWAV ) { - // ノートチップ以外をWAVリストに表示させない - if ( vMIDIWAV.eイベントタイプ != CMIDIイベント.Eイベントタイプ.NoteOnOff ) continue; + // ノートチップ以外をWAVリストに表示させない→WAVリスト化する部分で処理する + //if ( vMIDIWAV.eイベントタイプ != CMIDIイベント.Eイベントタイプ.NoteOnOff ) continue; // レーン毎に1行空ける if ( nWAVCount > 4 && nレーン番号before != vMIDIWAV.nレーン番号 ) nWAVCount++; @@ -450,7 +455,7 @@ namespace DTXCreator.MIDIインポート // 配置予定チップで、選択されているチャンネルのノーツを実際に配置する foreach ( CMIDIイベント vMIDIイベント in cMIDI.lMIDIイベント ) { - if ( vMIDIイベント.b入力 && (bool)dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells["ChLoad"].Value ) + if ( vMIDIイベント.b入力 ) { vMIDIイベント.挿入( this.formメインフォーム, cMIDI.n分解能 ); } @@ -505,7 +510,7 @@ namespace DTXCreator.MIDIインポート vMIDIイベント.nレーン番号 = this.formメインフォーム.mgr譜面管理者.nレーン名に対応するレーン番号を返す( (string)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells["DTX_Lane"].Value ); vMIDIイベント.strコメント = (string)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells["Comment"].Value; vMIDIイベント.b裏チャンネル = (bool)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells["BackCH"].Value; - vMIDIイベント.b入力 = true; + vMIDIイベント.b入力 = (bool)cMIDI.dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells["ChLoad"].Value; } else { @@ -528,6 +533,9 @@ namespace DTXCreator.MIDIインポート foreach ( CMIDIイベント vMIDIイベント in cMIDI.lMIDIイベント ) { + // チャンネル一覧で選択されているものと、ノートのみリスト化 + if ( !vMIDIイベント.b入力 || vMIDIイベント.eイベントタイプ != CMIDIイベント.Eイベントタイプ.NoteOnOff ) continue; + // WAVリストで、同じ内容(キーとベロシティ)が無ければ挿入する bool bMIDIWAV_AddFlag = true; foreach ( CMIDIイベント vMIDIWAV in cMIDI.lMIDIWAV ) diff --git a/DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIトラック.cs b/DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIトラック.cs index 8fcc502d..a9c667ac 100644 --- a/DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIトラック.cs +++ b/DTXCreatorプロジェクト/コード/07.MIDIインポート/CMIDIトラック.cs @@ -147,7 +147,7 @@ namespace DTXCreator.MIDIインポート // FF 51 BPM case 0x51: float fBPM = (float) ( Math.Round( (float) 60.0 * Math.Pow( 10, 6 ) / CMIDI.nBin2Int( this.byMIDIトラックバイナリ, p + nデルタタイムLen + 3, 3 ), 2 ) ); - if ( cMIDI.f先頭BPM == 0.0f ) cMIDI.f先頭BPM = fBPM; + if ( nデルタタイム合計 == 0 ) cMIDI.f先頭BPM = fBPM; nイベントLen = 6; cMIDI.lMIDIイベント.Add( new CMIDIBPM( nデルタタイム合計, fBPM ) ); cMIDI.nドラムチャンネルのキー毎のノート数[ 128 ]++; -- 2.11.0