|  | @@ -1257,8 +1257,9 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 | 
											
												
													
														|  |  			/**
 |  |  			/**
 | 
											
												
													
														|  |  			 * evxml的曲子,如果曲谱xml中带有times信息,则音符时值优先取times中的值
 |  |  			 * evxml的曲子,如果曲谱xml中带有times信息,则音符时值优先取times中的值
 | 
											
												
													
														|  |  			 * 曲子:1795013295024062466(春暖花开),如果音符有times信息,休止符没有times信息,此种规则是认为休止符不参与时值计算的,需要过滤掉该休止符
 |  |  			 * 曲子:1795013295024062466(春暖花开),如果音符有times信息,休止符没有times信息,此种规则是认为休止符不参与时值计算的,需要过滤掉该休止符
 | 
											
												
													
														|  | 
 |  | +			 * TODO:需要考虑唱名怎么处理,唱名是xml有多少个音符,就需要唱多少个,不能剔除
 | 
											
												
													
														|  |  			 */
 |  |  			 */
 | 
											
												
													
														|  | -			if (state.isEvxml && note.isRestFlag && note?.noteTimeInfo?.length === 0 && state.xmlHasTimes && state.playType !== 'sing') {
 |  | 
 | 
											
												
													
														|  | 
 |  | +			if (state.isEvxml && note.isRestFlag && note?.noteTimeInfo?.length === 0 && state.xmlHasTimes ) {
 | 
											
												
													
														|  |  				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) {
 | 
											
										
											
												
													
														|  | @@ -1267,7 +1268,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 | 
											
												
													
														|  |  				}
 |  |  				}
 | 
											
												
													
														|  |  			}
 |  |  			}
 | 
											
												
													
														|  |  			let evNoteStartTime = 0, evNoteEndTime = 0;
 |  |  			let evNoteStartTime = 0, evNoteEndTime = 0;
 | 
											
												
													
														|  | -			if (state.isEvxml && note?.noteTimeInfo?.length && state.playType !== 'sing') {
 |  | 
 | 
											
												
													
														|  | 
 |  | +			if (state.isEvxml && note?.noteTimeInfo?.length ) {
 | 
											
												
													
														|  |  				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) {
 | 
											
										
											
												
													
														|  | @@ -1376,10 +1377,15 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 | 
											
												
													
														|  |  			// console.log('👀看看endtime', nodeDetail.duration, relaEndtime, fixtime, i)
 |  |  			// console.log('👀看看endtime', nodeDetail.duration, relaEndtime, fixtime, i)
 | 
											
												
													
														|  |  			// console.log('音符时间',nodeDetail.i,nodeDetail.time,nodeDetail.endtime)
 |  |  			// console.log('音符时间',nodeDetail.i,nodeDetail.time,nodeDetail.endtime)
 | 
											
												
													
														|  |  			tickables = tickables.filter((tickable: any) => tickable.attrs?.type !== "GhostNote")
 |  |  			tickables = tickables.filter((tickable: any) => tickable.attrs?.type !== "GhostNote")
 | 
											
												
													
														|  | -			const maxNum = (state.isCombineRender && note.maxNoteNum) ? note.maxNoteNum : tickables.length;
 |  | 
 | 
											
												
													
														|  | 
 |  | +			let maxNum = (state.isCombineRender && note.maxNoteNum) ? note.maxNoteNum : tickables.length;
 | 
											
												
													
														|  | 
 |  | +			// 妙极客的曲子,一个休止小节内可能有多个休止符,此时maxNum是0,需要针对这种情况作处理
 | 
											
												
													
														|  | 
 |  | +			if (note.isRestFlag && maxNum === 0) {
 | 
											
												
													
														|  | 
 |  | +				maxNum = note.maxNoteNum;
 | 
											
												
													
														|  | 
 |  | +			}
 | 
											
												
													
														|  |  			nodeDetail.noteLength = maxNum || 1;
 |  |  			nodeDetail.noteLength = maxNum || 1;
 | 
											
												
													
														|  |  			allNotes.push(nodeDetail);
 |  |  			allNotes.push(nodeDetail);
 | 
											
												
													
														|  |  			allNoteId.push(nodeDetail.id);
 |  |  			allNoteId.push(nodeDetail.id);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  			if ( measures.some((item: any) => item.MeasureNumberXML !== nodeDetail.MeasureNumberXML) ) {
 |  |  			if ( measures.some((item: any) => item.MeasureNumberXML !== nodeDetail.MeasureNumberXML) ) {
 | 
											
												
													
														|  |  				measures = [];
 |  |  				measures = [];
 | 
											
												
													
														|  |  				measures.push(nodeDetail);
 |  |  				measures.push(nodeDetail);
 |