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); // すでに生成済みのサウンドがあれば作り直す。 }