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
\r
private void buttonOpen_Click(object sender, EventArgs e)\r
{\r
- this.tMIDIファイルを選択する();\r
+ tMIDIファイルを選択する();\r
}\r
+\r
+ private void buttonOpenSettings_Click(object sender, EventArgs e)\r
+ {\r
+ tMIDIインポート設定ファイル選択ダイアログを開く();\r
+ }\r
+\r
+ private void buttonSaveSettings_Click(object sender, EventArgs e)\r
+ {\r
+ tMIDIインポート設定ファイル保存ダイアログを開く();\r
+ }\r
\r
// レーン名をワンクリックで開く用\r
private void dgv割り当て一覧_CellEnter( object sender, DataGridViewCellEventArgs e )\r
SendKeys.Send("{F4}");\r
}\r
\r
- // レーン名を変更したら\r
+ // 割り当て一覧が更新された時の処理\r
private void dgv割り当て一覧_CellEndEdit( object sender, DataGridViewCellEventArgs e )\r
{\r
DataGridView dgv割り当て一覧 = (DataGridView) sender;\r
\r
- if ( dgv割り当て一覧.Columns[e.ColumnIndex].Name == "DTX_Lane" )\r
+ if ( dgv割り当て一覧.Columns[e.ColumnIndex].Name == "Assign_DTX_Lane" )\r
tMIDI割り当て一覧のレーン名の背景色を変更する( e.RowIndex );\r
\r
- if ( cMIDI != null ) tMIDIチップをレーンに割り当てる();\r
+ tMIDIチップをレーンに割り当てる();\r
\r
}\r
\r
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
{\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[ "Channel_Load" ].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
+ this.dgv割り当て一覧.Rows[127-i].Cells[ "Assign_Notes" ].Value = cMIDI.nドラムチャンネルのキー毎のノート数[i];\r
\r
t同時刻で同じレーンに配置予定のチップを数えて反映する();\r
\r
public void tMIDI割り当て一覧を作成する()\r
{\r
// レーン一覧を作成\r
- this.DTX_Lane.Items.AddRange( "* Disuse *" );\r
+ this.Assign_DTX_Lane.Items.AddRange( "* Disuse *" );\r
foreach ( Cレーン cレーン in this.formメインフォーム.mgr譜面管理者.listレーン )\r
{\r
- if ( cレーン.eレーン種別 == Cレーン.E種別.WAV ) this.DTX_Lane.Items.AddRange( cレーン.strレーン名 );\r
+ if ( cレーン.eレーン種別 == Cレーン.E種別.WAV ) this.Assign_DTX_Lane.Items.AddRange( cレーン.strレーン名 );\r
}\r
\r
// MIDIキー一覧を作成\r
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
- if ( i%12 == 1 || i%12 == 3 || i%12 == 6 || i%12 == 8 || i%12 == 10 ) this.dgv割り当て一覧.Rows[127-i].DefaultCellStyle.BackColor = Color.FromArgb( 240, 248, 255 );\r
+ if ( i%12 == 1 || i%12 == 3 || i%12 == 6 || i%12 == 8 || i%12 == 10 )\r
+ this.dgv割り当て一覧.Rows[127-i].DefaultCellStyle.BackColor = Color.FromArgb( 240, 248, 255 );\r
// C(ド)に色付け\r
if ( i%12 == 0 ) this.dgv割り当て一覧.Rows[127-i].DefaultCellStyle.BackColor = Color.FromArgb( 255, 224, 224 );\r
\r
tMIDI割り当て一覧のレーン名の背景色を変更する( 127-i );\r
\r
}\r
- this.dgv割り当て一覧.Columns["MIDI_Key"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;\r
- this.dgv割り当て一覧.Columns["DTX_Lane"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;\r
- this.dgv割り当て一覧.Columns["DTX_Lane"].DefaultCellStyle.Font = new Font( "meiryo", 8f, FontStyle.Bold );\r
+ this.dgv割り当て一覧.Columns[ "Assign_MIDI_Key" ].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;\r
+ this.dgv割り当て一覧.Columns[ "Assign_DTX_Lane" ].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;\r
+ this.dgv割り当て一覧.Columns[ "Assign_DTX_Lane" ].DefaultCellStyle.Font = new Font( "meiryo", 8f, FontStyle.Bold );\r
this.dgv割り当て一覧.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;\r
\r
- this.dgv割り当て一覧.FirstDisplayedScrollingRowIndex = 81;//key35=LBDが表示される位置\r
-\r
+ this.dgv割り当て一覧.FirstDisplayedScrollingRowIndex = 82;//key35=LBDが表示される位置\r
}\r
\r
public void tMIDIチャンネル一覧を作成する()\r
{\r
- for (int i = 1; i <= 16; i++)\r
+ for (int i = 0; i < 16; i++)\r
{\r
- this.dgvチャンネル一覧.Rows.Add( i, 0, (i==10) );\r
- this.dgvチャンネル一覧.Rows[i-1].DefaultCellStyle.BackColor = (i==10) ? Color.FromArgb( 255, 224, 224 ) : Color.FromArgb( 255, 255, 255 );\r
+ this.dgvチャンネル一覧.Rows.Add( i+1, 0, (i+1==10) );\r
+ this.dgvチャンネル一覧.Rows[i].DefaultCellStyle.BackColor = (i+1==10) ? Color.FromArgb( 255, 224, 224 ) : Color.FromArgb( 255, 255, 255 );\r
}\r
// dgvチャンネル一覧変更イベント復旧(); //ここでイベントを復旧してはいけない\r
//(直後にファイルを開く動作+解析動作が発生するのでそこで)\r
//-----------------\r
\r
OpenFileDialog dialog = new OpenFileDialog();\r
- dialog.Title = "MIDIファイルを選択";\r
- dialog.Filter = "MIDIファイル (*.mid,*.midi)|*.mid;*.midi|すべてのファイル (*.*)|*.*";\r
+ dialog.Title = Resources.strMIDIファイル選択ダイアログのタイトル;\r
+ dialog.Filter = Resources.strMIDIファイル選択ダイアログのフィルタ;\r
dialog.FilterIndex = 1;\r
dialog.InitialDirectory = this.formメインフォーム.strMIDIインポートフォルダ;\r
DialogResult result = dialog.ShowDialog();\r
if ( !File.Exists( strファイル名 ) )\r
{\r
MessageBox.Show(\r
- "ファイルが見つかりません。",\r
- "MIDIインポート",\r
+ Resources.strファイルが存在しませんMSG,\r
+ Resources.strMIDIインポートエラーのタイトル,\r
MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);\r
return;\r
}\r
if ( !str拡張子.Equals(".mid", StringComparison.OrdinalIgnoreCase ) && !str拡張子.Equals( ".midi", StringComparison.OrdinalIgnoreCase) )\r
{\r
MessageBox.Show(\r
- "MIDIファイルではありません。",\r
- "MIDIインポート",\r
- MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);\r
+ Resources.strMIDIファイルではないMSG,\r
+ Resources.strMIDIインポートエラーのタイトル,\r
+ MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );\r
return;\r
}\r
//-----------------\r
if ( !cMIDI.bMIDIファイル )\r
{\r
MessageBox.Show(\r
- "MIDIファイルではありません。",\r
- "MIDIインポート",\r
- MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);\r
+ Resources.strMIDIファイルではないMSG,\r
+ Resources.strMIDIインポートエラーのタイトル,\r
+ MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );\r
cMIDI = null;\r
return;\r
}\r
}\r
\r
this.textBox1.Text = str文字列;\r
+\r
+ //-----------------\r
+ #endregion\r
\r
// 各チャンネルのノート数をチャンネル一覧に出力する\r
dgvチャンネル一覧変更イベント抑止();\r
for ( int i = 0; i < 16; i++ )\r
{\r
- this.dgvチャンネル一覧.Rows[i].Cells["ChNotes"].Value = cMIDI.nチャンネル0to15毎のノート数[i];\r
- this.dgvチャンネル一覧.Rows[i].Cells["ChLoad"].Value = cMIDI.bドラムチャンネルと思われる[i];\r
+ this.dgvチャンネル一覧.Rows[i].Cells[ "Channel_Notes" ].Value = cMIDI.nチャンネル0to15毎のノート数[i];\r
+ this.dgvチャンネル一覧.Rows[i].Cells[ "Channel_Load" ].Value = cMIDI.bドラムチャンネルと思われる[i];\r
}\r
dgvチャンネル一覧変更イベント復旧();\r
\r
// 各キーのノート数を割り当て一覧に出力する\r
- t読み込むチャンネルを取得して割り当て一覧のノート数に反映する();\r
+ t読み込むチャンネルを取得してキー毎のノート数を計算する();\r
\r
- // è¨å®\9aã\81«å¿\9cã\81\98ã\81¦å\87¦ç\90\86ã\81\99ã\82\8b\r
+ // èªã\81¿è¾¼ã\82\80ã\83\81ã\83£ã\83³ã\83\8dã\83«ã\81\8c確å®\9aã\81\97ã\81\9fã\82\89ã\80\81å\89²ã\82\8aå½\93ã\81¦ä¸\80覧ã\81\8cæ\9b´æ\96°ã\81\95ã\82\8cã\81\9fæ\99\82ã\81®å\87¦ç\90\86\r
tMIDIチップをレーンに割り当てる();\r
-\r
- //-----------------\r
- #endregion\r
}\r
\r
/// <summary>\r
/// </summary>\r
private void tMIDI割り当て一覧のレーン名の背景色を変更する( int RowIndex )\r
{\r
- string strレーン名 = (string)this.dgv割り当て一覧.Rows[RowIndex].Cells["DTX_Lane"].Value;\r
+ string strレーン名 = (string)this.dgv割り当て一覧.Rows[RowIndex].Cells[ "Assign_DTX_Lane" ].Value;\r
int nレーン番号 = this.formメインフォーム.mgr譜面管理者.nレーン名に対応するレーン番号を返す( strレーン名 );\r
\r
if ( nレーン番号 >= this.formメインフォーム.mgr譜面管理者.nレーン名に対応するレーン番号を返す( "LC" ) )\r
{\r
Color color = this.formメインフォーム.mgr譜面管理者.listレーン[nレーン番号].col背景色;\r
color = Color.FromArgb( color.R/2+128, color.G/2+128, color.B/2+128 );\r
- this.dgv割り当て一覧.Rows[RowIndex].Cells["DTX_Lane"].Style.BackColor = color;\r
+ this.dgv割り当て一覧.Rows[RowIndex].Cells[ "Assign_DTX_Lane" ].Style.BackColor = color;\r
}\r
else if ( strレーン名 == "* Disuse *" )\r
{\r
Color color = Color.FromArgb( 128, 128, 128 );\r
- this.dgv割り当て一覧.Rows[RowIndex].Cells["DTX_Lane"].Style.BackColor = color;\r
+ this.dgv割り当て一覧.Rows[RowIndex].Cells[ "Assign_DTX_Lane" ].Style.BackColor = color;\r
}\r
}\r
\r
{\r
if ( cMIDI != null && cMIDI.lMIDIイベント.Count > 0 )\r
{\r
- \r
#region [ チップリストで、ベロシティをDTX向けに調整する ]\r
foreach ( CMIDIイベント vMIDIイベント in cMIDI.lMIDIイベント )\r
{\r
vMIDIイベント.nベロシティ_DTX変換後 = velo;\r
}\r
#endregion\r
+ \r
+ #region [ 読み込むチャンネルを取得してキー毎のノート数を計算する ]\r
+ t読み込むチャンネルを取得してキー毎のノート数を計算する();\r
+ #endregion\r
\r
#region [ 配置予定チップを割り当て一覧に沿ってレーンを割り当てる ]\r
tMIDIチップをレーンに割り当てる();\r
\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
// 配置予定チップで、選択されているチャンネルのノーツを実際に配置する\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
#region [ LP発生なら、LPレーンを表示する。 ]\r
for ( int i = 0; i < this.dgv割り当て一覧.Rows.Count; i++ )\r
{\r
- if ( (string)this.dgv割り当て一覧.Rows[ i ].Cells[ "DTX_Lane" ].Value == "LP" &&\r
- (int)this.dgv割り当て一覧.Rows[ i ].Cells[ "Notes" ].Value > 0 )\r
+ if ( (string)this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_DTX_Lane" ].Value == "LP" &&\r
+ (int)this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_Notes" ].Value > 0 )\r
{\r
this.formメインフォーム.mgr譜面管理者.tExpandLanes( Cレーン.ELaneType.LP );\r
}\r
}\r
#endregion\r
+\r
+ tMIDIインポート設定をファイルに保存する();\r
}\r
}\r
\r
/// </summary>\r
private void tMIDIチップをレーンに割り当てる()\r
{\r
+ if ( cMIDI == null ) return;\r
+\r
// MIDIイベントがひとつでもあるなら処理する\r
if ( cMIDI.lMIDIイベント.Count == 0 ) return;\r
\r
#region [ 振り分け ]\r
foreach ( CMIDIイベント vMIDIイベント in cMIDI.lMIDIイベント )\r
{\r
- if (vMIDIイベント.nキー == (int)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells["MIDI_Key"].Value )\r
+ if (vMIDIイベント.nキー == (int)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells[ "Assign_MIDI_Key" ].Value )\r
{\r
- if ( (string)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells["DTX_Lane"].Value != "* Disuse *" )\r
+ if ( (string)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells[ "Assign_DTX_Lane" ].Value != "* Disuse *" )\r
{\r
- 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イベント.nレーン番号 = this.formメインフォーム.mgr譜面管理者.nレーン名に対応するレーン番号を返す( (string)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells[ "Assign_DTX_Lane" ].Value );\r
+ vMIDIイベント.strコメント = (string)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells[ "Assign_Comment" ].Value;\r
+ vMIDIイベント.b裏チャンネル = (bool)dgv割り当て一覧.Rows[127-vMIDIイベント.nキー].Cells[ "Assign_BackCH" ].Value;\r
+ vMIDIイベント.b入力 = (bool)cMIDI.dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells[ "Channel_Load" ].Value;\r
}\r
else\r
{\r
\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
#endregion\r
\r
t同時刻で同じレーンに配置予定のチップを数えて反映する();\r
- \r
}\r
\r
private void t同時刻で同じレーンに配置予定のチップを数えて反映する()\r
\r
// 読み込むチャンネルだけチェックする\r
foreach ( CMIDIイベント vMIDIイベント in cMIDI.lMIDIイベント ){\r
- if ( (bool)dgvチャンネル一覧.Rows[vMIDIイベント.nチャンネル0to15].Cells["ChLoad"].Value ){\r
+ // チャンネル一覧で選択されているものと、ノートのみ数える\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
- }\r
\r
this.label重複チップ数.Text = resource.GetString("label重複チップ数.Text") + " : " + cMIDI.n重複チップ数;\r
}\r
\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
}\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
- this.formメインフォーム.mgr譜面管理者.dic小節.Clear();\r
+ \r
foreach ( CMIDIイベント cm in cml )\r
{\r
if ( cm.eイベントタイプ == CMIDIイベント.Eイベントタイプ.BarLen )\r
}\r
}\r
}\r
- }\r
+ }\r
\r
/// <summary>\r
/// WAVリストを順番にソートする\r
}\r
}\r
\r
+ #region [ 設定ファイル関連 ]\r
+ //-----------------\r
+\r
+// [Serializable]\r
+ [DataContract]\r
+ [KnownType( typeof( DTXC_MIDIConvSetting ) )]\r
+ public struct DTXC_MIDIConvSetting\r
+ {\r
+ [DataMember]\r
+ public DTXC_MIDIConvSetting_Assign[] Assign;\r
+ [DataMember]\r
+ public DTXC_MIDIConvSetting_Other Other;\r
+\r
+ public DTXC_MIDIConvSetting(DTXC_MIDIConvSetting_Assign[] _Assign, DTXC_MIDIConvSetting_Other _Other)\r
+ {\r
+ Assign = _Assign;\r
+ Other = _Other;\r
+ }\r
+\r
+ }\r
+\r
+ [DataContract]\r
+ [KnownType( typeof( DTXC_MIDIConvSetting_Assign ) )]\r
+ public struct DTXC_MIDIConvSetting_Assign\r
+ {\r
+ [DataMember]\r
+ public int MIDI_Key;\r
+ [DataMember]\r
+ public string DTX_Lane;\r
+ [DataMember]\r
+ public bool BackCH;\r
+ [DataMember]\r
+ public string Comment;\r
+\r
+ public DTXC_MIDIConvSetting_Assign(int _MIDI_Key, string _DTX_Lane, bool _BackCH, string _Comment)\r
+ {\r
+ MIDI_Key = _MIDI_Key;\r
+ DTX_Lane = _DTX_Lane;\r
+ BackCH = _BackCH;\r
+ Comment = _Comment;\r
+ }\r
+ }\r
+ \r
+ [DataContract]\r
+ [KnownType( typeof( DTXC_MIDIConvSetting_Other ) )]\r
+ public struct DTXC_MIDIConvSetting_Other\r
+ {\r
+ [DataMember]\r
+ public bool VelocityMax127;\r
+ [DataMember]\r
+ public bool VelocityCurveFix;\r
+ [DataMember]\r
+ public int DTXVOLUME;\r
+\r
+ public DTXC_MIDIConvSetting_Other( bool _VelocityCurveFix, bool _VelocityMax127, int _DTXVOLUME )\r
+ {\r
+ VelocityCurveFix = _VelocityCurveFix;\r
+ VelocityMax127 = _VelocityMax127;\r
+ DTXVOLUME = _DTXVOLUME;\r
+ }\r
+ }\r
+\r
+ public void tMIDIインポート設定をファイルから読み込む()\r
+ {\r
+ #region [ ファイル確認 ]\r
+ // ファイルが無かったら新規で保存して読み込まない\r
+ if ( !File.Exists( this.formメインフォーム.strMIDIインポート設定ファイル ) ) {\r
+ this.formメインフォーム.strMIDIインポート設定ファイル = Directory.GetCurrentDirectory() + @"\" + "DTXCreatorSMFSettings.xml";\r
+ tMIDIインポート設定をファイルに保存する();\r
+ return;\r
+ }\r
+ #endregion\r
+ \r
+ #region [ xmlファイルから読込 ]\r
+ DTXC_MIDIConvSetting mcs;\r
+\r
+ using ( var stream = new FileStream( this.formメインフォーム.strMIDIインポート設定ファイル, FileMode.Open ) )\r
+ {\r
+ var serializer = new System.Xml.Serialization.XmlSerializer( typeof( DTXC_MIDIConvSetting ) );\r
+ mcs = (DTXC_MIDIConvSetting) serializer.Deserialize( stream );\r
+ }\r
+ #endregion\r
+ \r
+ #region [ 割り当て一覧の反映 ]\r
+ for ( int i = 0; i < 128; i++ )\r
+ {\r
+ this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_MIDI_Key" ].Value = mcs.Assign[ i ].MIDI_Key;\r
+ this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_DTX_Lane" ].Value = mcs.Assign[ i ].DTX_Lane;\r
+ this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_BackCH" ].Value = mcs.Assign[ i ].BackCH;\r
+ this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_Comment" ].Value = mcs.Assign[ i ].Comment;\r
+ }\r
+ #endregion\r
+\r
+ #region [ その他インポート設定の反映 ]\r
+ checkBoxベロシティカーブ調整.Checked = mcs.Other.VelocityCurveFix;\r
+ checkBoxベロシティ最大値127.Checked = mcs.Other.VelocityMax127;\r
+ numericUpDownVOLUME間隔.Value = mcs.Other.DTXVOLUME;\r
+ #endregion\r
+ \r
+ labelMIDIImportSettingsFile.Text = Path.GetFileName( this.formメインフォーム.strMIDIインポート設定ファイル );\r
+\r
+ #region [ 割り当て一覧が更新された時の処理 ]\r
+ //-----------------\r
+ for ( int i = 0 ; i < 128 ; i++ ) tMIDI割り当て一覧のレーン名の背景色を変更する( i );\r
+ tMIDIチップをレーンに割り当てる();\r
+ //-----------------\r
+ #endregion\r
+ }\r
+ \r
+ public void tMIDIインポート設定をファイルに保存する()\r
+ {\r
+ DTXC_MIDIConvSetting mcs = new DTXC_MIDIConvSetting();\r
+ mcs.Assign = new DTXC_MIDIConvSetting_Assign[ 128 ];\r
+ mcs.Other = new DTXC_MIDIConvSetting_Other();\r
+\r
+ #region [ 割り当て一覧の格納 ]\r
+ for (int i = 0; i < 128; i++)\r
+ {\r
+ mcs.Assign[ i ].MIDI_Key = (int) this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_MIDI_Key" ].Value;\r
+ mcs.Assign[ i ].DTX_Lane = (string) this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_DTX_Lane" ].Value;\r
+ mcs.Assign[ i ].BackCH = (bool) this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_BackCH" ].Value;\r
+ mcs.Assign[ i ].Comment = (string) this.dgv割り当て一覧.Rows[ i ].Cells[ "Assign_Comment" ].Value;\r
+ }\r
+ #endregion\r
+\r
+ #region [ その他インポート設定の格納 ]\r
+ mcs.Other.VelocityCurveFix = checkBoxベロシティカーブ調整.Checked;\r
+ mcs.Other.VelocityMax127 = checkBoxベロシティ最大値127.Checked;\r
+ mcs.Other.DTXVOLUME = (int)numericUpDownVOLUME間隔.Value;\r
+ #endregion\r
+ \r
+ #region [ xmlファイルに保存 ]\r
+ using ( var stream = new FileStream( this.formメインフォーム.strMIDIインポート設定ファイル, FileMode.Create ) )\r
+ {\r
+ var serializer = new System.Xml.Serialization.XmlSerializer( typeof( DTXC_MIDIConvSetting ) );\r
+ serializer.Serialize( stream, mcs );\r
+ }\r
+ #endregion\r
+ \r
+ labelMIDIImportSettingsFile.Text = Path.GetFileName( this.formメインフォーム.strMIDIインポート設定ファイル );\r
+ }\r
+\r
+ private void tMIDIインポート設定ファイル選択ダイアログを開く()\r
+ {\r
+ #region [ ファイル選択 ]\r
+ //-----------------\r
+ OpenFileDialog dialog = new OpenFileDialog();\r
+ dialog.Title = Resources.strMIDIインポート設定ファイル選択ダイアログのタイトル;\r
+ dialog.Filter = Resources.strMIDIインポート設定ファイル選択ダイアログのフィルタ;\r
+ dialog.FilterIndex = 1;\r
+ dialog.InitialDirectory =\r
+ ( this.formメインフォーム.strMIDIインポート設定ファイル != "" )\r
+ ? Path.GetDirectoryName( this.formメインフォーム.strMIDIインポート設定ファイル ) + @"\"\r
+ : Directory.GetCurrentDirectory();\r
+ DialogResult result = dialog.ShowDialog();\r
+\r
+ if (result != DialogResult.OK) return;\r
+\r
+ string strファイル名 = dialog.FileName;\r
+ //-----------------\r
+ #endregion\r
+\r
+ #region [ ファイル確認 ]\r
+ //-----------------\r
+ if ( !File.Exists( strファイル名 ) )\r
+ {\r
+ MessageBox.Show(\r
+ Resources.strMIDIインポート設定ファイルではないMSG,\r
+ Resources.strMIDIインポートエラーのタイトル,\r
+ MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);\r
+ return;\r
+ }\r
+ //-----------------\r
+ #endregion\r
+\r
+ #region [ 拡張子確認 ]\r
+ //-----------------\r
+ string str拡張子 = Path.GetExtension(strファイル名);\r
+\r
+ if ( !str拡張子.Equals(".xml", StringComparison.OrdinalIgnoreCase ) )\r
+ {\r
+ MessageBox.Show(\r
+ Resources.strMIDIインポート設定ファイルではないMSG,\r
+ Resources.strMIDIインポートエラーのタイトル,\r
+ MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );\r
+ return;\r
+ }\r
+ //-----------------\r
+ #endregion\r
+\r
+ #region [ 各設定 ]\r
+ //-----------------\r
+ this.formメインフォーム.strMIDIインポート設定ファイル = strファイル名;\r
+ //-----------------\r
+ #endregion\r
+\r
+ tMIDIインポート設定をファイルから読み込む();\r
+ }\r
+\r
+ private void tMIDIインポート設定ファイル保存ダイアログを開く()\r
+ {\r
+ #region [ ファイル選択 ]\r
+ //-----------------\r
+ SaveFileDialog dialog = new SaveFileDialog();\r
+ dialog.Title = Resources.strMIDIインポート設定ファイル保存ダイアログのタイトル;\r
+ dialog.Filter = Resources.strMIDIインポート設定ファイル選択ダイアログのフィルタ;\r
+ dialog.FilterIndex = 1;\r
+ dialog.InitialDirectory = \r
+ ( this.formメインフォーム.strMIDIインポート設定ファイル != "" )\r
+ ? Path.GetDirectoryName( this.formメインフォーム.strMIDIインポート設定ファイル ) + @"\"\r
+ : Directory.GetCurrentDirectory();\r
+ DialogResult result = dialog.ShowDialog();\r
+\r
+ if (result != DialogResult.OK) return;\r
+\r
+ string strファイル名 = dialog.FileName;\r
+ //-----------------\r
+ #endregion\r
+\r
+ #region [ 拡張子変更 ]\r
+ //-----------------\r
+ if ( Path.GetExtension( strファイル名 ).Length == 0 )\r
+ strファイル名 = Path.ChangeExtension( strファイル名, ".xml" );\r
+ //-----------------\r
+ #endregion\r
+ \r
+ #region [ 各設定 ]\r
+ //-----------------\r
+ this.formメインフォーム.strMIDIインポート設定ファイル = strファイル名;\r
+ //-----------------\r
+ #endregion\r
+\r
+ tMIDIインポート設定をファイルに保存する();\r
+ }\r
+\r
+ //-----------------\r
+ #endregion\r
+\r
}\r
}\r