|
@@ -27,11 +27,15 @@ export const getFixTime = (speed: number) => {
|
|
let numerator = duration.numerator || 0;
|
|
let numerator = duration.numerator || 0;
|
|
let denominator = duration.denominator || 4;
|
|
let denominator = duration.denominator || 4;
|
|
const beatUnit = duration.beatUnit || "quarter";
|
|
const beatUnit = duration.beatUnit || "quarter";
|
|
|
|
+ // if (state.repeatedBeats) {
|
|
|
|
+ // // 音频制作问题仅2拍不重复
|
|
|
|
+ // numerator = numerator === 2 ? 4 : numerator;
|
|
|
|
+ // } else if (numerator === 2 && denominator === 4) {
|
|
|
|
+ // numerator = 4
|
|
|
|
+ // }
|
|
|
|
+ // 重复节拍,拍数*2进行计算
|
|
if (state.repeatedBeats) {
|
|
if (state.repeatedBeats) {
|
|
- // 音频制作问题仅2拍不重复
|
|
|
|
- numerator = numerator === 2 ? 4 : numerator;
|
|
|
|
- } else if (numerator === 2 && denominator === 4) {
|
|
|
|
- numerator = 4
|
|
|
|
|
|
+ numerator = numerator*2;
|
|
}
|
|
}
|
|
// console.log('diff', speed, duration, formatBeatUnit(beatUnit), denominator, numerator, (numerator / denominator))
|
|
// console.log('diff', speed, duration, formatBeatUnit(beatUnit), denominator, numerator, (numerator / denominator))
|
|
return state.isOpenMetronome ? (60 / speed) * formatBeatUnit(beatUnit) * (numerator / denominator) : 0;
|
|
return state.isOpenMetronome ? (60 / speed) * formatBeatUnit(beatUnit) * (numerator / denominator) : 0;
|
|
@@ -356,7 +360,7 @@ export const onlyVisible = (xml: string, partIndex: number): string => {
|
|
const detailId = state.examSongId + "";
|
|
const detailId = state.examSongId + "";
|
|
const xmlParse = new DOMParser().parseFromString(xml, "text/xml");
|
|
const xmlParse = new DOMParser().parseFromString(xml, "text/xml");
|
|
const partList = xmlParse.getElementsByTagName("part-list")?.[0]?.getElementsByTagName("score-part") || [];
|
|
const partList = xmlParse.getElementsByTagName("part-list")?.[0]?.getElementsByTagName("score-part") || [];
|
|
- const partListNames = Array.from(partList).map((item) => item.getElementsByTagName("part-name")?.[0]?.textContent || "");
|
|
|
|
|
|
+ const partListNames = Array.from(partList).map((item) => item.getElementsByTagName("part-name")?.[0]?.textContent?.trim() || "");
|
|
const parts: any = xmlParse.getElementsByTagName("part");
|
|
const parts: any = xmlParse.getElementsByTagName("part");
|
|
// const firstTimeInfo = parts[0]?.getElementsByTagName('metronome')[0]?.parentElement?.parentElement?.cloneNode(true)
|
|
// const firstTimeInfo = parts[0]?.getElementsByTagName('metronome')[0]?.parentElement?.parentElement?.cloneNode(true)
|
|
const firstMeasures = [...parts[0]?.getElementsByTagName("measure")];
|
|
const firstMeasures = [...parts[0]?.getElementsByTagName("measure")];
|