|
@@ -12,7 +12,7 @@ import { showConfirmDialog, showToast } from "vant";
|
|
|
import Keys from "../component/keys";
|
|
|
import { Collapse, CollapseItem } from "@varlet/ui";
|
|
|
import { IAbc, IMeasure, INote, INoteActive } from "../types";
|
|
|
-import { ABC_DATA, createMeasure, createNote, renderMeasures } from "./runtime";
|
|
|
+import { ABC_DATA, createMeasure, createNote, moveNoteKey, renderMeasures } from "./runtime";
|
|
|
import TheIcon from "/src/components/The-icon";
|
|
|
import { cloneDeep } from "lodash";
|
|
|
import TheSpeed from "./component/the-speed";
|
|
@@ -298,6 +298,7 @@ export default defineComponent({
|
|
|
key: "K:C",
|
|
|
visualTranspose: 0,
|
|
|
transposeKey: "K:C",
|
|
|
+ subjectCode: "acoustic_grand_piano",
|
|
|
measures: initMusic(30),
|
|
|
} as IAbc,
|
|
|
});
|
|
@@ -895,15 +896,24 @@ export default defineComponent({
|
|
|
|
|
|
/** 移调 */
|
|
|
const handleMoveKey = (item: (typeof ABC_DATA.key)[0]) => {
|
|
|
- if (data.moveKeyType === "down") {
|
|
|
- abcData.abc.visualTranspose = item.step < 0 ? item.step : item.step - 12;
|
|
|
- } else if (data.moveKeyType === "up") {
|
|
|
- abcData.abc.visualTranspose = item.step >= 0 ? item.step : item.step + 12;
|
|
|
- } else {
|
|
|
- abcData.abc.visualTranspose = item.step;
|
|
|
+ // 将所有的音符移调
|
|
|
+ for (let i = 0; i < abcData.abc.measures.length; i++) {
|
|
|
+ const measure = abcData.abc.measures[i];
|
|
|
+ for (let j = 0; j < measure.notes.length; j++) {
|
|
|
+ const note = measure.notes[j];
|
|
|
+ if (note.content == "z") continue;
|
|
|
+ note.content = moveNoteKey(note.accidental + note.content, item.step, data.moveKeyType);
|
|
|
+ }
|
|
|
}
|
|
|
- // console.log(abcData.abc.visualTranspose, item.step, item.value)
|
|
|
- abcData.abc.transposeKey = item.value;
|
|
|
+ // if (data.moveKeyType === "down") {
|
|
|
+ // abcData.abc.visualTranspose = item.step < 0 ? item.step : item.step - 12;
|
|
|
+ // } else if (data.moveKeyType === "up") {
|
|
|
+ // abcData.abc.visualTranspose = item.step >= 0 ? item.step : item.step + 12;
|
|
|
+ // } else {
|
|
|
+ // abcData.abc.visualTranspose = item.step;
|
|
|
+ // }
|
|
|
+ // // console.log(abcData.abc.visualTranspose, item.step, item.value)
|
|
|
+ abcData.abc.key = item.value;
|
|
|
popup.moveKeyShow = false;
|
|
|
handleResetRender();
|
|
|
};
|
|
@@ -973,6 +983,9 @@ export default defineComponent({
|
|
|
abcData.abc.speed = abc.speed || "Q:1/4=60";
|
|
|
abcData.abc.visualTranspose = abc.visualTranspose || 0;
|
|
|
abcData.abc.transposeKey = abc.transposeKey || "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
|
|
|
abcData.abc.measures = abc.measures || initMusic(30);
|
|
|
console.log("🚀 ~ abcData.abc:", abcData.abc);
|
|
|
}
|
|
@@ -1334,10 +1347,10 @@ export default defineComponent({
|
|
|
options={instruments.value}
|
|
|
v-model:value={abcData.synthOptions.program}
|
|
|
onUpdate:value={() => {
|
|
|
+ togglePlay("pause");
|
|
|
popup.selectSubjectShow = false;
|
|
|
getAudioSource();
|
|
|
handleResetRender();
|
|
|
- togglePlay("pause");
|
|
|
togglePlay("reset");
|
|
|
}}
|
|
|
></NSelect>
|