public STInstValue<COptionInteger> cdForceScaledMovieH; // #38362 2018.1.8 add yyagi
/// <summary>
- /// 旧AVIを強制的にウインドウ全体に表示するときの、Y座標
- /// (114で...FullMovieYから...ScalewdMovieYに改名)
+ /// USBケーブル「MIDI2.0-USB」を使用しているときの警告表示有無
+ /// </summary>
+ [DataMember(Order = 115)]
+ public COptionBool bWarnMIDI20USB; // #37961 2019.1.21 add yyagi
+
+ /// <summary>
+ /// USB接続のサウンドデバイスを使用しているときの警告表示有無
/// </summary>
[DataMember(Order = 115)]
- public COptionBool bWarnMIDI20USB; // #37961 2019.1.21 add yyagi
+ public COptionBool bWarnSoundDeviceOnUSB; // #38358 2019.2.1 add yyagi
public int GetLaneX(ELane e)
bShowSongPath = new COptionBool( false );
bWarnMIDI20USB = new COptionBool(true);
+ bWarnSoundDeviceOnUSB = new COptionBool(true);
// string
strSongDataPath = new COptionString(@".\");
FDK.CSound管理.bIsTimeStretch = CDTXMania.Instance.ConfigIni.bTimeStretch;
Sound管理.nMasterVolume = CDTXMania.Instance.ConfigIni.nMasterVolume;
//FDK.CSound管理.bIsMP3DecodeByWindowsCodec = CDTXMania.Instance.ConfigIni.bNoMP3Streaming;
+
+
+ string strDefaultSoundDeviceBusType = CSound管理.strDefaultDeviceBusType;
+ Trace.TraceInformation($"Bus type of the default sound device = {strDefaultSoundDeviceBusType}");
+
+ if (strDefaultSoundDeviceBusType.ToUpper().Equals("USB"))
+ {
+ if (CDTXMania.Instance.ConfigIni.bWarnSoundDeviceOnUSB.Value)
+ {
+ string strWarnMes = CDTXMania.Instance.Resources.Explanation("strWarnSoundDeviceOnUSB");
+ var ret = MessageBox.Show(strWarnMes, "DTXMania Warning", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);
+ if (ret == DialogResult.OK)
+ {
+ CDTXMania.Instance.ConfigIni.bWarnSoundDeviceOnUSB.Value = false;
+ }
+ }
+ }
+
Trace.TraceInformation("サウンドデバイスの初期化を完了しました。");
}
catch (Exception e)
foreach (System.Management.ManagementObject mo in moc)
{
Trace.TraceInformation("-------------------------");
- Trace.TraceInformation("Sound Information:");
+ Trace.TraceInformation("Audio Information:");
//Trace.TraceInformation("Caption: " + mo["Caption"]);
- Trace.TraceInformation("ProductName: " + mo["ProductName"]);
+ //Trace.TraceInformation("ProductName: " + mo["ProductName"]);
//Trace.TraceInformation("DMABufferSize: " + mo["DMABufferSize"]);
+
+ foreach (PropertyData property in mo.Properties)
+ {
+ Trace.TraceInformation("{0}:{1}", property.Name, property.Value);
+ }
}
moc.Dispose();
mc.Dispose();
public static bool bIsTimeStretch = false;
+ public static string strDefaultDeviceBusType
+ {
+ get
+ {
+ return SoundDevice.strDefaultSoundDeviceBusType;
+ }
+ }
+
private static int _nMasterVolume;
public int nMasterVolume
{
Bass.BASS_SetConfig( BASSConfig.BASS_CONFIG_UPDATETHREADS, nCPUCores );
//Bass.BASS_SetConfig( BASSConfig.BASS_CONFIG_UPDATEPERIOD, 0 );
- Trace.TraceInformation( "BASS_CONFIG_UpdatePeriod=" + Bass.BASS_GetConfig( BASSConfig.BASS_CONFIG_UPDATEPERIOD ) );
+ //Trace.TraceInformation( "BASS_CONFIG_UpdatePeriod=" + Bass.BASS_GetConfig( BASSConfig.BASS_CONFIG_UPDATEPERIOD ) );
Trace.TraceInformation( "BASS_CONFIG_UpdateThreads=" + Bass.BASS_GetConfig( BASSConfig.BASS_CONFIG_UPDATETHREADS ) );
}
}
}
}
+ public string strDefaultSoundDeviceBusType {
+ get;
+ protected set;
+ }
+
// メソッド
public CSoundDeviceASIO( long n希望バッファサイズms, int _nASIODevice )
#endregion
}
+ strDefaultSoundDeviceBusType = ""; // ASIOは低遅延前提のはずなので、deafult sound device(のバスタイプ)を気に掛けないことにする
+
// ASIO 出力チャンネルの初期化。
this.tAsioProc = new ASIOPROC( this.tAsio処理 ); // アンマネージに渡す delegate は、フィールドとして保持しておかないとGCでアドレスが変わってしまう。
}
}
+ public string strDefaultSoundDeviceBusType
+ {
+ get;
+ protected set;
+ }
+
// メソッド
{
ctimer = new CTimer( CTimer.E種別.MultiMedia );
}
+
+ strDefaultSoundDeviceBusType = ""; // DirectSoundの処理負荷は軽いので、deafult sound device(のバスタイプ)を気に掛ける必要なし
+
Trace.TraceInformation( "DirectSound を初期化しました。({0})({1})", ( priority ) ? "Priority" : "Normal", bUseOSTimer? "OStimer" : "FDKtimer" );
}
}
}
}
+
+ public string strDefaultSoundDeviceBusType {
+ get;
+ protected set;
+ }
+
+
// メソッド
/// <summary>
//(デバッグ用)
Trace.TraceInformation("サウンドデバイス一覧:");
int a;
- string strDefaultSoundDeviceName = "";
+ string strDefaultSoundDeviceName = null;
BASS_DEVICEINFO[] bassDevInfos = Bass.BASS_GetDeviceInfos();
for (a = 0; a < bassDevInfos.GetLength(0); a++)
{
{
- Trace.TraceInformation("Sound Device #{0}: {1}: IsDefault={2}, isEnabled={3}, flags={4}, driver={5}",
+ Trace.TraceInformation("Sound Device #{0}: {1}: IsDefault={2}, isEnabled={3}, flags={4}, id={5}",
a,
bassDevInfos[a].name,
bassDevInfos[a].IsDefault,
bassDevInfos[a].IsEnabled,
bassDevInfos[a].flags,
- bassDevInfos[a].driver
+ bassDevInfos[a].id
);
if (bassDevInfos[a].IsDefault)
{
+ // これはOS標準のdefault device。後でWASAPIのdefault deviceと比較する。
strDefaultSoundDeviceName = bassDevInfos[a].name;
+
+ // 以下はOS標準 default deviceのbus type (PNPIDの頭の文字列)。上位側で使用する。
+ string[] s = bassDevInfos[a].id.ToString().ToUpper().Split(new char[] { '#' });
+ if (s != null && s[0] != null)
+ {
+ strDefaultSoundDeviceBusType = s[0];
+ }
}
}
}
long n経過時間ms { get; }
long n経過時間を更新したシステム時刻ms { get; }
CTimer tmシステムタイマ { get; }
+ string strDefaultSoundDeviceBusType { get; }
CSound tサウンドを作成する( string strファイル名 );
CSound tサウンドを作成する( string strファイル名, CSound.EInstType einstType );