/// </summary>
static class チップ種別Extensions
{
+ private const int GID_HIHAT = 1;
+ private const int GID_LEFT_CYMBAL = 2;
+ private const int GID_RIGHT_CYMBAL = 3;
+
/// <summary>
/// チップ種別に対応するヒットレーン種別を、ユーザ設定も参照して、決定して返す。
/// </summary>
/// </summary>
/// <remarks>
/// このグループIDを 0 以外に設定すると、チップの発声時に、そのチップ種別に対応する排他発声グループIDを参照して
- /// ã\81\9dã\82\8cã\81¨å\90\8cã\81\98å\80¤ã\82\92æ\8c\81ã\81¤ã\83\81ã\83\83ã\83\97種å\88¥ã\81®ã\82µã\82¦ã\83³ã\83\89ã\81\8cã\81\99ã\81¹ã\81¦å\86\8dç\94\9få\81\9cæ¢ã\81\95ã\82\8cてから発声されるようなる。
+ /// ã\81\9dã\82\8cã\81¨å\90\8cã\81\98å\80¤ã\82\92æ\8c\81ã\81¤ã\83\81ã\83\83ã\83\97種å\88¥ã\81®ã\82µã\82¦ã\83³ã\83\89ã\81\8cã\81\99ã\81¹ã\81¦å\86\8dç\94\9få\81\9cæ¢ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8bã\81\8bã\82\92確èª\8dã\81\97ã\80\81å¿\85è¦\81ã\81\82ã\82\8cã\81°å\81\9cæ¢ã\81\97てから発声されるようなる。
/// なお、同一かどうかだけを見るので、グループIDに設定する数値は(0を除いて)どんな値でもいい。
/// </remarks>
/// <param name="チップ種別">
/// </returns>
public static int 排他発声グループID( this SSTFormat.チップ種別 チップ種別 )
{
- const int GID_HIHAT = 1;
- const int GID_LEFT_CYMBAL = 2;
- const int GID_RIGHT_CYMBAL = 3;
-
var ユーザ設定 = StrokeStyleT.ユーザ管理.現在選択されているユーザ;
switch( チップ種別 )
return 0;
}
+
+ public static bool 直前のチップを消音する( this SSTFormat.チップ種別 今回のチップの種別, SSTFormat.チップ種別 直前のチップの種別 )
+ {
+ int 今回のチップのGID = 今回のチップの種別.排他発声グループID();
+ int 直前のチップのGID = 直前のチップの種別.排他発声グループID();
+
+ if( 直前のチップのGID != 今回のチップのGID )
+ return false;
+
+ // グループIDがシンバルである場合は、Mute が来た場合を除き、消音しない。
+
+ if( 直前のチップのGID == GID_LEFT_CYMBAL )
+ {
+ return ( 今回のチップの種別 == SSTFormat.チップ種別.LeftCymbal_Mute );
+ }
+ if( 直前のチップのGID == GID_RIGHT_CYMBAL )
+ {
+ return ( 今回のチップの種別 == SSTFormat.チップ種別.RightCymbal_Mute );
+ }
+
+ return true;
+ }
}
}
// 現在発声中のサウンドを全部止めるチップ種別の場合は止める。
if( 0 != chipType.排他発声グループID() ) // ID = 0 は対象外。
{
- // 同じ排他発声グループIDを持つコンテキストの Sounds[] を select する。
+ // 消音対象のコンテキストの Sounds[] を select する。
var 停止するサウンド群 =
from kvp in this._チップtoコンテキスト
- where ( kvp.Key.排他発声グループID() == chipType.排他発声グループID() )
+ where ( chipType.直前のチップを消音する( kvp.Key ) )
select kvp.Value.Sounds;
// 集めた Sounds[] をすべて停止する。