Browse Source

fix: 唱名模式计算音符修改

TIANYONG 10 months ago
parent
commit
c8b6994206
1 changed files with 2 additions and 5 deletions
  1. 2 5
      src/helpers/formateMusic.ts

+ 2 - 5
src/helpers/formateMusic.ts

@@ -969,9 +969,6 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 	// let voicesBBox: any = null;
 	// let voicesBBox: any = null;
 	for (let { note, iterator, currentTime, isDouble, isMutileSubject } of _notes) {
 	for (let { note, iterator, currentTime, isDouble, isMutileSubject } of _notes) {
 		if (note) {
 		if (note) {
-			if (i==75) {
-				debugger
-			}
 			if (preMeasureNumber != note?.sourceMeasure?.MeasureNumberXML) {
 			if (preMeasureNumber != note?.sourceMeasure?.MeasureNumberXML) {
 				si = 0
 				si = 0
 			}
 			}
@@ -1261,7 +1258,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			 * evxml的曲子,如果曲谱xml中带有times信息,则音符时值优先取times中的值
 			 * evxml的曲子,如果曲谱xml中带有times信息,则音符时值优先取times中的值
 			 * 曲子:1795013295024062466(春暖花开),如果音符有times信息,休止符没有times信息,此种规则是认为休止符不参与时值计算的,需要过滤掉该休止符
 			 * 曲子:1795013295024062466(春暖花开),如果音符有times信息,休止符没有times信息,此种规则是认为休止符不参与时值计算的,需要过滤掉该休止符
 			 */
 			 */
-			if (state.isEvxml && note.isRestFlag && note?.noteTimeInfo?.length === 0 && state.xmlHasTimes) {
+			if (state.isEvxml && note.isRestFlag && note?.noteTimeInfo?.length === 0 && state.xmlHasTimes && state.playType !== 'sing') {
 				const idx = _notes.findIndex(item=>item.note === note);
 				const idx = _notes.findIndex(item=>item.note === note);
 				const allowRange = Math.abs(_notes[idx+1]?.note?.noteTimeInfo?.[0]?.begin - _notes[idx-1]?.note?.noteTimeInfo?.[0]?.end) < 10;
 				const allowRange = Math.abs(_notes[idx+1]?.note?.noteTimeInfo?.[0]?.begin - _notes[idx-1]?.note?.noteTimeInfo?.[0]?.end) < 10;
 				if (allowRange) {
 				if (allowRange) {
@@ -1270,7 +1267,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				}
 				}
 			}
 			}
 			let evNoteStartTime = 0, evNoteEndTime = 0;
 			let evNoteStartTime = 0, evNoteEndTime = 0;
-			if (state.isEvxml && note?.noteTimeInfo?.length) {
+			if (state.isEvxml && note?.noteTimeInfo?.length && state.playType !== 'sing') {
 				let idx = noteIds.filter((item: any) => item === svgElement?.attrs.id)?.length || 0;
 				let idx = noteIds.filter((item: any) => item === svgElement?.attrs.id)?.length || 0;
 				// 如果是合并的小节的休止符
 				// 如果是合并的小节的休止符
 				if (note.isRestFlag && !svgElement && note?.NoteToGraphicalNoteObjectId) {
 				if (note.isRestFlag && !svgElement && note?.NoteToGraphicalNoteObjectId) {