/// <summary> /// 指定されたシステムサウンドを生成する。 /// </summary> /// <remarks> /// 既に生成済みのサウンドは再生成しない。 /// </remarks> public void 読み込む(SoundDevice device, システムサウンド種別 type) { // 既に生成済みなら何もしない。 if (this._種別toサウンドマップ.ContainsKey(type)) { return; } // ファイル名は、<Alias>.ogg とする。 var path = new VariablePath($@"$(SystemSounds)\{type.GetAlias()}.ogg"); path = Folder.カルチャを考慮した絶対パスを返す(path.数なしパス); // ファイルがないなら無視。 if (!File.Exists(path.数なしパス)) { Log.WARNING($"システムサウンドファイルが見つかりません。スキップします。[{path.変数付きパス}]"); return; } // サンプルソースを読み込む。 var sampleSource = SampleSourceFactory.Create(device, path.数なしパス, 1.0) ?? // システムサウンドは常に再生速度 = 1.0 throw new Exception($"システムサウンドの読み込みに失敗しました。[{path.変数付きパス}]"); // サウンドを生成してマップに登録。 var sound = new PolySound(device, sampleSource, 多重度: 2); this._種別toサウンドマップ[type] = (sampleSource, sound); Log.Info($"システムサウンドを読み込みました。[{path.変数付きパス}]"); }
/// <summary> /// 指定した画像ファイルから画像を作成する。 /// </summary> public 画像(VariablePath 画像ファイルパス, BindFlags bindFlags = BindFlags.ShaderResource) : base( Global.GraphicResources.D3D11Device1, Folder.カルチャを考慮した絶対パスを返す(画像ファイルパス.数なしパス), bindFlags) { }
/// <summary> /// 指定した画像ファイルから描画可能画像を作成する。 /// </summary> public 描画可能画像(VariablePath 画像ファイルパス, BindFlags bindFlags = BindFlags.ShaderResource | BindFlags.RenderTarget) : base( Global.GraphicResources.D3D11Device1, Global.GraphicResources.既定のD2D1DeviceContext, Folder.カルチャを考慮した絶対パスを返す(画像ファイルパス.数なしパス), bindFlags) { }
public 画像D2D(VariablePath 画像ファイルパス, BitmapProperties1?bitmapProperties1 = null) : base( Global.GraphicResources.WicImagingFactory2, Global.GraphicResources.既定のD2D1DeviceContext, Folder.カルチャを考慮した絶対パスを返す(画像ファイルパス.数なしパス), bitmapProperties1) { }
public void すべて生成する(SoundDevice device) { using var _ = new LogBlock(Log.現在のメソッド名); this._すべて解放する(); lock (this._Sound利用権) { // SSTの既定のサウンドを、subChipId = 0 としてプリセット登録する。 var soundList = new List <(SSTF.チップ種別 type, VariablePath path)>() { (SSTF.チップ種別.LeftCrash, @"$(DrumSounds)\LeftCrash.wav"), (SSTF.チップ種別.Ride, @"$(DrumSounds)\Ride.wav"), (SSTF.チップ種別.Ride_Cup, @"$(DrumSounds)\RideCup.wav"), (SSTF.チップ種別.China, @"$(DrumSounds)\China.wav"), (SSTF.チップ種別.Splash, @"$(DrumSounds)\Splash.wav"), (SSTF.チップ種別.HiHat_Open, @"$(DrumSounds)\HiHatOpen.wav"), (SSTF.チップ種別.HiHat_HalfOpen, @"$(DrumSounds)\HiHatHalfOpen.wav"), (SSTF.チップ種別.HiHat_Close, @"$(DrumSounds)\HiHatClose.wav"), (SSTF.チップ種別.HiHat_Foot, @"$(DrumSounds)\HiHatFoot.wav"), (SSTF.チップ種別.Snare, @"$(DrumSounds)\Snare.wav"), (SSTF.チップ種別.Snare_OpenRim, @"$(DrumSounds)\SnareOpenRim.wav"), (SSTF.チップ種別.Snare_ClosedRim, @"$(DrumSounds)\SnareClosedRim.wav"), (SSTF.チップ種別.Snare_Ghost, @"$(DrumSounds)\SnareGhost.wav"), (SSTF.チップ種別.Bass, @"$(DrumSounds)\Bass.wav"), (SSTF.チップ種別.Tom1, @"$(DrumSounds)\Tom1.wav"), (SSTF.チップ種別.Tom1_Rim, @"$(DrumSounds)\Tom1Rim.wav"), (SSTF.チップ種別.Tom2, @"$(DrumSounds)\Tom2.wav"), (SSTF.チップ種別.Tom2_Rim, @"$(DrumSounds)\Tom2Rim.wav"), (SSTF.チップ種別.Tom3, @"$(DrumSounds)\Tom3.wav"), (SSTF.チップ種別.Tom3_Rim, @"$(DrumSounds)\Tom3Rim.wav"), (SSTF.チップ種別.RightCrash, @"$(DrumSounds)\RightCrash.wav"), (SSTF.チップ種別.LeftCymbal_Mute, @"$(DrumSounds)\LeftCymbalMute.wav"), (SSTF.チップ種別.RightCymbal_Mute, @"$(DrumSounds)\RightCymbalMute.wav"), }; foreach (var sound in soundList) { var path = new VariablePath(Folder.カルチャを考慮した絶対パスを返す(sound.path.数なしパス)); if (!File.Exists(sound.path.数なしパス)) { Log.ERROR($"サウンドファイルが存在しません。[{path.変数付きパス}]"); continue; } // サウンドファイルを読み込んでデコードする。 var sampleSource = SampleSourceFactory.Create(device, path.数なしパス, 1.0); // ドラムサウンドは常に 1.0 if (sampleSource is null) { Log.ERROR($"サウンドの生成に失敗しました。[{path.変数付きパス}]"); continue; } // コンテキストを作成する。 var context = new ドラムサウンドコンテキスト(sampleSource, ドラムサウンド.多重度); // 多重度分のサウンドを生成する。 for (int i = 0; i < context.Sounds.Length; i++) { context.Sounds[i] = new Sound(device, context.SampleSource); } // コンテキストを辞書に追加する。 if (this._チップtoコンテキスト.ContainsKey((sound.type, 0))) { // すでに辞書に存在してるなら、解放してから削除する。 this._チップtoコンテキスト[(sound.type, 0)].Dispose();