• R/O
  • HTTP
  • SSH
  • HTTPS

dtxmania: Commit


Commit MetaInfo

Revisionba0d85672cfa23493e9c58bcacb435c03807e1c5 (tree)
Zeit2020-10-21 02:11:44
Autoryyagi <yyagi.dtxmania@gmai...>
Commiteryyagi

Log Message

#24159 メトロノーム機能で、Off/表拍/裏拍に加えて、三連符も使えるようにした。

Ändern Zusammenfassung

Diff

--- a/DTXMania/コード/スコア、曲/CDTXInput.cs
+++ b/DTXMania/コード/スコア、曲/CDTXInput.cs
@@ -288,7 +288,8 @@ namespace DTXMania
288288 // これにより、数ms程度ながらここでのソートも高速化されている。
289289 double barlength = 1.0;
290290 int nEndOfSong = (this.listChip[this.listChip.Count - 1].n発声位置 + 384) - (this.listChip[this.listChip.Count - 1].n発声位置 % 384);
291- bool bClickOffBeat = (CDTXMania.Instance.ConfigIni.eClickType == EClickType.OffBeat); // 裏拍でメトロノーム再生
291+ //bool bClickOffBeat = (CDTXMania.Instance.ConfigIni.eClickType == EClickType.OffBeat); // 裏拍でメトロノーム再生
292+ COptionEnum<EClickType> eClickType = CDTXMania.Instance.ConfigIni.eClickType;
292293 for (int tick384 = 0; tick384 <= nEndOfSong; tick384 += 384) // 小節線の挿入 (後に出てくる拍子線とループをまとめようとするなら、forループの終了条件の微妙な違いに注意が必要)
293294 {
294295 CChip chip = new CChip(tick384, 36 * 36 - 1, EChannel.BarLine);
@@ -322,14 +323,21 @@ namespace DTXMania
322323 }
323324
324325 // 小節線上のクリック音の挿入
325- int deltaOffBeat = (int) ( 384.0 / 8 / barlength );
326- if ( !bClickOffBeat ) // 裏拍でのメトロノーム再生の設定でなければ(Off設定であっても)
326+ int deltaOffBeat8th = (int) ( 384.0 / 8 / barlength );
327+ int deltaOffBeat12th = (int) ( 384.0 / 12 / barlength);
328+ if ( eClickType != EClickType.OffBeat ) // 裏拍でのメトロノーム再生の設定でなければ(Off設定であっても)
327329 {
328- this.listChip.Add( new CChip( tick384, 1, EChannel.Click ) ); // 小節線上に、表拍のクリック音を挿入
330+ this.listChip.Add( new CChip( tick384, (int)EClickSoundType.High, EChannel.Click ) ); // 小節線上に、表拍のクリック音を挿入
331+
332+ if (eClickType == EClickType.Triplet) // 三連符なら、最初残り2つのクリック音を挿入
333+ {
334+ this.listChip.Add(new CChip(tick384 + deltaOffBeat12th, (int)EClickSoundType.Bottom, EChannel.Click)); // 小節線から12分音符だけ後に、裏拍のクリック音を挿入
335+ this.listChip.Add(new CChip(tick384 + deltaOffBeat12th * 2, (int)EClickSoundType.Bottom, EChannel.Click)); // 小節線から12分音符x2だけ後に、裏拍のクリック音を挿入
336+ }
329337 }
330338 else if ( tick384 + 384 / 8 <= nEndOfSong ) // 裏拍設定で、かつ曲長内に収まるなら
331339 {
332- this.listChip.Add( new CChip( tick384 + deltaOffBeat, 1, EChannel.Click ) ); // 小節線から8分音符だけ後に、裏拍のクリック音を挿入
340+ this.listChip.Add( new CChip( tick384 + deltaOffBeat8th, (int)EClickSoundType.High, EChannel.Click ) ); // 小節線から8分音符だけ後に、裏拍のクリック音を挿入
333341 }
334342
335343
@@ -344,13 +352,19 @@ namespace DTXMania
344352 {
345353 CChip chip = new CChip(tick384 + (tickBeat + n発声位置_C1_同一小節内), 36 * 36 - 1, EChannel.BeatLine);
346354 this.listChip.Add(chip);
347- if ( !bClickOffBeat ) // メトロノーム設定が裏拍設定でなければ、拍音を挿入
355+ if (eClickType != EClickType.OffBeat) // メトロノーム設定が裏拍設定でなければ、拍音を挿入
348356 {
349- this.listChip.Add( new CChip( tick384 + ( tickBeat + n発声位置_C1_同一小節内 ), 2, EChannel.Click ) );
357+ this.listChip.Add( new CChip( tick384 + ( tickBeat + n発声位置_C1_同一小節内 ), (int)EClickSoundType.Low, EChannel.Click ) );
358+
359+ if (eClickType == EClickType.Triplet) // 三連符なら、最初残り2つのクリック音を挿入
360+ {
361+ this.listChip.Add(new CChip(tick384 + (tickBeat + deltaOffBeat12th + n発声位置_C1_同一小節内), (int)EClickSoundType.Bottom, EChannel.Click));
362+ this.listChip.Add(new CChip(tick384 + (tickBeat + deltaOffBeat12th * 2 + n発声位置_C1_同一小節内), (int)EClickSoundType.Bottom, EChannel.Click));
363+ }
350364 }
351- else if ( ( tickBeat + deltaOffBeat + n発声位置_C1_同一小節内 ) < 384 ) // 裏拍設定、かつ小節内に収まっていれば、拍音を挿入
365+ else if ( ( tickBeat + deltaOffBeat8th + n発声位置_C1_同一小節内 ) < 384 ) // 裏拍設定、かつ小節内に収まっていれば、拍音を挿入
352366 {
353- this.listChip.Add( new CChip( tick384 + ( tickBeat + deltaOffBeat + n発声位置_C1_同一小節内 ), 2, EChannel.Click ) );
367+ this.listChip.Add( new CChip( tick384 + ( tickBeat + deltaOffBeat8th + n発声位置_C1_同一小節内 ), (int)EClickSoundType.Low, EChannel.Click ) );
354368 }
355369
356370 }
--- a/DTXMania/コード/ステージ/07.演奏/CStage演奏画面共通.cs
+++ b/DTXMania/コード/ステージ/07.演奏/CStage演奏画面共通.cs
@@ -3312,12 +3312,15 @@ namespace DTXMania
33123312 {
33133313 switch (pChip.n整数値)
33143314 {
3315- case 1:
3315+ case (int)EClickSoundType.High:
33163316 CDTXMania.Instance.Skin.soundClickHigh.t再生する();
33173317 break;
3318- case 2:
3318+ case (int)EClickSoundType.Low:
33193319 CDTXMania.Instance.Skin.soundClickLow.t再生する();
33203320 break;
3321+ case (int)EClickSoundType.Bottom:
3322+ CDTXMania.Instance.Skin.soundClickBottom.t再生する();
3323+ break;
33213324 }
33223325 }
33233326 }
--- a/DTXMania/コード/全体/CSkin.cs
+++ b/DTXMania/コード/全体/CSkin.cs
@@ -310,6 +310,7 @@ namespace DTXMania
310310 public Cシステムサウンド sound変更音 = null;
311311 public Cシステムサウンド soundClickHigh = null;
312312 public Cシステムサウンド soundClickLow = null;
313+ public Cシステムサウンド soundClickBottom = null;
313314 public readonly int nシステムサウンド数 = (int) Eシステムサウンド.Count;
314315 public Cシステムサウンド this[Eシステムサウンド sound]
315316 {
@@ -359,6 +360,9 @@ namespace DTXMania
359360 case Eシステムサウンド.SOUNDClickLow:
360361 return this.soundClickLow;
361362
363+ case Eシステムサウンド.SOUNDClickBottom:
364+ return this.soundClickBottom;
365+
362366 case Eシステムサウンド.BGM起動画面:
363367 return this.bgm起動画面;
364368
@@ -433,6 +437,9 @@ namespace DTXMania
433437
434438 case (int) Eシステムサウンド.SOUNDClickLow:
435439 return this.soundClickLow;
440+
441+ case (int)Eシステムサウンド.SOUNDClickBottom:
442+ return this.soundClickBottom;
436443 }
437444 throw new IndexOutOfRangeException();
438445 }
@@ -580,6 +587,7 @@ namespace DTXMania
580587 this.soundタイトル音 = new Cシステムサウンド(@"Sounds\Title.ogg", false, true, false);
581588 this.soundClickHigh = new Cシステムサウンド( @"Sounds\Click_High.ogg", false, false, false );
582589 this.soundClickLow = new Cシステムサウンド( @"Sounds\Click_Low.ogg", false, false, false );
590+ this.soundClickBottom = new Cシステムサウンド(@"Sounds\Click_Bottom.ogg", false, false, false);
583591 this.bgm起動画面 = new Cシステムサウンド( @"Sounds\Setup BGM.ogg", true, true, false );
584592 this.bgmオプション画面 = new Cシステムサウンド(@"Sounds\Option BGM.ogg", true, true, false);
585593 this.bgmコンフィグ画面 = new Cシステムサウンド(@"Sounds\Config BGM.ogg", true, true, false);
--- a/DTXMania/コード/全体/C定数.cs
+++ b/DTXMania/コード/全体/C定数.cs
@@ -354,9 +354,17 @@ namespace DTXMania
354354 SOUND変更音,
355355 SOUNDClickHigh,
356356 SOUNDClickLow,
357+ SOUNDClickBottom,
357358 Count // システムサウンド総数の計算用
358359 }
359360
361+ public enum EClickSoundType : int
362+ {
363+ High = 1,
364+ Low = 2,
365+ Bottom = 3
366+ }
367+
360368 public enum E演奏画面の戻り値
361369 {
362370 継続,
@@ -856,9 +864,9 @@ namespace DTXMania
856864 [EnumMember]
857865 OnBeat, // 表拍
858866 [EnumMember]
859- OffBeat // 裏拍
860-// [EnumMember]
861-// Triplet // 3連符
867+ OffBeat, // 裏拍
868+ [EnumMember]
869+ Triplet // 3連符
862870 }
863871
864872 [DataContract]
Binary files /dev/null and b/RuntimeResources/System/Default/Sounds/click_bottom.ogg differ
Binary files a/RuntimeResources/System/resources.csv and b/RuntimeResources/System/resources.csv differ
Binary files a/RuntimeResources/System/resources.xlsx and b/RuntimeResources/System/resources.xlsx differ
Show on old repository browser