Musical keyboard component written in React.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

123 lignes
3.0 KiB

  1. /*
  2. 4
  3. +-----------------------------------+
  4. 3
  5. +--------------------------+
  6. * * * * * * * * * * **
  7. +----+-----+----+-----+----+---+-----+----+-----+----+-----+---+
  8. | | | | | | | | | | | | |
  9. | | | | | | | | | | | | |
  10. | | | | | | | | | | | | |
  11. | | | | | | | | | | | | |
  12. | | | | | | | | | | | | |
  13. | +---+-+ +-+---+ | +----++ +--+--+ ++---++ |
  14. | | | | | | | |
  15. | | | | | | | |
  16. | | | | | | | |
  17. +--------+--------+--------+--------+--------+--------+--------+
  18. */
  19. // basic and naive
  20. // export const KEY_OFFSETS = [
  21. // 0, // C
  22. // 3 / 7 / 5, // C#
  23. // 1 / 7, // D
  24. // 3 / 7 / 5 * 3, // D#
  25. // 2 / 7, // E
  26. // 3 / 7, // F
  27. // (3 / 7) + (4 / 7 / 7), // F#
  28. // 4 / 7, // G
  29. // (3 / 7) + (4 / 7 / 7 * 3), // G#
  30. // 5 / 7, // A
  31. // (3 / 7) + (4 / 7 / 7 * 5), // A#
  32. // 6 / 7, // B
  33. // ]
  34. // http://datagenetics.com/blog/may32016/index.html
  35. // export const KEY_OFFSETS = [
  36. // 0, // C
  37. // 525 / 5880, // C#
  38. // 1 / 7, // D
  39. // (525 + 490 * 2) / 5880, // D#
  40. // 2 / 7, // E
  41. // 3 / 7, // F
  42. // (525 + 490 * 3 + 525 + 455) / 5880, // F#
  43. // 4 / 7, // G
  44. // (525 + 490 * 5 + 525 + 455) / 5880, // G#
  45. // 5 / 7, // A
  46. // (525 + 490 * 7 + 525 + 455) / 5880, // A#
  47. // 6 / 7, // B
  48. // ]
  49. // pixel-perfect on smaller sizes
  50. // export const KEY_OFFSETS = [
  51. // 0,
  52. // 14 / 140,
  53. // 1 / 7,
  54. // 36 / 140,
  55. // 2 / 7,
  56. // 3 / 7,
  57. // 73 / 140,
  58. // 4 / 7,
  59. // 95 / 140,
  60. // 5 / 7,
  61. // 117 / 140,
  62. // 6 / 7,
  63. // ]
  64. // compromise
  65. export const KEY_OFFSETS = [
  66. 0, // C
  67. (3 / 7 / 88) * 20, // C#
  68. 1 / 7, // D
  69. (3 / 7 / 88) * 53, // D#
  70. 2 / 7, // E
  71. 3 / 7, // F
  72. 3 / 7 + (4 / 7 / 56) * 9, // F#
  73. 4 / 7, // G
  74. 3 / 7 + (4 / 7 / 224) * 97, // G#
  75. 5 / 7, // A
  76. 3 / 7 + (4 / 7 / 112) * 79, // A#
  77. 6 / 7, // B
  78. ]
  79. export const ACCIDENTAL_KEY_TO_NATURAL_KEY_WIDTH_RATIO = 9 / 16
  80. // export const ACCIDENTAL_KEY_TO_NATURAL_KEY_WIDTH_RATIO = 13 / 23
  81. export const BEHAVIORS = ['link', 'checkbox', 'radio'] as const
  82. export const OCTAVE_DIVISIONS = [12, 17, 19, 21, 24, 36] as const
  83. export const ORIENTATIONS = [0, 90, 180, 270] as const
  84. export const BOTTOM_CSS_ATTRIBUTES: Record<0 | 90 | 180 | 270, string> = {
  85. 0: 'bottom',
  86. 90: 'right',
  87. 180: 'top',
  88. 270: 'left',
  89. }
  90. export const LEFT_CSS_ATTRIBUTES: Record<0 | 90 | 180 | 270, string> = {
  91. 0: 'left',
  92. 90: 'bottom',
  93. 180: 'right',
  94. 270: 'top',
  95. }
  96. export const WIDTH_CSS_ATTRIBUTES: Record<0 | 90 | 180 | 270, string> = {
  97. 0: 'width',
  98. 180: 'width',
  99. 90: 'height',
  100. 270: 'height',
  101. }
  102. export const COMPONENTS: Record<string, string> = {
  103. link: 'a',
  104. checkbox: 'label',
  105. radio: 'label',
  106. }