Browse Source

Merge branch '2023-8-28'

liushengqiang 1 year ago
parent
commit
50d96b76d1
3 changed files with 20 additions and 5 deletions
  1. 6 2
      src/pc/home/index.tsx
  2. 13 3
      src/pc/home/runtime.ts
  3. 1 0
      src/pc/types.ts

+ 6 - 2
src/pc/home/index.tsx

@@ -276,6 +276,7 @@ export default defineComponent({
 				speed: "Q:1/4=60",
 				key: "K:C",
 				visualTranspose: 0,
+				visualKey: 'K:C',
 				subjectCode: "acoustic_grand_piano",
 				measures: initMusic(30),
 			} as IAbc,
@@ -1232,6 +1233,7 @@ export default defineComponent({
 			// 			: item.step + 12
 			// 		: item.step;
 			abcData.abc.visualTranspose = item.step;
+			abcData.abc.visualKey = item.value;
 			popup.moveKeyShow = false;
 			if (data.playState) {
 				abcData.synthControl.disable(true);
@@ -1290,12 +1292,13 @@ export default defineComponent({
 				}
 				if (abc) {
 					console.log("🚀 ~ abc:", abc);
-
+					data.musicName = abc.title ?? data.musicName;
 					abcData.abc.celf = abc.celf || "K:treble";
 					abcData.abc.key = abc.key.value || abc.key || "K:C";
 					abcData.abc.meter = abc.meter.value || abc.meter || "M:4/4";
 					abcData.abc.speed = abc.speed || "Q:1/4=60";
 					abcData.abc.visualTranspose = abc.visualTranspose || 0;
+					abcData.abc.visualKey = abc.visualKey || "K:C";
 					abcData.abc.subjectCode = abc.subjectCode || "acoustic_grand_piano";
 					const _instruments = ABCJS.synth.instrumentIndexToName.indexOf(abcData.abc.subjectCode as any);
 					abcData.synthOptions.program = _instruments > -1 ? _instruments : 0;
@@ -1578,6 +1581,7 @@ export default defineComponent({
 					const parseData = ABCJS.renderAbc("importRef", abc[0], { responsive: "resize" });
 					console.log("🚀 ~ parseData:", parseData);
 					abcData.abc = formateAbc(parseData[0], { subjectCode: abcData.abc.subjectCode });
+					data.musicName = abcData.abc.title || data.musicName;
 					handleResetRender();
 				};
 				reader.readAsText(file);
@@ -1908,7 +1912,7 @@ export default defineComponent({
 															<div
 																class={[
 																	styles.btnItem,
-																	abcData.abc.key === item.value && styles.btnItemActive,
+																	abcData.abc.visualKey === item.value && styles.btnItemActive,
 																]}
 																onClick={() => handleMoveKey(item)}
 															>

+ 13 - 3
src/pc/home/runtime.ts

@@ -297,7 +297,7 @@ export const moveNoteKey = (note: string, moveData: { step: number; move: number
 const formateGetData = {
 	getNoteType: (duration: number) => {
 		const type = 0.25 / duration;
-		console.log(type);
+		// console.log(type, duration);
 		const noteType = [
 			{ name: 0.25, value: "4" },
 			{ name: 0.5, value: "2" },
@@ -306,19 +306,29 @@ const formateGetData = {
 			{ name: 4, value: "//" },
 			{ name: 8, value: "///" },
 		];
-		return noteType.find((n) => n.name === type)?.value || "";
+		let _duration = noteType.find((n) => n.name === type)?.value || "";
+		const noteDuration: any = {
+			"0.375": "3/2",
+			"0.75": "3"
+		}
+		if (_duration === "") {
+			_duration = noteDuration[duration] || "";
+		}
+		return _duration
 	},
 };
 
 export const formateAbc = (visualObj: TuneObject, option: any) => {
+	let speed = visualObj?.metaText?.tempo?.bpm ? visualObj.metaText.tempo.bpm : visualObj.getBpm();
 	const abc = {
 		celf: "K:treble",
 		minUnit: "L:1/4",
 		meter: "M:4/4",
-		speed: `Q:1/4=${visualObj.getBpm()}`,
+		speed: `Q:1/4=${speed}`,
 		key: "K:C",
 		visualTranspose: 0,
 		subjectCode: option.subjectCode ?? "acoustic_grand_piano",
+		title: visualObj?.metaText?.title ?? "",
 	};
 	const list = [];
 	let notes = [];

+ 1 - 0
src/pc/types.ts

@@ -67,6 +67,7 @@ export interface IAbc {
 	measures: IMeasure[];
 	/** 移调 */
 	visualTranspose?: number;
+	visualKey?: string;
 	/** 声部 */
 	subjectCode?: string;
 }