public static void t現在のユーザConfigに従ってサウンドデバイスとすべての既存サウンドを再構築する() { #region [ すでにサウンドデバイスと演奏タイマが構築されていれば解放する。] //----------------- if (Global.SoundDevice != null) { // すでに生成済みのサウンドがあれば初期状態に戻す。 CSound.tすべてのサウンドを初期状態に戻す(); // サウンドデバイスと演奏タイマを解放する。 C共通.tDisposeする(Global.SoundDevice); Global.SoundDevice = null; C共通.tDisposeする(ref Global.rc演奏用タイマ); // Global.SoundDevice を解放した後に解放すること。(Global.SoundDevice で参照されているため) } //----------------- #endregion #region [ 新しいサウンドデバイスを構築する。] //----------------- switch (Global.Users.Config.SoundDeviceType) { case ESoundDeviceType.ExclusiveWASAPI: Global.SoundDevice = new CSoundDeviceWASAPI(CSoundDeviceWASAPI.Eデバイスモード.排他, Global.Users.Config.SoundDelayExclusiveWASAPI, Global.Users.Config.SoundUpdatePeriodExclusiveWASAPI); break; case ESoundDeviceType.SharedWASAPI: Global.SoundDevice = new CSoundDeviceWASAPI(CSoundDeviceWASAPI.Eデバイスモード.共有, Global.Users.Config.SoundDelaySharedWASAPI, Global.Users.Config.SoundUpdatePeriodSharedWASAPI); break; case ESoundDeviceType.ASIO: Global.SoundDevice = new CSoundDeviceASIO(Global.Users.Config.SoundDelayASIO); break; case ESoundDeviceType.DirectSound: Global.SoundDevice = new CSoundDeviceDirectSound(Global.App.Window.Handle, Global.Users.Config.SoundDelayDirectSound); break; default: throw new Exception(string.Format("未対応の SoundDeviceType です。[{0}]", Global.Users.Config.SoundDeviceType.ToString())); } //----------------- #endregion #region [ 新しい演奏タイマを構築する。] //----------------- Global.rc演奏用タイマ = new CSoundTimer(Global.SoundDevice); //----------------- #endregion CSound.tすべてのサウンドを再構築する(Global.SoundDevice); // すでに生成済みのサウンドがあれば作り直す。 }
/// <summary> /// カウントを開始する。(double版) /// </summary> /// <param name="db開始値">最初のカウント値。</param> /// <param name="db終了値">最後のカウント値。</param> /// <param name="db間隔">カウント値を1増加させるのにかける時間(秒単位)。</param> /// <param name="timer">カウントに使用するタイマ。</param> public void t開始(double db開始値, double db終了値, double db間隔ms, CSoundTimer timer) { this.db開始値 = db開始値; this.db終了値 = db終了値; this._db間隔 = db間隔ms; this.timerdb = timer; this.db現在の経過時間 = this.timerdb.dbシステム時刻; this.db現在の値 = db開始値; if (db間隔 <= 0) { db間隔 = -db間隔; } }
// 静的メソッド public static void t初期化(CApp app) { Global.App = app; Global.Folder = new Folder(); // ユーザ個別フォルダのみユーザ依存 #if n Global.PlayerMode = new PlayerMode(); Global.Users = Users.t読み込む(Global.Folder.strUsersXMLの絶対パス); Global.Input = new Input(); Global.Song = new Song(); Global.Stage = new Stage(); Global.VirtualDrums = new VirtualDrums(); // ユーザ依存 Global.Theme = new Theme(); // ユーザ依存 Global.EnvironmentProperties = StrokeStyleT.EnvironmentParameters.t読み込む(Global.Folder.strEnvironmentPropertiesXMLの絶対パス); // 環境依存 Global.rc演奏用タイマ = null; // Global.Bass 依存(つまりユーザ依存) Global.Actフリップボード = new CMActフリップボード(Global.Theme.TextureFormat); Global.Act英数字描画 = new CAct英数字描画(); #endif Global.SoundDevice = null; // ユーザ依存 Global.bウィンドウがアクティブである = false; }
/// <summary>生成と同時に開始する。(double版)</summary> public CCounter(double db開始値, double db終了値, double db間隔ms, CSoundTimer timer) : this() { this.t開始(db開始値, db終了値, db間隔ms * 1000.0, timer); }