liushengqiang 1 year ago
parent
commit
b8348aded3
100 changed files with 208 additions and 4 deletions
  1. 21 4
      src/page-gym/detail/index.tsx
  2. 4 0
      src/state.ts
  3. 176 0
      src/view/fingering/fingering-config.ts
  4. BIN
      src/view/fingering/fingering-img/clarinet/1.png
  5. BIN
      src/view/fingering/fingering-img/clarinet/10.png
  6. BIN
      src/view/fingering/fingering-img/clarinet/11.png
  7. BIN
      src/view/fingering/fingering-img/clarinet/12.png
  8. BIN
      src/view/fingering/fingering-img/clarinet/13.png
  9. BIN
      src/view/fingering/fingering-img/clarinet/14.png
  10. BIN
      src/view/fingering/fingering-img/clarinet/15.png
  11. BIN
      src/view/fingering/fingering-img/clarinet/16.png
  12. BIN
      src/view/fingering/fingering-img/clarinet/17.png
  13. BIN
      src/view/fingering/fingering-img/clarinet/18.png
  14. BIN
      src/view/fingering/fingering-img/clarinet/19.png
  15. BIN
      src/view/fingering/fingering-img/clarinet/2.png
  16. BIN
      src/view/fingering/fingering-img/clarinet/20.png
  17. BIN
      src/view/fingering/fingering-img/clarinet/21.png
  18. BIN
      src/view/fingering/fingering-img/clarinet/22.png
  19. BIN
      src/view/fingering/fingering-img/clarinet/23.png
  20. BIN
      src/view/fingering/fingering-img/clarinet/24.png
  21. BIN
      src/view/fingering/fingering-img/clarinet/3.png
  22. BIN
      src/view/fingering/fingering-img/clarinet/4.png
  23. BIN
      src/view/fingering/fingering-img/clarinet/5.png
  24. BIN
      src/view/fingering/fingering-img/clarinet/6.png
  25. BIN
      src/view/fingering/fingering-img/clarinet/7.png
  26. BIN
      src/view/fingering/fingering-img/clarinet/8.png
  27. BIN
      src/view/fingering/fingering-img/clarinet/9.png
  28. BIN
      src/view/fingering/fingering-img/clarinet/full.png
  29. 1 0
      src/view/fingering/fingering-img/clarinet/index.json
  30. BIN
      src/view/fingering/fingering-img/flute/14.png
  31. BIN
      src/view/fingering/fingering-img/flute/15.png
  32. BIN
      src/view/fingering/fingering-img/flute/16.png
  33. BIN
      src/view/fingering/fingering-img/flute/17.png
  34. BIN
      src/view/fingering/fingering-img/flute/18.png
  35. BIN
      src/view/fingering/fingering-img/flute/19.png
  36. BIN
      src/view/fingering/fingering-img/flute/20.png
  37. BIN
      src/view/fingering/fingering-img/flute/21.png
  38. BIN
      src/view/fingering/fingering-img/flute/22.png
  39. BIN
      src/view/fingering/fingering-img/flute/23.png
  40. BIN
      src/view/fingering/fingering-img/flute/24.png
  41. BIN
      src/view/fingering/fingering-img/flute/25.png
  42. BIN
      src/view/fingering/fingering-img/flute/26.png
  43. BIN
      src/view/fingering/fingering-img/flute/27.png
  44. BIN
      src/view/fingering/fingering-img/flute/28.png
  45. BIN
      src/view/fingering/fingering-img/flute/full.png
  46. 1 0
      src/view/fingering/fingering-img/flute/index.json
  47. BIN
      src/view/fingering/fingering-img/horn/0.png
  48. BIN
      src/view/fingering/fingering-img/horn/1.png
  49. BIN
      src/view/fingering/fingering-img/horn/2.png
  50. BIN
      src/view/fingering/fingering-img/horn/3.png
  51. BIN
      src/view/fingering/fingering-img/horn/full.png
  52. 1 0
      src/view/fingering/fingering-img/horn/index.json
  53. BIN
      src/view/fingering/fingering-img/piccolo/1.png
  54. BIN
      src/view/fingering/fingering-img/piccolo/11.png
  55. BIN
      src/view/fingering/fingering-img/piccolo/2.png
  56. BIN
      src/view/fingering/fingering-img/piccolo/3.png
  57. BIN
      src/view/fingering/fingering-img/piccolo/33.png
  58. BIN
      src/view/fingering/fingering-img/piccolo/4.png
  59. BIN
      src/view/fingering/fingering-img/piccolo/5.png
  60. BIN
      src/view/fingering/fingering-img/piccolo/6.png
  61. BIN
      src/view/fingering/fingering-img/piccolo/7.png
  62. BIN
      src/view/fingering/fingering-img/piccolo/77.png
  63. BIN
      src/view/fingering/fingering-img/piccolo/8.png
  64. BIN
      src/view/fingering/fingering-img/piccolo/88.png
  65. BIN
      src/view/fingering/fingering-img/piccolo/full.png
  66. 2 0
      src/view/fingering/fingering-img/piccolo/index.json
  67. BIN
      src/view/fingering/fingering-img/saxophone/1.png
  68. BIN
      src/view/fingering/fingering-img/saxophone/10.png
  69. BIN
      src/view/fingering/fingering-img/saxophone/11.png
  70. BIN
      src/view/fingering/fingering-img/saxophone/12.png
  71. BIN
      src/view/fingering/fingering-img/saxophone/13.png
  72. BIN
      src/view/fingering/fingering-img/saxophone/14.png
  73. BIN
      src/view/fingering/fingering-img/saxophone/15.png
  74. BIN
      src/view/fingering/fingering-img/saxophone/16.png
  75. BIN
      src/view/fingering/fingering-img/saxophone/17.png
  76. BIN
      src/view/fingering/fingering-img/saxophone/18.png
  77. BIN
      src/view/fingering/fingering-img/saxophone/19.png
  78. BIN
      src/view/fingering/fingering-img/saxophone/2.png
  79. BIN
      src/view/fingering/fingering-img/saxophone/20.png
  80. BIN
      src/view/fingering/fingering-img/saxophone/21.png
  81. BIN
      src/view/fingering/fingering-img/saxophone/22.png
  82. BIN
      src/view/fingering/fingering-img/saxophone/23.png
  83. BIN
      src/view/fingering/fingering-img/saxophone/3.png
  84. BIN
      src/view/fingering/fingering-img/saxophone/4.png
  85. BIN
      src/view/fingering/fingering-img/saxophone/5.png
  86. BIN
      src/view/fingering/fingering-img/saxophone/6.png
  87. BIN
      src/view/fingering/fingering-img/saxophone/7.png
  88. BIN
      src/view/fingering/fingering-img/saxophone/8.png
  89. BIN
      src/view/fingering/fingering-img/saxophone/9.png
  90. BIN
      src/view/fingering/fingering-img/saxophone/full.png
  91. 1 0
      src/view/fingering/fingering-img/saxophone/index.json
  92. BIN
      src/view/fingering/fingering-img/small-drum/active.png
  93. BIN
      src/view/fingering/fingering-img/small-drum/full.png
  94. 1 0
      src/view/fingering/fingering-img/small-drum/index.json
  95. BIN
      src/view/fingering/fingering-img/small-drum/left.png
  96. BIN
      src/view/fingering/fingering-img/small-drum/right.png
  97. BIN
      src/view/fingering/fingering-img/trombone/1.png
  98. BIN
      src/view/fingering/fingering-img/trombone/11.png
  99. BIN
      src/view/fingering/fingering-img/trombone/2.png
  100. BIN
      src/view/fingering/fingering-img/trombone/22.png

