Sfoglia il codice sorgente

排箫,陶笛,葫芦丝,口风琴 指法

liushengqiang 2 anni fa
parent
commit
0d7e9e093a
72 ha cambiato i file con 601 aggiunte e 339 eliminazioni
  1. 96 10
      src/view/fingering/fingering-config.ts
  2. BIN
      src/view/fingering/fingering-img/hulusi-flute/1.png
  3. BIN
      src/view/fingering/fingering-img/hulusi-flute/2.png
  4. BIN
      src/view/fingering/fingering-img/hulusi-flute/3.png
  5. BIN
      src/view/fingering/fingering-img/hulusi-flute/4.png
  6. BIN
      src/view/fingering/fingering-img/hulusi-flute/5.png
  7. BIN
      src/view/fingering/fingering-img/hulusi-flute/6.png
  8. BIN
      src/view/fingering/fingering-img/hulusi-flute/66.png
  9. BIN
      src/view/fingering/fingering-img/hulusi-flute/7.png
  10. BIN
      src/view/fingering/fingering-img/hulusi-flute/full.png
  11. 1 0
      src/view/fingering/fingering-img/hulusi-flute/index.json
  12. BIN
      src/view/fingering/fingering-img/melodica/1.png
  13. BIN
      src/view/fingering/fingering-img/melodica/10.png
  14. BIN
      src/view/fingering/fingering-img/melodica/11.png
  15. BIN
      src/view/fingering/fingering-img/melodica/12.png
  16. BIN
      src/view/fingering/fingering-img/melodica/13.png
  17. BIN
      src/view/fingering/fingering-img/melodica/14.png
  18. BIN
      src/view/fingering/fingering-img/melodica/15.png
  19. BIN
      src/view/fingering/fingering-img/melodica/16.png
  20. BIN
      src/view/fingering/fingering-img/melodica/17.png
  21. BIN
      src/view/fingering/fingering-img/melodica/18.png
  22. BIN
      src/view/fingering/fingering-img/melodica/19.png
  23. BIN
      src/view/fingering/fingering-img/melodica/2.png
  24. BIN
      src/view/fingering/fingering-img/melodica/3.png
  25. BIN
      src/view/fingering/fingering-img/melodica/4.png
  26. BIN
      src/view/fingering/fingering-img/melodica/5.png
  27. BIN
      src/view/fingering/fingering-img/melodica/6.png
  28. BIN
      src/view/fingering/fingering-img/melodica/7.png
  29. BIN
      src/view/fingering/fingering-img/melodica/8.png
  30. BIN
      src/view/fingering/fingering-img/melodica/9.png
  31. BIN
      src/view/fingering/fingering-img/melodica/full.png
  32. 1 0
      src/view/fingering/fingering-img/melodica/index.json
  33. BIN
      src/view/fingering/fingering-img/ocarina/1.png
  34. BIN
      src/view/fingering/fingering-img/ocarina/10.png
  35. BIN
      src/view/fingering/fingering-img/ocarina/11.png
  36. BIN
      src/view/fingering/fingering-img/ocarina/12.png
  37. BIN
      src/view/fingering/fingering-img/ocarina/2.png
  38. BIN
      src/view/fingering/fingering-img/ocarina/3.png
  39. BIN
      src/view/fingering/fingering-img/ocarina/4.png
  40. BIN
      src/view/fingering/fingering-img/ocarina/5.png
  41. BIN
      src/view/fingering/fingering-img/ocarina/6.png
  42. BIN
      src/view/fingering/fingering-img/ocarina/7.png
  43. BIN
      src/view/fingering/fingering-img/ocarina/8.png
  44. BIN
      src/view/fingering/fingering-img/ocarina/9.png
  45. BIN
      src/view/fingering/fingering-img/ocarina/full.png
  46. 1 0
      src/view/fingering/fingering-img/ocarina/index.json
  47. BIN
      src/view/fingering/fingering-img/pan-flute/1.png
  48. BIN
      src/view/fingering/fingering-img/pan-flute/10.png
  49. BIN
      src/view/fingering/fingering-img/pan-flute/11.png
  50. BIN
      src/view/fingering/fingering-img/pan-flute/12.png
  51. BIN
      src/view/fingering/fingering-img/pan-flute/13.png
  52. BIN
      src/view/fingering/fingering-img/pan-flute/14.png
  53. BIN
      src/view/fingering/fingering-img/pan-flute/15.png
  54. BIN
      src/view/fingering/fingering-img/pan-flute/16.png
  55. BIN
      src/view/fingering/fingering-img/pan-flute/17.png
  56. BIN
      src/view/fingering/fingering-img/pan-flute/18.png
  57. BIN
      src/view/fingering/fingering-img/pan-flute/19.png
  58. BIN
      src/view/fingering/fingering-img/pan-flute/2.png
  59. BIN
      src/view/fingering/fingering-img/pan-flute/20.png
  60. BIN
      src/view/fingering/fingering-img/pan-flute/21.png
  61. BIN
      src/view/fingering/fingering-img/pan-flute/3.png
  62. BIN
      src/view/fingering/fingering-img/pan-flute/4.png
  63. BIN
      src/view/fingering/fingering-img/pan-flute/5.png
  64. BIN
      src/view/fingering/fingering-img/pan-flute/6.png
  65. BIN
      src/view/fingering/fingering-img/pan-flute/7.png
  66. BIN
      src/view/fingering/fingering-img/pan-flute/8.png
  67. BIN
      src/view/fingering/fingering-img/pan-flute/9.png
  68. BIN
      src/view/fingering/fingering-img/pan-flute/full.png
  69. 1 0
      src/view/fingering/fingering-img/pan-flute/index.json
  70. 488 323
      src/view/fingering/fingering-relationships.ts
  71. 13 4
      src/view/fingering/index.tsx
  72. 0 2
      vite.config.ts

+ 96 - 10
src/view/fingering/fingering-config.ts

@@ -14,16 +14,35 @@ export type IFingering = {
 	direction?: "vertical" | "transverse";
 	width?: string;
 	height?: string;
+	/** 禁用替指 */
+	disabledFinger?: boolean;
 };
 
 type ITypeContent = {
 	[key: string | number]: IFingering;
 };
 
