HardLevelEnum.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package com.yonge.netty.dto;
  2. import com.ym.mec.common.enums.BaseEnum;
  3. public enum HardLevelEnum implements BaseEnum<String, HardLevelEnum> {
  4. /**
  5. * 入门级, 振幅阈值, 频率阈值 <br>
  6. * 节奏有效范围(1分音符), 节奏有效范围(2分音符), 节奏有效范围(4分音符), 节奏有效范围(8分音符), 节奏有效范围(16分音符), 节奏有效范围(32分音符)<br>
  7. * 完成度范围, 未演奏的范围
  8. */
  9. //BEGINNER("入门级", 3, 5, 5, 5, 10, 10, 13, 15, 60, 10),
  10. BEGINNER("入门级", 3, 5, 10, 10, 15, 15, 22, 22, 75, 25),
  11. /**
  12. * 进阶级, 振幅阈值, 频率阈值 <br>
  13. * 节奏有效范围(1分音符), 节奏有效范围(2分音符), 节奏有效范围(4分音符), 节奏有效范围(8分音符), 节奏有效范围(16分音符), 节奏有效范围(32分音符)<br>
  14. * 完成度范围, 未演奏的范围
  15. */
  16. ADVANCED("进阶级", 3, 5, 8, 8, 12, 12, 20, 20, 85, 15),
  17. //ADVANCED("进阶级", 3, 5, 50, 50, 50, 50, 50, 5, 80, 10),
  18. /**
  19. * 大师级, 振幅阈值, 频率阈值 <br>
  20. * 节奏有效范围(1分音符), 节奏有效范围(2分音符), 节奏有效范围(4分音符), 节奏有效范围(8分音符), 节奏有效范围(16分音符), 节奏有效范围(32分音符)<br>
  21. * 完成度范围, 未演奏的范围
  22. */
  23. PERFORMER("大师级", 3, 3, 5, 5, 10, 10, 13, 15, 95, 10);
  24. private String msg;
  25. private int amplitudeThreshold;
  26. private int frequencyThreshold;
  27. private int tempoEffectiveRangeOf1;
  28. private int tempoEffectiveRangeOf2;
  29. private int tempoEffectiveRangeOf4;
  30. private int tempoEffectiveRangeOf8;
  31. private int tempoEffectiveRangeOf16;
  32. private int tempoEffectiveRangeOf32;
  33. private int integrityRange;
  34. private int notPlayRange;
  35. /**
  36. *
  37. * @param msg
  38. * @param amplitudeThreshold 振幅阈值
  39. * @param frequencyThreshold 频率阈值
  40. * @param tempoEffectiveRangeOf1 节奏偏移量百分比(在当前范围内节奏才算正确)
  41. * @param tempoEffectiveRangeOf2 节奏偏移量百分比(在当前范围内节奏才算正确)
  42. * @param tempoEffectiveRangeOf4 节奏偏移量百分比(在当前范围内节奏才算正确)
  43. * @param tempoEffectiveRangeOf8 节奏偏移量百分比(在当前范围内节奏才算正确)
  44. * @param tempoEffectiveRangeOf16 节奏偏移量百分比(在当前范围内节奏才算正确)
  45. * @param tempoEffectiveRangeOf32 节奏偏移量百分比(在当前范围内节奏才算正确)
  46. * @param integrityRange 完成度范围
  47. * @param notPlayRange 未演奏的范围
  48. */
  49. HardLevelEnum(String msg, int amplitudeThreshold, int frequencyThreshold, int tempoEffectiveRangeOf1, int tempoEffectiveRangeOf2,
  50. int tempoEffectiveRangeOf4, int tempoEffectiveRangeOf8, int tempoEffectiveRangeOf16, int tempoEffectiveRangeOf32, int integrityRange,
  51. int notPlayRange) {
  52. this.msg = msg;
  53. this.amplitudeThreshold = amplitudeThreshold;
  54. this.frequencyThreshold = frequencyThreshold;
  55. this.tempoEffectiveRangeOf1 = tempoEffectiveRangeOf1;
  56. this.tempoEffectiveRangeOf2 = tempoEffectiveRangeOf2;
  57. this.tempoEffectiveRangeOf4 = tempoEffectiveRangeOf4;
  58. this.tempoEffectiveRangeOf8 = tempoEffectiveRangeOf8;
  59. this.tempoEffectiveRangeOf16 = tempoEffectiveRangeOf16;
  60. this.tempoEffectiveRangeOf32 = tempoEffectiveRangeOf32;
  61. this.integrityRange = integrityRange;
  62. this.notPlayRange = notPlayRange;
  63. }
  64. public String getMsg() {
  65. return msg;
  66. }
  67. public int getAmplitudeThreshold() {
  68. return amplitudeThreshold;
  69. }
  70. public int getFrequencyThreshold() {
  71. return frequencyThreshold;
  72. }
  73. public int getTempoEffectiveRange(int denominator) {
  74. int tempoEffectiveRange = 0;
  75. switch (denominator) {
  76. case 1:
  77. tempoEffectiveRange = tempoEffectiveRangeOf1;
  78. break;
  79. case 2:
  80. tempoEffectiveRange = tempoEffectiveRangeOf2;
  81. break;
  82. case 4:
  83. tempoEffectiveRange = tempoEffectiveRangeOf4;
  84. break;
  85. case 8:
  86. tempoEffectiveRange = tempoEffectiveRangeOf8;
  87. break;
  88. case 16:
  89. tempoEffectiveRange = tempoEffectiveRangeOf16;
  90. break;
  91. case 32:
  92. tempoEffectiveRange = tempoEffectiveRangeOf32;
  93. break;
  94. default:
  95. break;
  96. }
  97. return tempoEffectiveRange;
  98. }
  99. public int getIntegrityRange() {
  100. return integrityRange;
  101. }
  102. public int getNotPlayRange() {
  103. return notPlayRange;
  104. }
  105. @Override
  106. public String getCode() {
  107. return this.name();
  108. }
  109. }