noteData.ts 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483
  1. export const ALL_NOTES = () => {
  2. const keys = ["C", "^C", "D", "^D", "E", "F", "^F", "G", "^G", "A", "^A", "B"];
  3. const notes = [];
  4. const productKey = (total = 0) => {
  5. if (total === 0) return "";
  6. return new Array(Math.abs(total)).fill(total > 0 ? "'" : ",").join("");
  7. };
  8. for (let i = 0; i <= 6; i++) {
  9. for (let j = 0; j < 12; j++) {
  10. let note = keys[j];
  11. if (i < 3) {
  12. notes.push(note + productKey(i - 3));
  13. } else if (i === 3) {
  14. notes.push(note);
  15. } else if (i === 4) {
  16. note = note.toLocaleLowerCase();
  17. notes.push(note);
  18. } else {
  19. note = note.toLocaleLowerCase();
  20. notes.push(note + productKey(i - 4));
  21. }
  22. }
  23. }
  24. let str = "";
  25. notes.forEach((note, index) => {
  26. str += note + (index % 4 === 0 ? " |" : " ");
  27. });
  28. // console.log(notes);
  29. return str;
  30. };
  31. export const ALL_Pitches = [
  32. "C,,,,",
  33. "D,,,,",
  34. "E,,,,",
  35. "F,,,,",
  36. "G,,,,",
  37. "A,,,,",
  38. "B,,,,",
  39. "C,,,",
  40. "D,,,",
  41. "E,,,",
  42. "F,,,",
  43. "G,,,",
  44. "A,,,",
  45. "B,,,",
  46. "C,,",
  47. "D,,",
  48. "E,,",
  49. "F,,",
  50. "G,,",
  51. "A,,",
  52. "B,,",
  53. "C,",
  54. "D,",
  55. "E,",
  56. "F,",
  57. "G,",
  58. "A,",
  59. "B,",
  60. "C",
  61. "D",
  62. "E",
  63. "F",
  64. "G",
  65. "A",
  66. "B",
  67. "c",
  68. "d",
  69. "e",
  70. "f",
  71. "g",
  72. "a",
  73. "b",
  74. "c'",
  75. "d'",
  76. "e'",
  77. "f'",
  78. "g'",
  79. "a'",
  80. "b'",
  81. "c''",
  82. "d''",
  83. "e''",
  84. "f''",
  85. "g''",
  86. "a''",
  87. "b''",
  88. "c'''",
  89. "d'''",
  90. "e'''",
  91. "f'''",
  92. "g'''",
  93. "a'''",
  94. "b'''",
  95. "c''''",
  96. "d''''",
  97. "e''''",
  98. "f''''",
  99. "g''''",
  100. "a''''",
  101. "b''''",
  102. ];
  103. export const ABC_NOTE_DATA = [
  104. "C,,,,",
  105. ["^C,,,,", "_D,,,,"],
  106. "D,,,,",
  107. ["^D,,,,", "_E,,,,"],
  108. ["E,,,,", "_F,,,,"],
  109. ["^E,,,,", "F,,,,"],
  110. ["^F,,,,", "_G,,,,"],
  111. "G,,,,",
  112. ["^G,,,,", "_A,,,,"],
  113. "A,,,,",
  114. ["^A,,,,", "_B,,,,"],
  115. ["B,,,,", "_C,,,"],
  116. ["^B,,,,", "C,,,"],
  117. ["^C,,,", "_D,,,"],
  118. "D,,,",
  119. ["^D,,,", "_E,,,"],
  120. ["E,,,", "_F,,,"],
  121. ["^E,,,", "F,,,"],
  122. ["^F,,,", "_G,,,"],
  123. "G,,,",
  124. ["^G,,,", "_A,,,"],
  125. "A,,,",
  126. ["^A,,,", "_B,,,"],
  127. ["B,,,", "_C,,"],
  128. ["^B,,,", "C,,"],
  129. ["^C,,", "_D,,"],
  130. "D,,",
  131. ["^D,,", "_E,,"],
  132. ["E,,", "_F,,"],
  133. ["^E,,", "F,,"],
  134. ["^F,,", "_G,,"],
  135. "G,,",
  136. ["^G,,", "_A,,"],
  137. "A,,",
  138. ["^A,,", "_B,,"],
  139. ["B,,", "_C,"],
  140. ["^B,,", "C,"],
  141. ["^C,", "_D,"],
  142. "D,",
  143. ["^D,", "_E,"],
  144. ["E,", "_F,"],
  145. ["^E,", "F,"],
  146. ["^F,", "_G,"],
  147. "G,",
  148. ["^G,", "_A,"],
  149. "A,",
  150. ["^A,", "_B,"],
  151. ["B,", "_C"],
  152. ["^B,", "C"],
  153. ["^C", "_D"],
  154. "D",
  155. ["^D", "_E"],
  156. ["E", "_F"],
  157. ["^E", "F"],
  158. ["^F", "_G"],
  159. "G",
  160. ["^G", "_A"],
  161. "A",
  162. ["^A", "_B"],
  163. ["B", "_c"],
  164. ["^B", "c"],
  165. ["^c", "_d"],
  166. "d",
  167. ["^d", "_e"],
  168. ["e", "_f"],
  169. ["^e", "f"],
  170. ["^f", "_g"],
  171. "g",
  172. ["^g", "_a"],
  173. "a",
  174. ["^a", "_b"],
  175. ["b", "_c'"],
  176. ["^b", "c'"],
  177. ["^c'", "_d'"],
  178. "d'",
  179. ["^d'", "_e'"],
  180. ["e'", "_f'"],
  181. ["^e'", "f'"],
  182. ["^f'", "_g'"],
  183. "g'",
  184. ["^g'", "_a'"],
  185. "a'",
  186. ["^a'", "_b'"],
  187. ["b'", "_c''"],
  188. ["^b'", "c''"],
  189. ["^c''", "_d''"],
  190. "d''",
  191. ["^d''", "_e''"],
  192. ["e''", "_f''"],
  193. ["^e''", "f''"],
  194. ["^f''", "_g''"],
  195. "g''",
  196. ["^g''", "_a''"],
  197. "a''",
  198. ["^a''", "_b''"],
  199. ["b''", "_c'''"],
  200. ["^b''", "c'''"],
  201. ["^c'''", "_d'''"],
  202. "d'''",
  203. ["^d'''", "_e'''"],
  204. ["e'''", "_f'''"],
  205. ["^e'''", "f'''"],
  206. ["^f'''", "_g'''"],
  207. "g'''",
  208. ["^g'''", "_a'''"],
  209. "a'''",
  210. ["^a'''", "_b'''"],
  211. ["b'''", "_c''''"],
  212. ["^b'''", "c''''"],
  213. ["^c''''", "_d''''"],
  214. "d''''",
  215. ["^d''''", "_e''''"],
  216. ["e''''", "_f''''"],
  217. ["^e''''", "f''''"],
  218. ["^f''''", "_g''''"],
  219. "g''''",
  220. ["^g''''", "_a''''"],
  221. "a''''",
  222. ["^a''''", "_b''''"],
  223. ["b''''", "_c'''''"],
  224. ];
  225. export const ABC_KEYS: { [_: string]: any } = {
  226. "K:C": {
  227. "K:C#": { up: 1, down: -11, move: 0 },
  228. "K:Db": { up: 1, down: -11, move: 1 },
  229. "K:D": { up: 2, down: -10, move: 0 },
  230. "K:Eb": { up: 3, down: -9, move: 1 },
  231. "K:E": { up: 4, down: -8, move: 0 },
  232. "K:F": { up: 5, down: -7, move: 1 },
  233. "K:F#": { up: 6, down: -6, move: 0 },
  234. "K:Gb": { up: 6, down: -6, move: 1 },
  235. "K:G": { up: 7, down: -5, move: 0 },
  236. "K:Ab": { up: 8, down: -4, move: 1 },
  237. "K:A": { up: 9, down: -3, move: 0 },
  238. "K:Bb": { up: 10, down: -2, move: 1 },
  239. "K:B": { up: 11, down: -1, move: 0 },
  240. "K:Cb": { up: 0, down: 0, move: 0 },
  241. },
  242. "K:C#": {
  243. "K:D": { up: 1, down: -11, move: 0 },
  244. "K:Eb": { up: 2, down: -10, move: 1 },
  245. "K:E": { up: 3, down: -9, move: 0 },
  246. "K:F": { up: 4, down: -8, move: 1 },
  247. "K:Gb": { up: 5, down: -7, move: 0 },
  248. "K:F#": { up: 5, down: -7, move: 1 },
  249. "K:G": { up: 6, down: -6, move: 1 },
  250. "K:Ab": { up: 7, down: -5, move: 1 },
  251. "K:A": { up: 8, down: -4, move: 0 },
  252. "K:Bb": { up: 9, down: -3, move: 1 },
  253. "K:B": { up: 10, down: -2, move: 0 },
  254. "K:Cb": { up: 10, down: -2, move: 0 },
  255. "K:C": { up: 11, down: -1, move: 1 },
  256. "K:C#": { up: 0, down: 0, move: 0 },
  257. "K:Db": { up: 0, down: 0, move: 0 },
  258. },
  259. "K:Db": {
  260. "K:D": { up: 1, down: -11, move: 0 },
  261. "K:Eb": { up: 2, down: -10, move: 1 },
  262. "K:E": { up: 3, down: -9, move: 0 },
  263. "K:F": { up: 4, down: -8, move: 1 },
  264. "K:Gb": { up: 5, down: -7, move: 0 },
  265. "K:F#": { up: 5, down: -7, move: 1 },
  266. "K:G": { up: 6, down: -6, move: 0 },
  267. "K:Ab": { up: 7, down: -5, move: 1 },
  268. "K:A": { up: 8, down: -4, move: 0 },
  269. "K:Bb": { up: 9, down: -3, move: 1 },
  270. "K:B": { up: 10, down: -2, move: 0 },
  271. "K:Cb": { up: 10, down: -2, move: 0 },
  272. "K:C": { up: 11, down: -1, move: 1 },
  273. "K:C#": { up: 0, down: 0, move: 0 },
  274. "K:Db": { up: 0, down: 0, move: 1 },
  275. },
  276. "K:D": {
  277. "K:Eb": { up: 1, down: -11, move: 0 },
  278. "K:E": { up: 2, down: -10, move: 1 },
  279. "K:F": { up: 3, down: -9, move: 0 },
  280. "K:Gb": { up: 4, down: -8, move: 1 },
  281. "K:F#": { up: 4, down: -8, move: 0 },
  282. "K:G": { up: 5, down: -7, move: 0 },
  283. "K:Ab": { up: 6, down: -6, move: 0 },
  284. "K:A": { up: 7, down: -5, move: 1 },
  285. "K:Bb": { up: 8, down: -4, move: 0 },
  286. "K:B": { up: 9, down: -3, move: 1 },
  287. "K:Cb": { up: 9, down: -3, move: 1 },
  288. "K:C": { up: 10, down: -2, move: 0 },
  289. "K:C#": { up: 11, down: -1, move: 1 },
  290. "K:Db": { up: 11, down: -1, move: 0 },
  291. "K:D": { up: 0, down: 0, move: 0 },
  292. },
  293. "K:Eb": {
  294. "K:E": { up: 1, down: -11, move: 0 },
  295. "K:F": { up: 2, down: -10, move: 1 },
  296. "K:Gb": { up: 3, down: -9, move: 0 },
  297. "K:F#": { up: 3, down: -9, move: 1 },
  298. "K:G": { up: 4, down: -8, move: 0 },
  299. "K:Ab": { up: 5, down: -7, move: 1 },
  300. "K:A": { up: 6, down: -6, move: 0 },
  301. "K:Bb": { up: 7, down: -5, move: 1 },
  302. "K:B": { up: 8, down: -4, move: 0 },
  303. "K:Cb": { up: 8, down: -4, move: 0 },
  304. "K:C": { up: 9, down: -3, move: 1 },
  305. "K:C#": { up: 10, down: -2, move: 0 },
  306. "K:Db": { up: 10, down: -2, move: 1 },
  307. "K:D": { up: 11, down: -1, move: 0 },
  308. "K:Eb": { up: 0, down: 0, move: 0 },
  309. },
  310. "K:E": {
  311. "K:F": { up: 1, down: -11, move: 0 },
  312. "K:Gb": { up: 2, down: -10, move: 1 },
  313. "K:F#": { up: 2, down: -10, move: 0 },
  314. "K:G": { up: 3, down: -9, move: 1 },
  315. "K:Ab": { up: 4, down: -8, move: 0 },
  316. "K:A": { up: 5, down: -7, move: 1 },
  317. "K:Bb": { up: 6, down: -6, move: 0 },
  318. "K:B": { up: 7, down: -5, move: 1 },
  319. "K:Cb": { up: 7, down: -5, move: 1 },
  320. "K:C": { up: 8, down: -4, move: 0 },
  321. "K:C#": { up: 9, down: -3, move: 1 },
  322. "K:Db": { up: 9, down: -3, move: 0 },
  323. "K:D": { up: 10, down: -2, move: 1 },
  324. "K:Eb": { up: 11, down: -1, move: 0 },
  325. "K:E": { up: 0, down: 0, move: 0 },
  326. },
  327. "K:F": {
  328. "K:Gb": { up: 1, down: -11, move: 0 },
  329. "K:F#": { up: 1, down: -11, move: 1 },
  330. "K:G": { up: 2, down: -10, move: 0 },
  331. "K:Ab": { up: 3, down: -9, move: 1 },
  332. "K:A": { up: 4, down: -8, move: 0 },
  333. "K:Bb": { up: 5, down: -7, move: 1 },
  334. "K:B": { up: 6, down: -6, move: 0 },
  335. "K:Cb": { up: 6, down: -6, move: 0 },
  336. "K:C": { up: 7, down: -5, move: 1 },
  337. "K:C#": { up: 8, down: -4, move: 0 },
  338. "K:Db": { up: 8, down: -4, move: 1 },
  339. "K:D": { up: 9, down: -3, move: 0 },
  340. "K:Eb": { up: 10, down: -2, move: 1 },
  341. "K:E": { up: 11, down: -1, move: 0 },
  342. "K:F": { up: 0, down: 0, move: 0 },
  343. },
  344. "K:F#": {
  345. "K:G": { up: 1, down: -11, move: 0 },
  346. "K:Ab": { up: 2, down: -10, move: 1 },
  347. "K:A": { up: 3, down: -9, move: 0 },
  348. "K:Bb": { up: 4, down: -8, move: 1 },
  349. "K:B": { up: 5, down: -7, move: 0 },
  350. "K:Cb": { up: 5, down: -7, move: 0 },
  351. "K:C": { up: 6, down: -6, move: 1 },
  352. "K:C#": { up: 7, down: -5, move: 0 },
  353. "K:Db": { up: 7, down: -5, move: 1 },
  354. "K:D": { up: 8, down: -4, move: 0 },
  355. "K:Eb": { up: 9, down: -3, move: 1 },
  356. "K:E": { up: 10, down: -2, move: 0 },
  357. "K:F": { up: 11, down: -1, move: 1 },
  358. "K:Gb": { up: 0, down: 0, move: 0 },
  359. "K:F#": { up: 0, down: 0, move: 0 },
  360. },
  361. "K:Gb": {
  362. "K:G": { up: 1, down: -11, move: 0 },
  363. "K:Ab": { up: 2, down: -10, move: 1 },
  364. "K:A": { up: 3, down: -9, move: 0 },
  365. "K:Bb": { up: 4, down: -8, move: 1 },
  366. "K:B": { up: 5, down: -7, move: 0 },
  367. "K:Cb": { up: 5, down: -7, move: 0 },
  368. "K:C": { up: 6, down: -6, move: 1 },
  369. "K:C#": { up: 7, down: -5, move: 0 },
  370. "K:Db": { up: 7, down: -5, move: 1 },
  371. "K:D": { up: 8, down: -4, move: 0 },
  372. "K:Eb": { up: 9, down: -3, move: 1 },
  373. "K:E": { up: 10, down: -2, move: 0 },
  374. "K:F": { up: 11, down: -1, move: 1 },
  375. "K:Gb": { up: 0, down: 0, move: 0 },
  376. "K:F#": { up: 0, down: 0, move: 0 },
  377. },
  378. "K:G": {
  379. "K:Ab": { up: 1, down: -11, move: 0 },
  380. "K:A": { up: 2, down: -10, move: 1 },
  381. "K:Bb": { up: 3, down: -9, move: 0 },
  382. "K:B": { up: 4, down: -8, move: 1 },
  383. "K:Cb": { up: 4, down: -8, move: 1 },
  384. "K:C": { up: 5, down: -7, move: 0 },
  385. "K:C#": { up: 6, down: -6, move: 1 },
  386. "K:Db": { up: 6, down: -6, move: 0 },
  387. "K:D": { up: 7, down: -5, move: 1 },
  388. "K:Eb": { up: 8, down: -4, move: 0 },
  389. "K:E": { up: 9, down: -3, move: 1 },
  390. "K:F": { up: 10, down: -2, move: 0 },
  391. "K:Gb": { up: 11, down: -1, move: 1 },
  392. "K:F#": { up: 11, down: -1, move: 0 },
  393. "K:G": { up: 0, down: 0, move: 0 },
  394. },
  395. "K:Ab": {
  396. "K:A": { up: 1, down: -11, move: 0 },
  397. "K:Bb": { up: 2, down: -10, move: 1 },
  398. "K:B": { up: 3, down: -9, move: 0 },
  399. "K:Cb": { up: 3, down: -9, move: 0 },
  400. "K:C": { up: 4, down: -8, move: 1 },
  401. "K:C#": { up: 5, down: -7, move: 0 },
  402. "K:Db": { up: 5, down: -7, move: 1 },
  403. "K:D": { up: 6, down: -6, move: 0 },
  404. "K:Eb": { up: 7, down: -5, move: 1 },
  405. "K:E": { up: 8, down: -4, move: 0 },
  406. "K:F": { up: 9, down: -3, move: 1 },
  407. "K:Gb": { up: 10, down: -2, move: 0 },
  408. "K:F#": { up: 10, down: -2, move: 1 },
  409. "K:G": { up: 11, down: -1, move: 0 },
  410. "K:Ab": { up: 0, down: 0, move: 0 },
  411. },
  412. "K:A": {
  413. "K:Bb": { up: 1, down: -11, move: 0 },
  414. "K:B": { up: 2, down: -10, move: 1 },
  415. "K:Cb": { up: 2, down: -10, move: 1 },
  416. "K:C": { up: 3, down: -9, move: 0 },
  417. "K:C#": { up: 4, down: -8, move: 1 },
  418. "K:Db": { up: 4, down: -8, move: 0 },
  419. "K:D": { up: 5, down: -7, move: 1 },
  420. "K:Eb": { up: 6, down: -6, move: 0 },
  421. "K:E": { up: 7, down: -5, move: 1 },
  422. "K:F": { up: 8, down: -4, move: 0 },
  423. "K:Gb": { up: 9, down: -3, move: 1 },
  424. "K:F#": { up: 9, down: -3, move: 0 },
  425. "K:G": { up: 10, down: -2, move: 1 },
  426. "K:Ab": { up: 11, down: -1, move: 0 },
  427. "K:A": { up: 0, down: 0, move: 0 },
  428. },
  429. "K:Bb": {
  430. "K:B": { up: 1, down: -11, move: 0 },
  431. "K:Cb": { up: 1, down: -11, move: 0 },
  432. "K:C": { up: 2, down: -10, move: 1 },
  433. "K:C#": { up: 3, down: -9, move: 0 },
  434. "K:Db": { up: 3, down: -9, move: 1 },
  435. "K:D": { up: 4, down: -8, move: 0 },
  436. "K:Eb": { up: 5, down: -7, move: 1 },
  437. "K:E": { up: 6, down: -6, move: 0 },
  438. "K:F": { up: 7, down: -5, move: 1 },
  439. "K:Gb": { up: 8, down: -4, move: 0 },
  440. "K:F#": { up: 8, down: -4, move: 1 },
  441. "K:G": { up: 9, down: -3, move: 0 },
  442. "K:Ab": { up: 10, down: -2, move: 1 },
  443. "K:A": { up: 11, down: -1, move: 0 },
  444. "K:Bb": { up: 0, down: 0, move: 0 },
  445. },
  446. "K:B": {
  447. "K:C": { up: 1, down: -11, move: 0 },
  448. "K:C#": { up: 2, down: -10, move: 1 },
  449. "K:Db": { up: 2, down: -10, move: 0 },
  450. "K:D": { up: 3, down: -9, move: 1 },
  451. "K:Eb": { up: 4, down: -8, move: 0 },
  452. "K:E": { up: 5, down: -7, move: 1 },
  453. "K:F": { up: 6, down: -6, move: 0 },
  454. "K:Gb": { up: 7, down: -5, move: 1 },
  455. "K:F#": { up: 7, down: -5, move: 0 },
  456. "K:G": { up: 8, down: -4, move: 1 },
  457. "K:Ab": { up: 9, down: -3, move: 0 },
  458. "K:A": { up: 10, down: -2, move: 1 },
  459. "K:Bb": { up: 11, down: -1, move: 0 },
  460. "K:B": { up: 0, down: 0, move: 0 },
  461. "K:Cb": { up: 0, down: 0, move: 0 },
  462. },
  463. };
  464. /** 附点音符 */
  465. export const NOTE_DOT: { [_: string]: string } = {
  466. "4": "3",
  467. "2": "3",
  468. "": "3/2",
  469. "/": "2/3",
  470. "//": "1/3",
  471. "///": "3/8",
  472. };