"遅延の少ない演奏を楽しむことが\n" +\r
"できます。\n" +\r
"\n" +\r
- "※ 設定はアプリ再起動後に有効に\n" +\r
- " なります。",\r
+ "※ 設定はCONFIGURATION画面の\n" +\r
+ " 終了時に有効になります。",\r
"Sound output type:\n" +\r
"You can choose WASAPI, ASIO or\n" +\r
"DShow(DirectShow).\n" +\r
"You should use WASAPI or ASIO\n" +\r
"to decrease the sound lag.\n" +\r
"\n" +\r
- "Note: Restart DTXMania to make\n" +\r
+ "Note: Exit CONFIGURATION to make\n" +\r
" the setting take effect.",\r
new string[] { "DShow", "ASIO", "WASAPI" });\r
this.list項目リスト.Add(this.iSystemSoundType);\r
"サイズを自動設定します。\n" +\r
"値を小さくするほど発音ラグが\n" +\r
"減少しますが、音割れや異常動作を\n" +\r
- "引き起こす場合があります。\n",\r
+ "引き起こす場合があります。\n" +\r
+ "※ 設定はCONFIGURATION画面の\n" +\r
+ " 終了時に有効になります。",\r
"Sound buffer size for WASAPI:\n" +\r
"You can set from 0 to 99999ms.\n" +\r
"Set 0 to use a default sysytem\n" +\r
"Smaller value makes smaller lag,\n" +\r
"but it may cause sound troubles.\n" +\r
"\n" +\r
- "Note: Restart DTXMania to make\n" +\r
+ "Note: Exit CONFIGURATION to make\n" +\r
" the setting take effect." );\r
this.list項目リスト.Add( this.iSystemWASAPIBufferSizeMs );\r
\r
"ASIO使用時のサウンドデバイスを\n" +\r
"選択します。\n" +\r
"\n" +\r
- "※ 設定はアプリ再起動後に有効に\n" +\r
- " なります。",\r
+ "※ 設定はCONFIGURATION画面の\n" +\r
+ " 終了時に有効になります。",\r
"ASIO Sound Device:\n" +\r
"Select the sound device to use\n" +\r
"under ASIO mode.\n" +\r
"\n" +\r
- "Note: Restart DTXMania to make\n" +\r
+ "Note: Exit CONFIGURATION to make\n" +\r
" the setting take effect.",\r
asiodevs );\r
this.list項目リスト.Add( this.iSystemASIODevice );\r
"減少しますが、音割れや異常動作を\n" +\r
"引き起こす場合があります。\n" +\r
"\n" +\r
- "※ 設定はアプリ再起動後に有効に\n" +\r
- " なります。",\r
+ "※ 設定はCONFIGURATION画面の\n" +\r
+ " 終了時に有効になります。",\r
"Sound buffer size for ASIO:\n" +\r
"You can set from 0 to 99999ms.\n" +\r
"Set 0 to use a default value already\n" +\r
"Smaller value makes smaller lag,\n" +\r
"but it may cause sound troubles.\n" +\r
"\n" +\r
- "Note: Restart DTXMania to make\n" +\r
- " the setting take effect.");\r
- this.list項目リスト.Add(this.iSystemASIOBufferSizeMs);\r
+ "Note: Exit CONFIGURATION to make\n" +\r
+ " the setting take effect." );\r
+ this.list項目リスト.Add( this.iSystemASIOBufferSizeMs );\r
\r
this.iSystemSkinSubfolder = new CItemList( "Skin (General)", CItemBase.Eパネル種別.通常, nSkinIndex,\r
"スキン切替:\n" +\r
this.n現在のスクロールカウンタ = 0;\r
this.nスクロール用タイマ値 = -1;\r
this.ct三角矢印アニメ = new CCounter();\r
- \r
+\r
+ this.iSystemSoundType_initial = this.iSystemSoundType.n現在選択されている項目番号; // CONFIGに入ったときの値を保持しておく\r
+ this.iSystemWASAPIBufferSizeMs_initial = this.iSystemWASAPIBufferSizeMs.n現在の値; // CONFIG脱出時にこの値から変更されているようなら\r
+ this.iSystemASIOBufferSizeMs_initial = this.iSystemASIOBufferSizeMs.n現在の値; // サウンドデバイスを再構築する\r
+ this.iSystemASIODevice_initial = this.iSystemASIODevice.n現在選択されている項目番号; //\r
base.On活性化();\r
}\r
public override void On非活性化()\r
this.ct三角矢印アニメ = null;\r
\r
base.On非活性化();\r
-\r
+ #region [ Skin変更 ]\r
if ( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( true ) != this.skinSubFolder_org )\r
{\r
CDTXMania.stageChangeSkin.tChangeSkinMain(); // #28195 2012.6.11 yyagi CONFIG脱出時にSkin更新\r
}\r
+ #endregion\r
+\r
+ // #24820 2013.1.22 yyagi CONFIGでWASAPI/ASIO/DirectSound関連の設定を変更した場合、サウンドデバイスを再構築する。\r
+ #region [ サウンドデバイス変更 ]\r
+ if ( this.iSystemSoundType_initial != this.iSystemSoundType.n現在選択されている項目番号 ||\r
+ this.iSystemWASAPIBufferSizeMs_initial != this.iSystemWASAPIBufferSizeMs.n現在の値 ||\r
+ this.iSystemASIOBufferSizeMs_initial != this.iSystemASIOBufferSizeMs.n現在の値 ||\r
+ this.iSystemASIODevice_initial != this.iSystemASIODevice.n現在選択されている項目番号 )\r
+ {\r
+ ESoundDeviceType soundDeviceType;\r
+ switch ( this.iSystemSoundType.n現在選択されている項目番号 )\r
+ {\r
+ case 0:\r
+ soundDeviceType = ESoundDeviceType.DirectSound;\r
+ break;\r
+ case 1:\r
+ soundDeviceType = ESoundDeviceType.ASIO;\r
+ break;\r
+ case 2:\r
+ soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
+ break;\r
+ default:\r
+ soundDeviceType = ESoundDeviceType.Unknown;\r
+ break;\r
+ }\r
\r
+ FDK.CSound管理.t初期化( soundDeviceType,\r
+ this.iSystemWASAPIBufferSizeMs.n現在の値,\r
+ this.iSystemASIOBufferSizeMs.n現在の値,\r
+ this.iSystemASIODevice.n現在選択されている項目番号 );\r
+ CDTXMania.app.AddSoundTypeToWindowTitle();\r
+ }\r
+ #endregion\r
}\r
public override void OnManagedリソースの作成()\r
{\r
private CItemInteger iSystemASIOBufferSizeMs; // #24820 2013.1.3 yyagi\r
private CItemList iSystemASIODevice; // $24820 2013.1.17 yyagi\r
\r
+ private int iSystemSoundType_initial;\r
+ private int iSystemWASAPIBufferSizeMs_initial;\r
+ private int iSystemASIOBufferSizeMs_initial;\r
+ private int iSystemASIODevice_initial;\r
+\r
+\r
private List<CItemBase> list項目リスト;\r
private long nスクロール用タイマ値;\r
private int n現在のスクロールカウンタ;\r
public CSound管理( IntPtr handle, ESoundDeviceType soundDeviceType, int nSoundDelayExclusiveWASAPI, int nSoundDelayASIO, int nASIODevice )\r
{\r
WindowHandle = handle;\r
+ SoundDevice = null;\r
t初期化( soundDeviceType, nSoundDelayExclusiveWASAPI, nSoundDelayASIO, nASIODevice );\r
}\r
public void Dispose()\r
\r
public static void t初期化( ESoundDeviceType soundDeviceType, int _nSoundDelayExclusiveWASAPI, int _nSoundDelayASIO, int _nASIODevice )\r
{\r
- SoundDevice = null; // ユーザ依存\r
+ //SoundDevice = null; // 後で再初期化することがあるので、null初期化はコンストラクタに回す\r
rc演奏用タイマ = null; // Global.Bass 依存(つまりユーザ依存)\r
nMixing = 0;\r
\r
{\r
try\r
{\r
+Debug.WriteLine( "n初期デバイス=" + n初期デバイス );\r
t現在のユーザConfigに従ってサウンドデバイスとすべての既存サウンドを再構築する();\r
break;\r
}\r
\r
public static void tすべてのサウンドを初期状態に戻す()\r
{\r
- foreach( var sound in CSound.listインスタンス )\r
+ foreach ( var sound in CSound.listインスタンス )\r
+ {\r
+ Debug.WriteLine( "解放: " + Path.GetFileName( sound.strファイル名 ) );\r
sound.t解放する();\r
+ }\r
}\r
public static void tすべてのサウンドを再構築する( ISoundDevice device )\r
{\r