+ 21 - 4
src/page-gym/detail/index.tsx

@@ -18,16 +18,18 @@ import { getQuery } from "/src/utils/queryString";
 import Evaluating, { evaluatingData } from "/src/view/evaluating";
 import MeasureSpeed from "/src/view/plugins/measure-speed";
 import Selection from "/src/view/selection";
+import { mappingVoicePart, subjectFingering } from "/src/view/fingering/fingering-config";
+import Fingering from "/src/view/fingering";
 
 //特殊教材分类id
 const classids = [1, 30, 97]; // [大雅金唐, 竖笛教程, 声部训练]
 export default defineComponent({
 	name: "music-list",
 	setup() {
-		const route = useRoute()
+		const route = useRoute();
 		const query: any = {
 			...getQuery(),
-			...route.query
+			...route.query,
 		};
 
 		const paramsId = route.params.id as string;
@@ -119,8 +121,12 @@ export default defineComponent({
 			state.track = data.track;
 			state.isOpenPrepare = true;
 
+			// 映射声部ID
+			state.subjectId = mappingVoicePart(state.subjectId, "GYM");
 			// 是否打击乐
 			state.isPercussion = state.subjectId == 23 || state.subjectId == 113 || state.subjectId == 121 || isRhythmicExercises();
+
+			state.fingeringInfo = subjectFingering[state.subjectId];
 		};
 
 		const setCustom = () => {
@@ -159,22 +165,33 @@ export default defineComponent({
 				<div class={styles.headHeight}>
 					<Transition name="van-slide-down">{detailData.svgRendered && <HeaderTop />}</Transition>
 				</div>
-				<div class={[styles.container, state.setting.eyeProtection && 'eyeProtection', !state.setting.displayCursor && 'hideCursor']} id="mainContainer">
+				<div class={[styles.container, state.setting.eyeProtection && "eyeProtection", !state.setting.displayCursor && "hideCursor"]} id="mainContainer">
+					{/* 曲谱渲染和点击层 */}
 					{!detailData.isLoading && (
 						<div id="musicAndSelection">
 							<MusicScore onRendered={handleRendered} />
 							{detailData.showSelection && <Selection />}
 						</div>
 					)}
+					{/* 播放 */}
 					{!detailData.isLoading && <AudioList />}
+					{/* 评测 */}
 					{state.modeType === "evaluating" && (
 						<>
 							<Evaluating />
 							{evaluatingData.rendered && <EvaluatModel />}
 						</>
 					)}
+					{/* 指法 */}
+					{/* {state.setting.displayFingering && <Fingering />} */}
 				</div>
-				<div class={styles.plugins}>{detailData.svgRendered && <MeasureSpeed />}</div>
+
+				{/* 公用的插件 */}
+				{detailData.svgRendered && (
+					<div class={styles.plugins}>
+						<MeasureSpeed />
+					</div>
+				)}
 			</div>
 		);
 	},

+ 4 - 0
src/state.ts

@@ -111,6 +111,10 @@ const state = reactive({
 	},
 	/** 节拍器的时间 */
 	fixtime: 0,
+	/** 指法信息 */
+	fingeringInfo: {
+
+	},
 
 	repeatedBeats: 0,
 

+ 176 - 0
src/view/fingering/fingering-config.ts

@@ -0,0 +1,176 @@
+import { CSSProperties } from "vue";
+import relationships from "./fingering-relationships";
+
+export type Fingering = {
+	json: any;
+	relationship: Object;
+	height?: number | string;
+	width?: number | string;
+	maxWidth?: number;
+	styles?: CSSProperties;
+} | null;
+export type ITypeContentItem = {
+	name: IVocals;
+	direction: "vertical" | "transverse";
+	width?: string;
+	paddingLeft?: string;
+	paddingRight?: string;
+};
+
+type ITypeContent = {
+	[key: string | number]: ITypeContentItem;
+};
+
+export type IVocals = "flute" | "clarinet" | "saxophone" | "trumpet" | "horn" | "trombone" | "up-bass-horn" | "small-drum" | "tuba" | "piccolo";
+
+/** 映射声部ID */
+export const mappingVoicePart = (id: number, soruce: 'GYM' | 'COLEXIU' | 'ORCHESTRA') : number => {
+  if (soruce === 'GYM') {
+    return id
+  } else if (soruce === 'COLEXIU'){
+    const subject: {[_key: string | number]: number} = {
+      2: 32
+    }
+    return subject[id]
+  }
+  return 0
+}
+
+/** 声部的指法配置信息 */
+export const subjectFingering: ITypeContent = {
+	2: {
+		name: "flute",
+		direction: "transverse",
+	}, // 长笛
+	4: {
+		name: "clarinet",
+		direction: "vertical",
+		width: "1rem",
+		paddingLeft: "0rem",
+		paddingRight: "1rem",
+	}, // 单簧管
+	5: {
+		name: "saxophone",
+		direction: "vertical",
+		width: "3rem",
+	}, // 萨克斯
+	6: {
+		name: "saxophone",
+		direction: "vertical",
+		width: "3rem",
+	}, // 中音萨克斯
+	12: {
+		name: "trumpet",
+		direction: "transverse",
+	}, // 小号
+	13: {
+		name: "horn",
+		direction: "vertical",
+		width: "3.5rem",
+	}, // 圆号
+	14: {
+		name: "trombone",
+		direction: "transverse",
+	}, // 长号
+	15: {
+		name: "up-bass-horn",
+		direction: "vertical",
+		width: "3rem",
+	}, // 上低音号
+	17: {
+		name: "tuba",
+		direction: "vertical",
+		width: "3.4rem",
+	}, // 大号
+	// 23: {
+	//   name: 'small-drum',
+	//   direction: 'vertical'
+	// }, // 打击乐
+	120: {
+		name: "piccolo",
+		direction: "vertical",
+		width: "1rem",
+		paddingRight: "0.8rem",
+	}, // 短笛
+};
+
+export const getFingeringConfig = async (type: IVocals): Promise<Fingering> => {
+	switch (type) {
+		case "flute":
+			const flute = await import(`./fingering-img/flute/index.json`);
+			return {
+				json: flute.default,
+				relationship: relationships.flute,
+				height: "60px",
+				styles: {},
+			};
+		case "clarinet":
+			const clarinet = await import(`./fingering-img/clarinet/index.json`);
+			return {
+				json: clarinet.default,
+				relationship: relationships.clarinet,
+				styles: {
+					marginLeft: ".4rem",
+					marginRight: ".7rem",
+				},
+			};
+		case "trumpet":
+			const trumpet = await import(`./fingering-img/trumpet/index.json`);
+			return {
+				json: trumpet.default,
+				relationship: relationships.trumpet,
+				// maxWidth: 150,
+			};
+		case "horn":
+			const horn = await import(`./fingering-img/horn/index.json`);
+			return {
+				json: horn.default,
+				relationship: relationships.horn,
+				height: "212px",
+				width: "252px",
+			};
+		case "tuba":
+			const tuba = await import(`./fingering-img/tuba/index.json`);
+			return {
+				json: tuba.default,
+				relationship: relationships.tuba,
+			};
+		case "piccolo":
+			const piccolo = await import(`./fingering-img/piccolo/index.json`);
+			return {
+				json: piccolo.default,
+				relationship: relationships.piccolo,
+			};
+		case "up-bass-horn":
+			const upBassHorn = await import(`./fingering-img/up-bass-horn/index.json`);
+			return {
+				json: upBassHorn.default,
+				relationship: relationships.upBassHorn,
+			};
+		case "trombone":
+			const trombone = await import(`./fingering-img/trombone/index.json`);
+			return {
+				json: trombone.default,
+				relationship: relationships.trombone,
+			};
+		case "saxophone":
+			const saxophone = await import(`./fingering-img/saxophone/index.json`);
+			return {
+				json: saxophone.default,
+				relationship: relationships.saxophone,
+				styles: {
+					marginLeft: ".2rem",
+					marginRight: ".3rem",
+				},
+			};
+		case "small-drum":
+			const smallDrum = await import(`./fingering-img/small-drum/index.json`);
+			return {
+				json: smallDrum.default,
+				relationship: relationships.smallDrum,
+				width: "180px",
+			};
+		default:
+			return null;
+	}
+};

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


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


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


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


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


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


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


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


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


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


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


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


BIN
src/view/fingering/fingering-img/clarinet/20.png


BIN
src/view/fingering/fingering-img/clarinet/21.png


BIN
src/view/fingering/fingering-img/clarinet/22.png


BIN
src/view/fingering/fingering-img/clarinet/23.png


BIN
src/view/fingering/fingering-img/clarinet/24.png


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


BIN
src/view/fingering/fingering-img/flute/22.png


BIN
src/view/fingering/fingering-img/flute/23.png


BIN
src/view/fingering/fingering-img/flute/24.png


BIN
src/view/fingering/fingering-img/flute/25.png


BIN
src/view/fingering/fingering-img/flute/26.png


BIN
src/view/fingering/fingering-img/flute/27.png


BIN
src/view/fingering/fingering-img/flute/28.png


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


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


BIN
src/view/fingering/fingering-img/horn/0.png


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


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


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


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


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


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


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


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


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


BIN
src/view/fingering/fingering-img/piccolo/33.png


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


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


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


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


BIN
src/view/fingering/fingering-img/piccolo/77.png


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


BIN
src/view/fingering/fingering-img/piccolo/88.png


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


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


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


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


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


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


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


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


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


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


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


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


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


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


BIN
src/view/fingering/fingering-img/saxophone/20.png


BIN
src/view/fingering/fingering-img/saxophone/21.png


BIN
src/view/fingering/fingering-img/saxophone/22.png


BIN
src/view/fingering/fingering-img/saxophone/23.png


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


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


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


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


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


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


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


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


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


BIN
src/view/fingering/fingering-img/small-drum/active.png


BIN
src/view/fingering/fingering-img/small-drum/full.png


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


BIN
src/view/fingering/fingering-img/small-drum/left.png


BIN
src/view/fingering/fingering-img/small-drum/right.png


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


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


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


BIN
src/view/fingering/fingering-img/trombone/22.png


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