|
@@ -32,6 +32,8 @@ export default defineComponent({
|
|
|
subject: subject,
|
|
|
realKey: 0,
|
|
|
notes: [] as IFIGNER_INSTRUMENT_Note[],
|
|
|
+ tones: [] as IFIGNER_INSTRUMENT_Note[],
|
|
|
+ activeTone: "",
|
|
|
soundFonts: {} as any,
|
|
|
viewIndex: 0,
|
|
|
noteAudio: null as unknown as Howl,
|
|
@@ -53,7 +55,17 @@ export default defineComponent({
|
|
|
const getNotes = () => {
|
|
|
const fignerData = FIGNER_INSTRUMENT_DATA[data.subject as keyof typeof FIGNER_INSTRUMENT_DATA];
|
|
|
if (fignerData) {
|
|
|
- data.notes = fignerData.list;
|
|
|
+ data.tones = fignerData.tones || [];
|
|
|
+ if (data.tones.length) {
|
|
|
+ data.activeTone = data.tones[0].realName;
|
|
|
+ setNotes();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ const setNotes = () => {
|
|
|
+ const fignerData = FIGNER_INSTRUMENT_DATA[data.subject as keyof typeof FIGNER_INSTRUMENT_DATA];
|
|
|
+ if (fignerData) {
|
|
|
+ data.notes = fignerData[`list${data.activeTone}`];
|
|
|
}
|
|
|
};
|
|
|
const getFingeringData = async () => {
|
|
@@ -232,6 +244,38 @@ export default defineComponent({
|
|
|
替指
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <div class={styles.tones}>
|
|
|
+ {data.tones.map((tone: IFIGNER_INSTRUMENT_Note) => {
|
|
|
+ const steps = new Array(Math.abs(tone.step)).fill(1);
|
|
|
+ return (
|
|
|
+ <div
|
|
|
+ draggable={false}
|
|
|
+ class={styles.note}
|
|
|
+ onClick={() => {
|
|
|
+ data.activeTone = tone.realName;
|
|
|
+ setNotes();
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ {data.activeTone === tone.realName ? (
|
|
|
+ <img draggable={false} src={icons.icon_btn_ylow} />
|
|
|
+ ) : (
|
|
|
+ <img draggable={false} src={icons.icon_btn_blue} />
|
|
|
+ )}
|
|
|
+
|
|
|
+ <div class={[styles.noteKey, data.activeTone === tone.realName && styles.keyActive]}>
|
|
|
+ {tone.step > 0 ? steps.map((n) => <span class={styles.dot}></span>) : null}
|
|
|
+
|
|
|
+ <div class={styles.noteName}>
|
|
|
+ <sup>{tone.mark && (tone.mark === "rise" ? "#" : "b")}</sup>
|
|
|
+ {tone.key}
|
|
|
+ </div>
|
|
|
+ {tone.step < 0 ? steps.map((n) => <span class={styles.dot}></span>) : null}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class={styles.notes}>
|
|
|
{/* <Button>
|