-export type IVocals = "flute" | "clarinet" | "saxophone" | "trumpet" | "horn" | "trombone" | "up-bass-horn" | "small-drum" | "tuba" | "piccolo";
+export type IVocals =
+	| "flute"
+	| "clarinet"
+	| "saxophone"
+	| "trumpet"
+	| "horn"
+	| "trombone"
+	| "up-bass-horn"
+	| "small-drum"
+	| "tuba"
+	| "piccolo"
+	| "hulusi-flute"
+	| "pan-flute"
+	| "ocarina"
+	| "melodica";
 
 /** 映射声部ID */
-export const mappingVoicePart = (id: number | string, soruce: "GYM" | "COLEXIU" | "ORCHESTRA" | 'INSTRUMENT'): number => {
+export const mappingVoicePart = (
+	id: number | string,
+	soruce: "GYM" | "COLEXIU" | "ORCHESTRA" | "INSTRUMENT"
+): number => {
 	if (soruce === "GYM") {
 		return Number(id);
 	} else if (soruce === "COLEXIU") {
@@ -45,10 +64,10 @@ export const mappingVoicePart = (id: number | string, soruce: "GYM" | "COLEXIU"
 			Recorder: 120,
 			Ukulele: 130,
 			Mouthorgan: 140,
-			Piano: 150
-		  }
+			Piano: 150,
+		};
 		return subject[id];
-	} else if (soruce === 'ORCHESTRA'){
+	} else if (soruce === "ORCHESTRA") {
 		const subject: { [_key: string | number]: number } = {
 			1: 23,
 			2: 2,
@@ -59,10 +78,10 @@ export const mappingVoicePart = (id: number | string, soruce: "GYM" | "COLEXIU"
 			7: 13,
 			8: 15,
 			9: 17,
-		  }
+		};
 		return subject[id];
-	} else if (soruce === 'INSTRUMENT'){
-		const subject: { [_key: string | number]: number } = {
+	} else if (soruce === "INSTRUMENT") {
+		const subject: { [_key: string | number]: any } = {
 			Flute: 2,
 			Clarinet: 4,
 			Trombone: 14,
@@ -82,14 +101,18 @@ export const mappingVoicePart = (id: number | string, soruce: "GYM" | "COLEXIU"
 			Mouthorgan: 140,
 			Piano: 150,
 			4: 120,
-		  }
+			3: "hulusi-flute",
+			1: "pan-flute",
+			2: "ocarina",
+			5: "melodica",
+		};
 		return subject[id] || 0;
 	}
 	return 0;
 };
 
 /** 声部的指法配置信息 */
-export const subjectFingering = (subjectId: number): IFingering => {
+export const subjectFingering = (subjectId: number | string): IFingering => {
 	switch (subjectId) {
 		case 2: // 长笛
 			return {
@@ -152,6 +175,32 @@ export const subjectFingering = (subjectId: number): IFingering => {
 		// 		direction: "transverse",
 		// 		height: "1.6rem",
 		// 	};
+		case "hulusi-flute": // 葫芦丝
+			return {
+				name: "hulusi-flute",
+				direction: "vertical",
+				width: "3rem",
+			};
+		case "pan-flute": // 排箫
+			return {
+				name: "pan-flute",
+				direction: "vertical",
+				width: "3rem",
+				disabledFinger: true
+			};
+		case "ocarina": // 陶笛
+			return {
+				name: "ocarina",
+				direction: "vertical",
+				width: "3rem",
+				disabledFinger: true
+			};
+		case "melodica": // 口风琴
+			return {
+				name: "melodica",
+				direction: "transverse",
+				height: "1.8rem",
+			};
 		default:
 			return {};
 	}
@@ -233,6 +282,43 @@ export const getFingeringConfig = async (type: IVocals | undefined): Promise<ITy
 				relationship: relationships["up-bass-horn"],
 				width: "180px",
 			};
+		case "hulusi-flute":
+			const hulusi = await import(`./fingering-img/hulusi-flute/index.json`);
+			return {
+				json: hulusi.default,
+				relationship: relationships.hulusi,
+				// width: '180px',
+				styles: {
+					marginLeft: ".6rem",
+					marginRight: ".7rem",
+				},
+			};
+		case "pan-flute":
+			const pan = await import(`./fingering-img/pan-flute/index.json`);
+			return {
+				json: pan.default,
+				relationship: relationships.pan,
+			};
+		case "ocarina":
+			const ocarina = await import(`./fingering-img/ocarina/index.json`);
+			return {
+				json: ocarina.default,
+				relationship: relationships.ocarina,
+				width: "180px",
+				styles: {
+					marginTop: "auto",
+				},
+			};
+		case "melodica":
+			const melodica = await import(`./fingering-img/melodica/index.json`);
+			return {
+				json: melodica.default,
+				relationship: relationships.melodica,
+				height: "80px",
+				styles: {
+					marginTop: "auto",
+				},
+			};
 		default:
 			return null;
 	}

BIN
src/view/fingering/fingering-img/hulusi-flute/1.png


BIN
src/view/fingering/fingering-img/hulusi-flute/2.png


BIN
src/view/fingering/fingering-img/hulusi-flute/3.png


BIN
src/view/fingering/fingering-img/hulusi-flute/4.png


BIN
src/view/fingering/fingering-img/hulusi-flute/5.png


BIN
src/view/fingering/fingering-img/hulusi-flute/6.png


BIN
src/view/fingering/fingering-img/hulusi-flute/66.png


BIN
src/view/fingering/fingering-img/hulusi-flute/7.png


BIN
src/view/fingering/fingering-img/hulusi-flute/full.png


File diff suppressed because it is too large
+ 1 - 0
src/view/fingering/fingering-img/hulusi-flute/index.json


BIN
src/view/fingering/fingering-img/melodica/1.png


BIN
src/view/fingering/fingering-img/melodica/10.png


BIN
src/view/fingering/fingering-img/melodica/11.png


BIN
src/view/fingering/fingering-img/melodica/12.png


BIN
src/view/fingering/fingering-img/melodica/13.png


BIN
src/view/fingering/fingering-img/melodica/14.png


BIN
src/view/fingering/fingering-img/melodica/15.png


BIN
src/view/fingering/fingering-img/melodica/16.png


BIN
src/view/fingering/fingering-img/melodica/17.png


BIN
src/view/fingering/fingering-img/melodica/18.png


BIN
src/view/fingering/fingering-img/melodica/19.png


BIN
src/view/fingering/fingering-img/melodica/2.png


BIN
src/view/fingering/fingering-img/melodica/3.png


BIN
src/view/fingering/fingering-img/melodica/4.png


BIN
src/view/fingering/fingering-img/melodica/5.png


BIN
src/view/fingering/fingering-img/melodica/6.png


BIN
src/view/fingering/fingering-img/melodica/7.png


BIN
src/view/fingering/fingering-img/melodica/8.png


BIN
src/view/fingering/fingering-img/melodica/9.png


BIN
src/view/fingering/fingering-img/melodica/full.png


File diff suppressed because it is too large
+ 1 - 0
src/view/fingering/fingering-img/melodica/index.json


BIN
src/view/fingering/fingering-img/ocarina/1.png


BIN
src/view/fingering/fingering-img/ocarina/10.png


BIN
src/view/fingering/fingering-img/ocarina/11.png


BIN
src/view/fingering/fingering-img/ocarina/12.png


BIN
src/view/fingering/fingering-img/ocarina/2.png


BIN
src/view/fingering/fingering-img/ocarina/3.png


BIN
src/view/fingering/fingering-img/ocarina/4.png


BIN
src/view/fingering/fingering-img/ocarina/5.png


BIN
src/view/fingering/fingering-img/ocarina/6.png


BIN
src/view/fingering/fingering-img/ocarina/7.png


BIN
src/view/fingering/fingering-img/ocarina/8.png


BIN
src/view/fingering/fingering-img/ocarina/9.png


BIN
src/view/fingering/fingering-img/ocarina/full.png


File diff suppressed because it is too large
+ 1 - 0
src/view/fingering/fingering-img/ocarina/index.json


BIN
src/view/fingering/fingering-img/pan-flute/1.png


BIN
src/view/fingering/fingering-img/pan-flute/10.png


BIN
src/view/fingering/fingering-img/pan-flute/11.png


BIN
src/view/fingering/fingering-img/pan-flute/12.png


BIN
src/view/fingering/fingering-img/pan-flute/13.png


BIN
src/view/fingering/fingering-img/pan-flute/14.png


BIN
src/view/fingering/fingering-img/pan-flute/15.png


BIN
src/view/fingering/fingering-img/pan-flute/16.png


BIN
src/view/fingering/fingering-img/pan-flute/17.png


BIN
src/view/fingering/fingering-img/pan-flute/18.png


BIN
src/view/fingering/fingering-img/pan-flute/19.png


BIN
src/view/fingering/fingering-img/pan-flute/2.png


BIN
src/view/fingering/fingering-img/pan-flute/20.png


BIN
src/view/fingering/fingering-img/pan-flute/21.png


BIN
src/view/fingering/fingering-img/pan-flute/3.png


BIN
src/view/fingering/fingering-img/pan-flute/4.png


BIN
src/view/fingering/fingering-img/pan-flute/5.png


BIN
src/view/fingering/fingering-img/pan-flute/6.png


BIN
src/view/fingering/fingering-img/pan-flute/7.png


BIN
src/view/fingering/fingering-img/pan-flute/8.png


BIN
src/view/fingering/fingering-img/pan-flute/9.png


BIN
src/view/fingering/fingering-img/pan-flute/full.png


File diff suppressed because it is too large
+ 1 - 0
src/view/fingering/fingering-img/pan-flute/index.json


+ 488 - 323
src/view/fingering/fingering-relationships.ts

@@ -1,326 +1,491 @@
-export type IRelationships = {[key: string]: {
-  [key: string]: any[]
-}}
+export type IRelationships = {
+	[key: string]: {
+		[key: string]: any[];
+	};
+};
 
 const relationships = {
-  flute: {
-    59: [27, 26, 25, 15, 24, 22, 17, 20],
-    60: [27, 26, 25, 15, 24, 22, 17, 20],
-    61: [27, 26, 25, 15, 24, 22, 17, 21],
-    62: [27, 26, 25, 15, 24, 22, 17],
-    63: [27, 26, 25, 15, 24, 22, 17, 19],
-    64: [27, 26, 25, 15, 24, 22, 19],
-    65: [ 27, 26, 25, 15, 24, 19 ],
-    66: [ 27, 26, 25, 15, 17, 19 ],
-    67: [ 27, 26, 25, 15, 19 ],
-    68: [ 27, 26, 25, 15, 18, 19 ],
-    69: [ 27, 26, 15, 19 ],
-    70: [[ 27, 14, 19 ], [ 27, 24, 15, 19 ]],
-    71: [ 27, 15, 19 ],
-    72: [ 27, 19 ],
-    73: [ 19 ],
-    74: [ 26, 25, 24, 22, 17, 15 ],
-    75: [ 26, 25, 24, 22, 17, 19 , 15],
-    76: [27, 26, 25, 15, 24, 22, 19],
-    77: [ 27, 26, 25, 15, 24, 19 ],
-    78: [ 27, 26, 25, 15, 17, 19 ],
-    79: [ 27, 26, 25, 15, 19 ],
-    80: [ 27, 26, 25, 15, 18, 19 ],
-    81: [ 27, 26, 15, 19 ],
-    82: [[ 27, 14, 19 ], [ 27, 24, 15, 19 ]],
-    83: [ 27, 15, 19 ],
-    84: [ 27, 19 ],
-    85: [ 19 ],
-    86: [ 26, 25, 15, 19 ],
-    87: [27, 26, 25, 15, 24, 22, 17, 18, 19],
-    88: [ 27, 26, 15, 24, 22, 19 ],
-    89: [27, 25, 24, 15, 19],
-    90: [27, 25, 17, 15, 19],
-    91: [27, 26, 25, 19],
-    92: [26, 25, 18, 19],
-    93: [26, 24, 15, 19],
-    94: [23, 24, 15, 19],
-    95: [27, 25, 15, 16],
-    96: [27, 26, 25, 18, 24, 19],
-  },
-  clarinet: {
-    52: [[3, 4, 6, 8, 9, 11, 14, 18, 20], [3, 4, 6, 8, 9, 11, 14, 20]],
-    53: [[3, 4, 6, 8, 9, 11, 12, 20], [3, 4, 6, 8, 9, 11, 18, 20]],
-    54: [[3, 4, 6, 8, 9, 11, 13, 18, 20], [3, 4, 6, 8, 9, 11, 13, 20], [3, 4, 6, 8, 9, 11, 15],],
-    55: [3, 4, 6, 8, 9, 11, 20],
-    56: [3, 4, 6, 8, 9, 11, 16, 20],
-    57: [3, 4, 6, 8, 9, 20],
-    58: [3, 4, 6, 8, 20],
-    59: [[3, 4, 6, 9, 20], [3, 4, 6, 8, 10, 20]],
-    60: [3, 4, 6, 20],
-    61: [3, 4, 6, 7, 20],
-    62: [3, 4, 20],//[[3, 4, 20, 24], [3, 4, 5, 20], [3, 8, 20]],
-    63: [[3, 4, 20, 24], [3, 4, 5, 20], [3, 8, 20]],
-    64: [3, 20],
-    65: [20],
-    66: [[3], [20, 23, 24]],
-    67: [],
-    68: [2],
-    69: [1],
-    70: [1, 19],
-    71: [[3, 4, 6, 8, 9, 11, 14, 18, 19, 20], [3, 4, 6, 8, 9, 11, 14, 19, 20]],
-    72: [[3, 4, 6, 8, 9, 11, 12, 19, 20], [3, 4, 6, 8, 9, 11, 18, 19, 20]],
-    73: [[3, 4, 6, 8, 9, 11, 13, 19, 20], [3, 4, 6, 8, 9, 11, 13, 18, 19, 20], [3, 4, 6, 8, 9, 11, 15, 19, 20]],
-    74: [3, 4, 6, 8, 9, 11, 19, 20],
-    75: [3, 4, 6, 8, 9, 11, 16, 19, 20],
-    76: [3, 4, 6, 8, 9, 19, 20],
-    77: [3, 4, 6, 8, 19, 20],
-    78: [[3, 4, 6, 9, 19, 20], [3, 4, 6, 8, 10, 19, 20]],
-    79: [3, 4, 6, 19, 20],
-    80: [3, 4, 6, 7, 19, 20],
-    81: [3, 4, 19, 20],
-    82: [[3, 4, 19, 20, 24], [3, 4, 5, 19, 20], [3, 4, 8, 19, 20]],
-    83: [3, 19, 20],
-    84: [19, 20],
-    85: [4, 6, 8, 9, 19, 20],
-    86: [4, 6, 8, 16, 19, 20],
-    87: [[4, 6, 8, 10, 16, 19, 20], [4, 6, 9, 16, 19, 20]],
-    88: [4, 6, 16, 19, 20],
-    89: [4, 6, 7, 16, 19, 20],
-  },
-  trumpet: {
-    0: [1, 2, 3],
-    54: [4, 5, 6],
-    55: [4, 2, 6],
-    56: [1, 5, 6],
-    57: [4, 5, 3],
-    58: [4, 2, 3],
-    59: [1, 5, 3],
-    60: [1, 2, 3],
-    61: [4, 5, 6],
-    62: [4, 2, 6],
-    63: [1, 5, 6],
-    64: [4, 5, 3],
-    65: [4, 2, 3],
-    66: [1, 5, 3],
-    67: [1, 2, 3],
-    68: [1, 5, 6],
-    69: [4, 5, 3],
-    70: [4, 2, 3],
-    71: [1, 5, 3],
-    72: [1, 2, 3],
-    73: [4, 5, 3],
-    74: [4, 2, 3],
-    75: [1, 5, 3],
-    76: [1, 2, 3],
-    77: [4, 2, 3],
-    78: [1, 4, 3],
-    79: [1, 2, 3],
-    80: [1, 5, 6],
-    81: [4, 5, 3],
-    82: [4, 2, 3],
-    83: [1, 5, 3],
-    84: [1, 2, 3],
-  },
-  horn: {
-    53: [1],
-    54: [2],
-    55: [],
-    56: [2, 3],
-    57: [1, 2],
-    58: [1],
-    59: [2],
-    60: [],
-    61: [1, 2],
-    62: [1],
-    63: [2],
-    64: [],
-    65: [1],
-    66: [2],
-    67: [],
-    68: [0, 2, 3],
-    69: [0, 1, 2],
-    70: [0, 1],
-    71: [0, 2],
-    72: [0, ],
-    73: [0, 2, 3],
-    74: [0, 1, 2],
-    75: [0, 1],
-    76: [0, 2],
-    77: [0, ],
-    78: [0, 2],
-    79: [0, ],
-    80: [0, 2, 3],
-    81: [0, 1, 2],
-    82: [0, 1],
-    83: [0, 2],
-    84: [0, ],
-  },
-  "up-bass-horn": {
-    0: [1, 2, 3],
-    40: [4, 5, 6],
-    41: [4, 2, 6],
-    42: [1, 5, 6],
-    43: [4, 5, 3],
-    44: [4, 2, 3],
-    45: [1, 5, 3],
-    46: [1, 2, 3],
-    47: [4, 5, 6],
-    48: [4, 2, 6],
-    49: [1, 5, 6],
-    50: [4, 5, 3],
-    51: [4, 2, 3],
-    52: [1, 5, 3],
-    53: [1, 2, 3],
-    54: [1, 5, 6],
-    55: [4, 5, 3],
-    56: [4, 2, 3],
-    57: [1, 5, 3],
-    58: [1, 2, 3],
-    59: [4, 5, 3],
-    60: [4, 2, 3],
-    61: [1, 5, 3],
-    62: [1, 2, 3],
-    63: [4, 2, 3],
-    64: [1, 5, 3],
-    65: [1, 2, 3],
-    66: [1, 5, 6],
-    67: [4, 5, 3],
-    68: [4, 2, 3],
-    69: [1, 5, 3],
-    70: [1, 2, 3],
-  },
-  trombone: {
-    0: [1],
-    40: [22],
-    41: [11],
-    42: [5],
-    43: [4],
-    44: [3],
-    45: [2],
-    46: [1],
-    47: [22],
-    48: [11],
-    49: [5],
-    50: [4],
-    51: [3],
-    52: [2],
-    53: [1],
-    54: [5],
-    55: [4],
-    56: [3],
-    57: [2],
-    58: [1],
-    59: [4],
-    60: [3],
-    61: [2],
-    62: [1],
-    63: [3],
-    64: [2],
-    65: [1],
-    66: [5],
-    67: [4],
-    68: [3],
-    69: [2],
-    70: [1],
-  },
-  saxophone: {
-    58: [2, 4, 5, 13, 17, 18, 19, 23],
-    59: [2, 4, 5, 11, 17, 18, 19, 23],
-    60: [2, 4, 5, 17, 18, 19, 23],
-    61: [2, 4, 5, 12, 17, 18, 19, 23],
-    62: [2, 4, 5, 17, 18, 19],
-    63: [2, 4, 5, 17, 18, 19, 22],
-    64: [2, 4, 5, 17, 18],
-    65: [2, 4, 5, 17],
-    66: [[2, 4, 5, 18], [2, 4, 5, 17, 21]],
-    67: [2, 4, 5],
-    68: [2, 4, 5, 10],
-    69: [2, 4],
-    70: [[2, 4, 16], [2, 17], [2, 3]],
-    71: [2],
-    72: [[4], [2, 15]],
-    73: [],
-    74: [2, 4, 5, 6, 17, 18, 19],
-    75: [2, 4, 5, 6, 17, 18, 19, 22],
-    76: [2, 4, 5, 6, 17, 18],
-    77: [2, 4, 5, 6, 17],
-    78: [[2, 4, 5, 6, 18], [2, 4, 5, 6, 17, 21]],
-    79: [2, 4, 5, 6],
-    80: [2, 4, 5, 6, 10],
-    81: [2, 4, 6],
-    82: [[2, 4, 6, 16], [2, 6, 17], [2, 3, 6]],
-    83: [2, 6],
-    84: [[4, 6], [2, 6, 15]],
-    85: [6],
-    86: [6, 9],
-    87: [6, 7, 8],
-    88: [6, 8, 9, 14],
-    89: [[6, 7, 8, 9, 14], [1, 4, 6]],
-  },
-  tuba: {
-    0: [1, 2, 3],
-    28: [4, 5, 6],
-    29: [4, 2, 6],
-    30: [1, 5, 6],
-    31: [4, 5, 3],
-    32: [4, 2, 3],
-    33: [4, 2, 6],
-    34: [1, 2, 3],
-    35: [4, 5, 6],
-    36: [4, 2, 6],
-    37: [1, 5, 6],
-    38: [4, 5, 3],
-    39: [4, 2, 3],
-    40: [1, 5, 3],
-    41: [1, 2, 3],
-    42: [1, 5, 6],
-    43: [4, 5, 3],
-    // 43: [4, 5, 3],
-    44: [4, 2, 3],
-    45: [1, 5, 3],
-    46: [1, 2, 3],
-    47: [4, 5, 3],
-    48: [4, 2, 3],
-    49: [1, 5, 3],
-    50: [1, 2, 3],
-    51: [4, 2, 3],
-    52: [1, 5, 3],
-    53: [1, 2, 3],
-    54: [1, 5, 6],
-    55: [4, 5, 3],
-    56: [4, 2, 3],
-    57: [1, 5, 3],
-    58: [1, 2, 3],
-  },
-  piccolo: {
-    60: [11, 2, 33, 4, 5, 6, 7, 8],
-    61: [11, 2, 33, 4, 5, 6, 7, 88],
-    62: [11, 2, 33, 4, 5, 6, 7],
-    63: [11, 2, 33, 4, 5, 6, 77],
-    64: [11, 2, 33, 4, 5, 6],
-    65: [11, 2, 33, 4, 5],
-    66: [11, 2, 33, 4, 6, 7],
-    67: [11, 2, 33, 4],
-    68: [11, 2, 33, 5, 6, 77],
-    69: [11, 2, 33,],
-    70: [[11, 2, 4, 5], [1,11, 2, 4, 6,7]],
-    71: [[11, 2], [11, 33, 4]],
-    72: [11, 33],
-    73: [[2, 33], [11]],
-    74: [33],
-    75: [33, 4, 5, 6, 7],
-    76: [1, 2, 33, 4, 5, 6],
-    77: [1, 2, 33, 4, 5, 7],
-    78: [1, 2, 33, 4, 6],
-    79: [1, 2, 33, 4],
-    80: [1, 2, 33, 5],
-    81: [1, 2, 33],
-    82: [1, 2, 33, 5, 6, 7],
-    83: [1, 2, 33, 5, 6, ],
-    84: [1, 2, 5, 6],
-    85: [1, 2, 4, 5, 7, 8],
-    86: [1, 2, 4, 5, 7, 88],
-  },
-  "small-drum": {
-    0: ['active', 'active-left', 'active-right'],
-    64: ['left', 'right']
-  }
-}
+	flute: {
+		59: [27, 26, 25, 15, 24, 22, 17, 20],
+		60: [27, 26, 25, 15, 24, 22, 17, 20],
+		61: [27, 26, 25, 15, 24, 22, 17, 21],
+		62: [27, 26, 25, 15, 24, 22, 17],
+		63: [27, 26, 25, 15, 24, 22, 17, 19],
+		64: [27, 26, 25, 15, 24, 22, 19],
+		65: [27, 26, 25, 15, 24, 19],
+		66: [27, 26, 25, 15, 17, 19],
+		67: [27, 26, 25, 15, 19],
+		68: [27, 26, 25, 15, 18, 19],
+		69: [27, 26, 15, 19],
+		70: [
+			[27, 14, 19],
+			[27, 24, 15, 19],
+		],
+		71: [27, 15, 19],
+		72: [27, 19],
+		73: [19],
+		74: [26, 25, 24, 22, 17, 15],
+		75: [26, 25, 24, 22, 17, 19, 15],
+		76: [27, 26, 25, 15, 24, 22, 19],
+		77: [27, 26, 25, 15, 24, 19],
+		78: [27, 26, 25, 15, 17, 19],
+		79: [27, 26, 25, 15, 19],
+		80: [27, 26, 25, 15, 18, 19],
+		81: [27, 26, 15, 19],
+		82: [
+			[27, 14, 19],
+			[27, 24, 15, 19],
+		],
+		83: [27, 15, 19],
+		84: [27, 19],
+		85: [19],
+		86: [26, 25, 15, 19],
+		87: [27, 26, 25, 15, 24, 22, 17, 18, 19],
+		88: [27, 26, 15, 24, 22, 19],
+		89: [27, 25, 24, 15, 19],
+		90: [27, 25, 17, 15, 19],
+		91: [27, 26, 25, 19],
+		92: [26, 25, 18, 19],
+		93: [26, 24, 15, 19],
+		94: [23, 24, 15, 19],
+		95: [27, 25, 15, 16],
+		96: [27, 26, 25, 18, 24, 19],
+	},
+	clarinet: {
+		52: [
+			[3, 4, 6, 8, 9, 11, 14, 18, 20],
+			[3, 4, 6, 8, 9, 11, 14, 20],
+		],
+		53: [
+			[3, 4, 6, 8, 9, 11, 12, 20],
+			[3, 4, 6, 8, 9, 11, 18, 20],
+		],
+		54: [
+			[3, 4, 6, 8, 9, 11, 13, 18, 20],
+			[3, 4, 6, 8, 9, 11, 13, 20],
+			[3, 4, 6, 8, 9, 11, 15],
+		],
+		55: [3, 4, 6, 8, 9, 11, 20],
+		56: [3, 4, 6, 8, 9, 11, 16, 20],
+		57: [3, 4, 6, 8, 9, 20],
+		58: [3, 4, 6, 8, 20],
+		59: [
+			[3, 4, 6, 9, 20],
+			[3, 4, 6, 8, 10, 20],
+		],
+		60: [3, 4, 6, 20],
+		61: [3, 4, 6, 7, 20],
+		62: [3, 4, 20], //[[3, 4, 20, 24], [3, 4, 5, 20], [3, 8, 20]],
+		63: [
+			[3, 4, 20, 24],
+			[3, 4, 5, 20],
+			[3, 8, 20],
+		],
+		64: [3, 20],
+		65: [20],
+		66: [[3], [20, 23, 24]],
+		67: [],
+		68: [2],
+		69: [1],
+		70: [1, 19],
+		71: [
+			[3, 4, 6, 8, 9, 11, 14, 18, 19, 20],
+			[3, 4, 6, 8, 9, 11, 14, 19, 20],
+		],
+		72: [
+			[3, 4, 6, 8, 9, 11, 12, 19, 20],
+			[3, 4, 6, 8, 9, 11, 18, 19, 20],
+		],
+		73: [
+			[3, 4, 6, 8, 9, 11, 13, 19, 20],
+			[3, 4, 6, 8, 9, 11, 13, 18, 19, 20],
+			[3, 4, 6, 8, 9, 11, 15, 19, 20],
+		],
+		74: [3, 4, 6, 8, 9, 11, 19, 20],
+		75: [3, 4, 6, 8, 9, 11, 16, 19, 20],
+		76: [3, 4, 6, 8, 9, 19, 20],
+		77: [3, 4, 6, 8, 19, 20],
+		78: [
+			[3, 4, 6, 9, 19, 20],
+			[3, 4, 6, 8, 10, 19, 20],
+		],
+		79: [3, 4, 6, 19, 20],
+		80: [3, 4, 6, 7, 19, 20],
+		81: [3, 4, 19, 20],
+		82: [
+			[3, 4, 19, 20, 24],
+			[3, 4, 5, 19, 20],
+			[3, 4, 8, 19, 20],
+		],
+		83: [3, 19, 20],
+		84: [19, 20],
+		85: [4, 6, 8, 9, 19, 20],
+		86: [4, 6, 8, 16, 19, 20],
+		87: [
+			[4, 6, 8, 10, 16, 19, 20],
+			[4, 6, 9, 16, 19, 20],
+		],
+		88: [4, 6, 16, 19, 20],
+		89: [4, 6, 7, 16, 19, 20],
+	},
+	trumpet: {
+		0: [1, 2, 3],
+		54: [4, 5, 6],
+		55: [4, 2, 6],
+		56: [1, 5, 6],
+		57: [4, 5, 3],
+		58: [4, 2, 3],
+		59: [1, 5, 3],
+		60: [1, 2, 3],
+		61: [4, 5, 6],
+		62: [4, 2, 6],
+		63: [1, 5, 6],
+		64: [4, 5, 3],
+		65: [4, 2, 3],
+		66: [1, 5, 3],
+		67: [1, 2, 3],
+		68: [1, 5, 6],
+		69: [4, 5, 3],
+		70: [4, 2, 3],
+		71: [1, 5, 3],
+		72: [1, 2, 3],
+		73: [4, 5, 3],
+		74: [4, 2, 3],
+		75: [1, 5, 3],
+		76: [1, 2, 3],
+		77: [4, 2, 3],
+		78: [1, 4, 3],
+		79: [1, 2, 3],
+		80: [1, 5, 6],
+		81: [4, 5, 3],
+		82: [4, 2, 3],
+		83: [1, 5, 3],
+		84: [1, 2, 3],
+	},
+	horn: {
+		53: [1],
+		54: [2],
+		55: [],
+		56: [2, 3],
+		57: [1, 2],
+		58: [1],
+		59: [2],
+		60: [],
+		61: [1, 2],
+		62: [1],
+		63: [2],
+		64: [],
+		65: [1],
+		66: [2],
+		67: [],
+		68: [0, 2, 3],
+		69: [0, 1, 2],
+		70: [0, 1],
+		71: [0, 2],
+		72: [0],
+		73: [0, 2, 3],
+		74: [0, 1, 2],
+		75: [0, 1],
+		76: [0, 2],
+		77: [0],
+		78: [0, 2],
+		79: [0],
+		80: [0, 2, 3],
+		81: [0, 1, 2],
+		82: [0, 1],
+		83: [0, 2],
+		84: [0],
+	},
+	"up-bass-horn": {
+		0: [1, 2, 3],
+		40: [4, 5, 6],
+		41: [4, 2, 6],
+		42: [1, 5, 6],
+		43: [4, 5, 3],
+		44: [4, 2, 3],
+		45: [1, 5, 3],
+		46: [1, 2, 3],
+		47: [4, 5, 6],
+		48: [4, 2, 6],
+		49: [1, 5, 6],
+		50: [4, 5, 3],
+		51: [4, 2, 3],
+		52: [1, 5, 3],
+		53: [1, 2, 3],
+		54: [1, 5, 6],
+		55: [4, 5, 3],
+		56: [4, 2, 3],
+		57: [1, 5, 3],
+		58: [1, 2, 3],
+		59: [4, 5, 3],
+		60: [4, 2, 3],
+		61: [1, 5, 3],
+		62: [1, 2, 3],
+		63: [4, 2, 3],
+		64: [1, 5, 3],
+		65: [1, 2, 3],
+		66: [1, 5, 6],
+		67: [4, 5, 3],
+		68: [4, 2, 3],
+		69: [1, 5, 3],
+		70: [1, 2, 3],
+	},
+	trombone: {
+		0: [1],
+		40: [22],
+		41: [11],
+		42: [5],
+		43: [4],
+		44: [3],
+		45: [2],
+		46: [1],
+		47: [22],
+		48: [11],
+		49: [5],
+		50: [4],
+		51: [3],
+		52: [2],
+		53: [1],
+		54: [5],
+		55: [4],
+		56: [3],
+		57: [2],
+		58: [1],
+		59: [4],
+		60: [3],
+		61: [2],
+		62: [1],
+		63: [3],
+		64: [2],
+		65: [1],
+		66: [5],
+		67: [4],
+		68: [3],
+		69: [2],
+		70: [1],
+	},
+	saxophone: {
+		58: [2, 4, 5, 13, 17, 18, 19, 23],
+		59: [2, 4, 5, 11, 17, 18, 19, 23],
+		60: [2, 4, 5, 17, 18, 19, 23],
+		61: [2, 4, 5, 12, 17, 18, 19, 23],
+		62: [2, 4, 5, 17, 18, 19],
+		63: [2, 4, 5, 17, 18, 19, 22],
+		64: [2, 4, 5, 17, 18],
+		65: [2, 4, 5, 17],
+		66: [
+			[2, 4, 5, 18],
+			[2, 4, 5, 17, 21],
+		],
+		67: [2, 4, 5],
+		68: [2, 4, 5, 10],
+		69: [2, 4],
+		70: [
+			[2, 4, 16],
+			[2, 17],
+			[2, 3],
+		],
+		71: [2],
+		72: [[4], [2, 15]],
+		73: [],
+		74: [2, 4, 5, 6, 17, 18, 19],
+		75: [2, 4, 5, 6, 17, 18, 19, 22],
+		76: [2, 4, 5, 6, 17, 18],
+		77: [2, 4, 5, 6, 17],
+		78: [
+			[2, 4, 5, 6, 18],
+			[2, 4, 5, 6, 17, 21],
+		],
+		79: [2, 4, 5, 6],
+		80: [2, 4, 5, 6, 10],
+		81: [2, 4, 6],
+		82: [
+			[2, 4, 6, 16],
+			[2, 6, 17],
+			[2, 3, 6],
+		],
+		83: [2, 6],
+		84: [
+			[4, 6],
+			[2, 6, 15],
+		],
+		85: [6],
+		86: [6, 9],
+		87: [6, 7, 8],
+		88: [6, 8, 9, 14],
+		89: [
+			[6, 7, 8, 9, 14],
+			[1, 4, 6],
+		],
+	},
+	tuba: {
+		0: [1, 2, 3],
+		28: [4, 5, 6],
+		29: [4, 2, 6],
+		30: [1, 5, 6],
+		31: [4, 5, 3],
+		32: [4, 2, 3],
+		33: [4, 2, 6],
+		34: [1, 2, 3],
+		35: [4, 5, 6],
+		36: [4, 2, 6],
+		37: [1, 5, 6],
+		38: [4, 5, 3],
+		39: [4, 2, 3],
+		40: [1, 5, 3],
+		41: [1, 2, 3],
+		42: [1, 5, 6],
+		43: [4, 5, 3],
+		// 43: [4, 5, 3],
+		44: [4, 2, 3],
+		45: [1, 5, 3],
+		46: [1, 2, 3],
+		47: [4, 5, 3],
+		48: [4, 2, 3],
+		49: [1, 5, 3],
+		50: [1, 2, 3],
+		51: [4, 2, 3],
+		52: [1, 5, 3],
+		53: [1, 2, 3],
+		54: [1, 5, 6],
+		55: [4, 5, 3],
+		56: [4, 2, 3],
+		57: [1, 5, 3],
+		58: [1, 2, 3],
+	},
+	piccolo: {
+		60: [11, 2, 33, 4, 5, 6, 7, 8],
+		61: [11, 2, 33, 4, 5, 6, 7, 88],
+		62: [11, 2, 33, 4, 5, 6, 7],
+		63: [11, 2, 33, 4, 5, 6, 77],
+		64: [11, 2, 33, 4, 5, 6],
+		65: [11, 2, 33, 4, 5],
+		66: [11, 2, 33, 4, 6, 7],
+		67: [11, 2, 33, 4],
+		68: [11, 2, 33, 5, 6, 77],
+		69: [11, 2, 33],
+		70: [
+			[11, 2, 4, 5],
+			[1, 11, 2, 4, 6, 7],
+		],
+		71: [
+			[11, 2],
+			[11, 33, 4],
+		],
+		72: [11, 33],
+		73: [[2, 33], [11]],
+		74: [33],
+		75: [33, 4, 5, 6, 7],
+		76: [1, 2, 33, 4, 5, 6],
+		77: [1, 2, 33, 4, 5, 7],
+		78: [1, 2, 33, 4, 6],
+		79: [1, 2, 33, 4],
+		80: [1, 2, 33, 5],
+		81: [1, 2, 33],
+		82: [1, 2, 33, 5, 6, 7],
+		83: [1, 2, 33, 5, 6],
+		84: [1, 2, 5, 6],
+		85: [1, 2, 4, 5, 7, 8],
+		86: [1, 2, 4, 5, 7, 88],
+	},
+	"small-drum": {
+		0: ["active", "active-left", "active-right"],
+		64: ["left", "right"],
+	},
+	hulusi: {
+		59: [7, 6, 5, 4, 3, 2, 1],
+		60: [7, 6, 5, 4, 3, 2],
+		61: [7, 6, 5, 4, 3],
+		62: [7, 6, 5, 4],
+		63: [7, 6, 5],
+		64: [7, 6],
+		65: [
+			[7, 5, 4, 3, 2, 1],
+			[7, 5, 4, 3, 2],
+			[7, 66],
+		],
+		66: [7],
+	},
+	pan: {
+		55: [21],
+		57: [20],
+		59: [19],
+		60: [18],
+		62: [17],
+		64: [16],
+		65: [15],
+		67: [14],
+		69: [13],
+		71: [12],
+		72: [11],
+		74: [10],
+		76: [9],
+		77: [8],
+		79: [7],
+		81: [6],
+		83: [5],
+		84: [4],
+		86: [3],
+		88: [2],
+		89: [1],
+	},
+	ocarina: {
+		57: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
+		58: [1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12],
+		59: [1, 2, 4, 5, 6, 8, 9, 10, 11, 12],
+		60: [1, 2, 4, 5, 6, 11, 12],
+		61: [1, 2, 4, 5, 6, 7, 8, 9, 11, 12],
+		62: [1, 2, 4, 5, 6, 8, 9, 11, 12],
+		63: [1, 2, 4, 5, 6, 8, 10, 11, 12],
+		64: [1, 2, 4, 5, 6, 8, 11, 12],
+		65: [1, 2, 4, 5, 6, 11, 12],
+		66: [1, 2, 4, 6, 9, 11, 12],
+		67: [1, 2, 4, 6, 11, 12],
+		68: [1, 2, 6, 9, 11, 12],
+		69: [1, 2, 6, 11, 12],
+		70: [1, 2, 6, 9, 11, 12],
+		71: [1, 6, 9, 11, 12],
+		72: [6, 11, 12],
+		73: [2, 6, 12],
+		74: [6, 12],
+		75: [2, 6],
+		76: [6],
+		77: [],
+	},
+	melodica: {
+		56: [1],
+		57: [2],
+		58: [3],
+		59: [4],
+		60: [5],
+		61: [6],
+		62: [7],
+		63: [8],
+		64: [9],
+		65: [10],
+		66: [11],
+		67: [12],
+		68: [13],
+		69: [14],
+		70: [15],
+		71: [16],
+		72: [17],
+		73: [18],
+		74: [19],
+		75: [20],
+		76: [21],
+		77: [22],
+		78: [23],
+		79: [24],
+		80: [25],
+		81: [26],
+		82: [27],
+		83: [28],
+		84: [29],
+		85: [30],
+		86: [31],
+		87: [32],
+	},
+};
 
-export default relationships
+export default relationships;

+ 13 - 4
src/view/fingering/index.tsx

@@ -24,7 +24,9 @@ export default defineComponent({
 
 		return () => {
 			const relationship = fingerData.subject?.relationship?.[realKey.value] || [];
-			const rs: number[] = Array.isArray(relationship[1]) ? relationship[fingerData.relationshipIndex] : relationship;
+			const rs: number[] = Array.isArray(relationship[1])
+				? relationship[fingerData.relationshipIndex]
+				: relationship;
 			const canTizhi = Array.isArray(relationship[1]);
 			return (
 				<>
@@ -42,7 +44,9 @@ export default defineComponent({
 
 							<div
 								class={[styles.tizhi, canTizhi && styles.canDisplay]}
-								onClick={() => (fingerData.relationshipIndex = fingerData.relationshipIndex === 0 ? 1 : 0)}
+								onClick={() =>
+									(fingerData.relationshipIndex = fingerData.relationshipIndex === 0 ? 1 : 0)
+								}
 							>
 								替指
 							</div>
@@ -57,11 +61,16 @@ export default defineComponent({
 								})}
 							</div>
 
-							<div class={styles.rightContent}>
+							<div
+								style={{ display: state.fingeringInfo.disabledFinger ? "none" : "" }}
+								class={styles.rightContent}
+							>
 								<span class={[styles.yidiao, rs.includes(0) && styles.canDisplay]}>转调</span>
 								<div
 									class={[styles.tizhi, canTizhi && styles.canDisplay]}
-									onClick={() => (fingerData.relationshipIndex = fingerData.relationshipIndex === 0 ? 1 : 0)}
+									onClick={() =>
+										(fingerData.relationshipIndex = fingerData.relationshipIndex === 0 ? 1 : 0)
+									}
 								>
 									替指
 								</div>

+ 0 - 2
vite.config.ts

@@ -4,8 +4,6 @@ import vueJsx from "@vitejs/plugin-vue-jsx";
 import legacy from "@vitejs/plugin-legacy";
 import { resolve } from "path";
 import postCssPxToRem from "postcss-pxtorem";
-import { createStyleImportPlugin } from "vite-plugin-style-import";
-import mkcert from "vite-plugin-mkcert";
 
 // https://vitejs.dev/config/
 export default defineConfig({

Some files were not shown because too many files changed in this diff