public ドラムサウンド()
{
}
+
protected override void On活性化( デバイスリソース dr )
{
- this.KitXmlを読み込む();
+ this._KitXmlを読み込む();
}
+
protected override void On非活性化( デバイスリソース dr )
{
- this.すべてのコンテキストを初期化する();
+ this._すべてのコンテキストを初期化する();
}
+
public void 発声する( SSTFormat.チップ種別 chipType, float 音量0to1 )
{
- lock( this.スレッド間同期 )
+ lock( this._スレッド間同期 )
{
- if( false == this.チップtoコンテキスト.ContainsKey( chipType ) )
+ if( false == this._チップtoコンテキスト.ContainsKey( chipType ) )
return; // コンテキスト未登録のチップなら何もしない。
- var context = this.チップtoコンテキスト[ chipType ];
+ var context = this._チップtoコンテキスト[ chipType ];
// 現在発声中のサウンドを全部止めるチップ種別の場合は止める。
if( 0 != chipType.排他発声グループID() ) // ID = 0 は対象外。
{
- // 同じ排他発声グループIDを持つコンテキストの Sounds[] を select する。
+ // 消音対象のコンテキストの Sounds[] を select する。
var 停止するサウンド群 =
- from kvp in this.チップtoコンテキスト
- where ( kvp.Key.排他発声グループID() == chipType.排他発声グループID() )
+ from kvp in this._チップtoコンテキスト
+ where ( chipType.直前のチップを消音する( kvp.Key ) )
select kvp.Value.Sounds;
// 集めた Sounds[] をすべて停止する。
// サウンドローテーション。
context.次に再生するSound番号++;
- if( context.次に再生するSound番号 >= ドラムサウンド.多重度 )
+ if( context.次に再生するSound番号 >= ドラムサウンド._多重度 )
context.次に再生するSound番号 = 0;
}
}
- protected const int 多重度 = 2;
- protected readonly string KitXmlファイルパス = @"$(Static)\sounds\Kit.xml";
- protected class Cコンテキスト : IDisposable
+ private const int _多重度 = 2;
+
+ private class Cコンテキスト : IDisposable
{
- public FDK.メディア.サウンド.WASAPI.Sound[] Sounds = new FDK.メディア.サウンド.WASAPI.Sound[ ドラムサウンド.多重度 ];
+ public FDK.メディア.サウンド.WASAPI.Sound[] Sounds = new FDK.メディア.サウンド.WASAPI.Sound[ ドラムサウンド._多重度 ];
public int 次に再生するSound番号 = 0;
public void Dispose()
}
}
};
- protected Dictionary<SSTFormat.チップ種別, Cコンテキスト> チップtoコンテキスト = null;
- private void すべてのコンテキストを初期化する()
+ private Dictionary<SSTFormat.チップ種別, Cコンテキスト> _チップtoコンテキスト = null;
+
+ private readonly string _KitXmlファイルパス = @"$(Static)\sounds\Kit.xml";
+
+ private readonly object _スレッド間同期 = new object();
+
+ private void _すべてのコンテキストを初期化する()
{
// すでに存在しているなら解放する。
- if( null != this.チップtoコンテキスト )
+ if( null != this._チップtoコンテキスト )
{
- foreach( var kvp in this.チップtoコンテキスト )
+ foreach( var kvp in this._チップtoコンテキスト )
( (Cコンテキスト) kvp.Value ).Dispose();
}
// 生成する。
- this.チップtoコンテキスト = new Dictionary<SSTFormat.チップ種別, Cコンテキスト>();
+ this._チップtoコンテキスト = new Dictionary<SSTFormat.チップ種別, Cコンテキスト>();
}
- private void KitXmlを読み込む()
+
+ private void _KitXmlを読み込む()
{
- this.すべてのコンテキストを初期化する();
+ this._すべてのコンテキストを初期化する();
- string ファイルパス = FDK.フォルダ.絶対パスに含まれるフォルダ変数を展開して返す( this.KitXmlファイルパス );
+ string ファイルパス = FDK.フォルダ.絶対パスに含まれるフォルダ変数を展開して返す( this._KitXmlファイルパス );
if( false == File.Exists( ファイルパス ) )
{
- FDK.Log.WARNING( $"Kit ファイルが存在しません。ドラムサウンドは生成されません。[{this.KitXmlファイルパス}]" );
+ FDK.Log.WARNING( $"Kit ファイルが存在しません。ドラムサウンドは生成されません。[{this._KitXmlファイルパス}]" );
return;
}
if( File.Exists( サウンドファイルパス ) )
{
// すでに辞書に存在してるなら、解放して削除する。
- if( this.チップtoコンテキスト.ContainsKey( チップ種別 ) )
+ if( this._チップtoコンテキスト.ContainsKey( チップ種別 ) )
{
- this.チップtoコンテキスト[ チップ種別 ]?.Dispose();
- this.チップtoコンテキスト.Remove( チップ種別 );
+ this._チップtoコンテキスト[ チップ種別 ]?.Dispose();
+ this._チップtoコンテキスト.Remove( チップ種別 );
}
// コンテキストを作成する。
var context = new Cコンテキスト() {
- Sounds = new FDK.メディア.サウンド.WASAPI.Sound[ ドラムサウンド.多重度 ],
+ Sounds = new FDK.メディア.サウンド.WASAPI.Sound[ ドラムサウンド._多重度 ],
次に再生するSound番号 = 0,
};
context.Sounds[ i ] = StrokeStyleT.サウンドデバイス.CreateSound( サウンドファイルパス );
// コンテキストを辞書に追加する。
- this.チップtoコンテキスト.Add( チップ種別, context );
+ this._チップtoコンテキスト.Add( チップ種別, context );
}
else
{
- FDK.Log.WARNING( $"サウンドファイル {FDK.フォルダ.絶対パスをフォルダ変数付き絶対パスに変換して返す( サウンドファイルパス )} が存在しません。[{this.KitXmlファイルパス}]" );
+ FDK.Log.WARNING( $"サウンドファイル {FDK.フォルダ.絶対パスをフォルダ変数付き絶対パスに変換して返す( サウンドファイルパス )} が存在しません。[{this._KitXmlファイルパス}]" );
}
}
else
{
- FDK.Log.WARNING( $"未知の要素 {Sound要素のName属性.Value} をスキップします。[{this.KitXmlファイルパス}]" );
+ FDK.Log.WARNING( $"未知の要素 {Sound要素のName属性.Value} をスキップします。[{this._KitXmlファイルパス}]" );
}
break;
}
}
catch( Exception e )
{
- FDK.Log.ERROR( $"Kitファイルの読み込みに失敗しました。{e.Message}[{this.KitXmlファイルパス}]" );
+ FDK.Log.ERROR( $"Kitファイルの読み込みに失敗しました。{e.Message}[{this._KitXmlファイルパス}]" );
}
}
-
- private readonly object スレッド間同期 = new object();
}
}