Ejemplo n.º 1
0
        /// <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.変数付きパス}]");
        }
Ejemplo n.º 2
0
 /// <summary>
 ///     指定した画像ファイルから画像を作成する。
 /// </summary>
 public 画像(VariablePath 画像ファイルパス, BindFlags bindFlags = BindFlags.ShaderResource)
     : base(
         Global.GraphicResources.D3D11Device1,
         Folder.カルチャを考慮した絶対パスを返す(画像ファイルパス.数なしパス),
         bindFlags)
 {
 }
Ejemplo n.º 3
0
 /// <summary>
 ///     指定した画像ファイルから描画可能画像を作成する。
 /// </summary>
 public 描画可能画像(VariablePath 画像ファイルパス, BindFlags bindFlags = BindFlags.ShaderResource | BindFlags.RenderTarget)
     : base(
         Global.GraphicResources.D3D11Device1,
         Global.GraphicResources.既定のD2D1DeviceContext,
         Folder.カルチャを考慮した絶対パスを返す(画像ファイルパス.数なしパス),
         bindFlags)
 {
 }
Ejemplo n.º 4
0
 public 画像D2D(VariablePath 画像ファイルパス, BitmapProperties1?bitmapProperties1 = null)
     : base(
         Global.GraphicResources.WicImagingFactory2,
         Global.GraphicResources.既定のD2D1DeviceContext,
         Folder.カルチャを考慮した絶対パスを返す(画像ファイルパス.数なしパス),
         bitmapProperties1)
 {
 }
Ejemplo n.º 5
0
        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();