• R/O
  • HTTP
  • SSH
  • HTTPS

CsWin10Desktop3: Commit

Visual C# 7.0, Windows10 Desktop App


Commit MetaInfo

Revisiónbdfd8c8196bd84fb985399978abdb3c1c793fc6e (tree)
Tiempo2017-10-16 21:24:59
Autorくまかみ工房 <kumakamikoubou@gmai...>
Commiterくまかみ工房

Log Message

現状の FDK.メディア.サウンド.WASAPI に合わせて StrokeStyleT プロジェクトを更新。

Cambiar Resumen

Diferencia

--- a/StrokeStyleT/App.cs
+++ b/StrokeStyleT/App.cs
@@ -70,7 +70,7 @@ namespace SST
7070 protected set;
7171 } = null;
7272
73- public static FDK.メディア.サウンド.WASAPI.Device サウンドデバイス
73+ public static FDK.メディア.サウンド.WASAPI.SoundDevice サウンドデバイス
7474 {
7575 get;
7676 protected set;
@@ -195,7 +195,7 @@ namespace SST
195195 App.入力管理 = new 入力管理( this.Handle, 32 );
196196
197197 Log.Header( "サウンドを初期化します。" );
198- App.サウンドデバイス = new FDK.メディア.サウンド.WASAPI.Device( CSCore.CoreAudioAPI.AudioClientShareMode.Shared );
198+ App.サウンドデバイス = new FDK.メディア.サウンド.WASAPI.SoundDevice( CSCore.CoreAudioAPI.AudioClientShareMode.Shared );
199199 App.サウンドタイマ = new FDK.メディア.サウンド.WASAPI.SoundTimer( App.サウンドデバイス );
200200
201201 Log.Header( "ユーザを初期化します。" );
@@ -399,7 +399,7 @@ namespace SST
399399 if( App.ビュアーモードではない )
400400 return 0f;
401401
402- return (float) ( App.サウンドデバイス?.遅延sec ?? 0.0 ) * 1000.0f;
402+ return (float) ( App.サウンドデバイス?.再生遅延sec ?? 0.0 ) * 1000.0f;
403403 }
404404 //----------------
405405 #endregion
--- a/StrokeStyleT/ステージ/曲読込/曲読込ステージ.cs
+++ b/StrokeStyleT/ステージ/曲読込/曲読込ステージ.cs
@@ -70,7 +70,7 @@ namespace SST.ステージ.曲読込
7070
7171 #region " サウンドデバイス遅延を取得し、全チップの発声時刻へ反映する。"
7272 //----------------
73- float 再生時遅延ms = (float) ( App.サウンドデバイス.遅延sec * 1000.0 );
73+ float 再生時遅延ms = (float) ( App.サウンドデバイス.再生遅延sec * 1000.0 );
7474
7575 foreach( var chip in App.演奏スコア.チップリスト )
7676 chip.発声時刻ms -= (long) 再生時遅延ms;
--- a/StrokeStyleT/ステージ/演奏/ドラムサウンド.cs
+++ b/StrokeStyleT/ステージ/演奏/ドラムサウンド.cs
@@ -4,6 +4,7 @@ using System.Diagnostics;
44 using System.IO;
55 using System.Linq;
66 using System.Xml.Linq;
7+using CSCore;
78 using FDK;
89 using FDK.メディア;
910 using FDK.メディア.サウンド.WASAPI;
@@ -78,6 +79,7 @@ namespace SST.ステージ.演奏
7879
7980 private class Cコンテキスト : IDisposable
8081 {
82+ public ISampleSource sampleSource = null;
8183 public Sound[] Sounds = new Sound[ _多重度 ];
8284 public int 次に再生するSound番号 = 0;
8385 public void Dispose()
@@ -90,6 +92,7 @@ namespace SST.ステージ.演奏
9092 FDKUtilities.解放する( ref this.Sounds[ i ] );
9193 }
9294 }
95+ FDKUtilities.解放する( ref this.sampleSource );
9396 }
9497 };
9598
@@ -168,13 +171,14 @@ namespace SST.ステージ.演奏
168171
169172 // コンテキストを作成する。
170173 var context = new Cコンテキスト() {
174+ sampleSource = SampleSourceFactory.Create( App.サウンドデバイス, サウンドファイルパス ),
171175 Sounds = new Sound[ ドラムサウンド._多重度 ],
172176 次に再生するSound番号 = 0,
173177 };
174178
175179 // 多重度分のサウンドを生成する。
176180 for( int i = 0; i < context.Sounds.Length; i++ )
177- context.Sounds[ i ] = App.サウンドデバイス.サウンドを生成する( サウンドファイルパス );
181+ context.Sounds[ i ] = new Sound( App.サウンドデバイス, context.sampleSource );
178182
179183 // コンテキストを辞書に追加する。
180184 this._チップtoコンテキスト.Add( chipType, context );
--- a/StrokeStyleT/ステージ/演奏/演奏ステージ.cs
+++ b/StrokeStyleT/ステージ/演奏/演奏ステージ.cs
@@ -3,6 +3,7 @@ using System.Collections.Concurrent;
33 using System.Collections.Generic;
44 using System.Diagnostics;
55 using System.Linq;
6+using CSCore;
67 using SharpDX;
78 using SharpDX.DirectInput;
89 using FDK;
@@ -96,7 +97,7 @@ namespace SST.ステージ.演奏
9697 this.子リスト.Add( this._背景動画 = new 動画( App.演奏スコア.背景動画ファイル名 ) );
9798
9899 // 動画から音声パートを抽出して BGM を作成。
99- if( ( null != this._デコード済みWaveSource ) && this._デコード済みWaveSource.Path.Equals( App.演奏スコア.背景動画ファイル名 ) )
100+ if( ( null != this._デコード済みSampleSource ) && this._デコード済みWaveSourcePath.Equals( App.演奏スコア.背景動画ファイル名 ) )
100101 {
101102 // (A) 前回生成したBGMとパスが同じなので、前回のデコード済み WaveSource をキャッシュとして再利用する。
102103 Log.Info( "前回生成したサウンドデータを再利用します。" );
@@ -104,12 +105,13 @@ namespace SST.ステージ.演奏
104105 else
105106 {
106107 // (B) 初めての生成か、または前回生成したBGMとパスが違うので、新しくデコード済み WaveSource を生成する。
107- this._デコード済みWaveSource?.Dispose();
108- this._デコード済みWaveSource = new DecodedWaveSource( App.演奏スコア.背景動画ファイル名, App.サウンドデバイス.WaveFormat );
108+ this._デコード済みSampleSource?.Dispose();
109+ this._デコード済みSampleSource = SampleSourceFactory.Create( App.サウンドデバイス, App.演奏スコア.背景動画ファイル名 );
110+ this._デコード済みWaveSourcePath = App.演奏スコア.背景動画ファイル名;
109111 }
110112
111113 this._BGM?.Dispose();
112- this._BGM = App.サウンドデバイス.サウンドを生成する( this._デコード済みWaveSource );
114+ this._BGM = new Sound( App.サウンドデバイス, this._デコード済みSampleSource );
113115 }
114116 else
115117 {
@@ -644,7 +646,7 @@ namespace SST.ステージ.演奏
644646 using( Log.Block( FDKUtilities.現在のメソッド名 ) )
645647 {
646648 this.BGMを停止する();
647- FDKUtilities.解放する( ref this._デコード済みWaveSource );
649+ FDKUtilities.解放する( ref this._デコード済みSampleSource );
648650 }
649651 }
650652
@@ -677,7 +679,8 @@ namespace SST.ステージ.演奏
677679 /// 活性化と非活性化に関係なく、常に最後にデコードしたデータを持つ。(キャッシュ)
678680 /// 演奏ステージインスタンスを破棄する際に、このインスタンスもDisposeすること。
679681 /// </remarks>
680- private DecodedWaveSource _デコード済みWaveSource = null;
682+ private ISampleSource _デコード済みSampleSource = null;
683+ private string _デコード済みWaveSourcePath = null;
681684
682685 private bool _背景動画開始済み = false;
683686
@@ -781,7 +784,11 @@ namespace SST.ステージ.演奏
781784 return;
782785 }
783786
784- double 背景動画の長さsec = this._BGM?.長さsec ?? 0.0; // 動画のサイズは、映像ではなく音声を優先する。
787+ double 背景動画の長さsec = 0.0; // 動画のサイズは、映像ではなく音声を優先する。
788+ if( null != this._BGM )
789+ {
790+ 背景動画の長さsec = this._BGM.WaveFormat.BytesToMilliseconds( this._BGM.Length * this._BGM.WaveFormat.BytesPerSample ) / 1000.0;
791+ }
785792
786793 Log.Info( $"背景動画の発生時刻: {背景動画チップ.発声時刻sec} sec" );
787794 Log.Info( $"背景動画の長さ: {背景動画の長さsec} sec" );
@@ -793,7 +800,7 @@ namespace SST.ステージ.演奏
793800 double 再生開始時刻sec = ( 時刻sec - 背景動画チップ.発声時刻sec );
794801 this._背景動画?.再生を開始する( 再生開始時刻sec );
795802 this._背景動画開始済み = true;
796- this._BGM?.Play( 再生開始時刻sec - App.サウンドデバイス.遅延sec );
803+ this._BGM?.Play( 再生開始時刻sec - App.サウンドデバイス.再生遅延sec );
797804 this._BGM再生開始済み = true;
798805 Log.Info( $"背景動画の再生を開始しました。(再生開始時刻: {再生開始時刻sec} sec)" );
799806 }
Show on old repository browser