beatConfig.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. export const unitObj = {
  2. "1/1": 1 / 1,
  3. "1/2": 1 / 2,
  4. "1/4": 1 / 4,
  5. "1/8": 1 / 8,
  6. "1/16": 1 / 16,
  7. "1/2.": (1 / 2) * 1.5,
  8. "1/4.": (1 / 4) * 1.5,
  9. "1/8.": (1 / 8) * 1.5
  10. } as Record<string, any>
  11. /**
  12. * 速度转换,几分音符的速度转为几分音符的速度
  13. */
  14. export const speedBeatTo = (speedBeat: { unit: string; speed: number }, unit: string) => {
  15. return (unitObj[speedBeat.unit] * speedBeat.speed) / unitObj[unit]
  16. }
  17. /** 谱面速度节拍器转为 约定的节拍器符号 */
  18. export function beatUnitTo(beatUnit: string, isDot: boolean) {
  19. let multiple = "1/4"
  20. switch (beatUnit) {
  21. case "1024th":
  22. multiple = "1/1024"
  23. break
  24. case "512th":
  25. multiple = "1/512"
  26. break
  27. case "256th":
  28. multiple = "1/256"
  29. break
  30. case "128th":
  31. multiple = "1/128"
  32. break
  33. case "64th":
  34. multiple = "1/64"
  35. break
  36. case "32nd":
  37. multiple = "1/32"
  38. break
  39. case "16th":
  40. multiple = "1/16"
  41. break
  42. case "eighth":
  43. multiple = "1/8"
  44. break
  45. case "quarter":
  46. multiple = "1/4"
  47. break
  48. case "half":
  49. multiple = "1/2"
  50. break
  51. case "whole":
  52. multiple = "1/1"
  53. default:
  54. break
  55. }
  56. isDot && (multiple += ".")
  57. return multiple
  58. }
  59. /** 几分音符对应的速度图片 */
  60. export const unitImgs = {
  61. "1/1": 'speed1',
  62. "1/2": 'speed2',
  63. "1/4": 'speed3',
  64. "1/8": 'speed4',
  65. "1/16": 'spee5',
  66. "1/2.": 'speed6',
  67. "1/4.": 'speed7',
  68. "1/8.": 'speed8',
  69. } as Record<string, any>