|  | @@ -1093,4 +1093,191 @@ export const setCustomNoteRealValue = () => {
 | 
	
		
			
				|  |  |      if (["12667", "12673"].includes(detailId)){
 | 
	
		
			
				|  |  |          customData.customNoteCurrentTime = true
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -};
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/** 转换简谱的全休止符和二分休止符 */
 | 
	
		
			
				|  |  | +export const transferJianNote = (measure: any, divisions: number, preBeats: number, preBeatType: number) => {
 | 
	
		
			
				|  |  | +	const multipleXs = preBeatType / 4;
 | 
	
		
			
				|  |  | +	const notes = measure.getElementsByTagName("note")
 | 
	
		
			
				|  |  | +	for (const note of notes) {
 | 
	
		
			
				|  |  | +		const noteType = note.getElementsByTagName("type")?.[0]?.textContent || '';
 | 
	
		
			
				|  |  | +		if ((noteType === 'whole' || noteType === 'half') && note.getElementsByTagName("rest").length) {
 | 
	
		
			
				|  |  | +			// 4/4拍,3/4拍
 | 
	
		
			
				|  |  | +			if ((preBeats === 4 && preBeatType === 4) || (preBeats === 3 && preBeatType === 4)) {
 | 
	
		
			
				|  |  | +				let maxNumber = noteType === 'half' ? 2 : preBeats / multipleXs;
 | 
	
		
			
				|  |  | +				// 如果二分音符带附点,需要判断处理下
 | 
	
		
			
				|  |  | +				if (note.getElementsByTagName("dot").length) {
 | 
	
		
			
				|  |  | +					maxNumber = maxNumber + 1;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				if (!Number.isInteger(maxNumber)) {
 | 
	
		
			
				|  |  | +					return;
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				// console.log('几个1/4音符',maxNumber)
 | 
	
		
			
				|  |  | +				let quarterNoteNumber = 1;
 | 
	
		
			
				|  |  | +				while (quarterNoteNumber <= maxNumber) {
 | 
	
		
			
				|  |  | +					const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>quarter</type>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +					quarterNoteNumber += 1;
 | 
	
		
			
				|  |  | +				};
 | 
	
		
			
				|  |  | +				measure.removeChild(note);
 | 
	
		
			
				|  |  | +			} else if (preBeats === 3 && preBeatType === 8) {
 | 
	
		
			
				|  |  | +				const maxNumber = noteType === 'half' ? 2 : 3;
 | 
	
		
			
				|  |  | +				let quarterNoteNumber = 1;
 | 
	
		
			
				|  |  | +				while (quarterNoteNumber <= maxNumber) {
 | 
	
		
			
				|  |  | +					const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>eighth</type>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +					quarterNoteNumber += 1;
 | 
	
		
			
				|  |  | +				};
 | 
	
		
			
				|  |  | +				measure.removeChild(note);
 | 
	
		
			
				|  |  | +			} else if (preBeats === 5 && preBeatType === 8) {
 | 
	
		
			
				|  |  | +				if (noteType === 'whole') {
 | 
	
		
			
				|  |  | +					const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions+divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>quarter</type>
 | 
	
		
			
				|  |  | +					<dot></dot>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +					const newnote2 = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote2.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>quarter</type>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote2, note);
 | 
	
		
			
				|  |  | +					measure.removeChild(note);
 | 
	
		
			
				|  |  | +				} else if (noteType === 'half') {
 | 
	
		
			
				|  |  | +					const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions+divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>quarter</type>
 | 
	
		
			
				|  |  | +					<dot></dot>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +					const newnote2 = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote2.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>eighth</type>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote2, note);
 | 
	
		
			
				|  |  | +					measure.removeChild(note);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			} else if (preBeats === 6 && preBeatType === 8) {
 | 
	
		
			
				|  |  | +				if (noteType === 'whole') {
 | 
	
		
			
				|  |  | +					const maxNumber = 2;
 | 
	
		
			
				|  |  | +					let quarterNoteNumber = 1;
 | 
	
		
			
				|  |  | +					while (quarterNoteNumber <= maxNumber) {
 | 
	
		
			
				|  |  | +						const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +						newnote.innerHTML = `
 | 
	
		
			
				|  |  | +						<rest></rest>
 | 
	
		
			
				|  |  | +						<duration>${divisions+divisions/2}</duration>
 | 
	
		
			
				|  |  | +						<voice>1</voice>
 | 
	
		
			
				|  |  | +						<type>quarter</type>
 | 
	
		
			
				|  |  | +						<dot></dot>`
 | 
	
		
			
				|  |  | +						measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +						quarterNoteNumber += 1;
 | 
	
		
			
				|  |  | +					};
 | 
	
		
			
				|  |  | +					measure.removeChild(note);
 | 
	
		
			
				|  |  | +				} else if (noteType === 'half') {
 | 
	
		
			
				|  |  | +					const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions+divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>quarter</type>
 | 
	
		
			
				|  |  | +					<dot></dot>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +					const newnote2 = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote2.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>eighth</type>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote2, note);
 | 
	
		
			
				|  |  | +					measure.removeChild(note);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			} else if (preBeats === 9 && preBeatType === 8) {
 | 
	
		
			
				|  |  | +				if (noteType === 'whole') {
 | 
	
		
			
				|  |  | +					const maxNumber = 3;
 | 
	
		
			
				|  |  | +					let quarterNoteNumber = 1;
 | 
	
		
			
				|  |  | +					while (quarterNoteNumber <= maxNumber) {
 | 
	
		
			
				|  |  | +						const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +						newnote.innerHTML = `
 | 
	
		
			
				|  |  | +						<rest></rest>
 | 
	
		
			
				|  |  | +						<duration>${divisions+divisions/2}</duration>
 | 
	
		
			
				|  |  | +						<voice>1</voice>
 | 
	
		
			
				|  |  | +						<type>quarter</type>
 | 
	
		
			
				|  |  | +						<dot></dot>`
 | 
	
		
			
				|  |  | +						measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +						quarterNoteNumber += 1;
 | 
	
		
			
				|  |  | +					};
 | 
	
		
			
				|  |  | +					measure.removeChild(note);
 | 
	
		
			
				|  |  | +				} else if (noteType === 'half') {
 | 
	
		
			
				|  |  | +					const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions+divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>quarter</type>
 | 
	
		
			
				|  |  | +					<dot></dot>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +					const newnote2 = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote2.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>eighth</type>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote2, note);
 | 
	
		
			
				|  |  | +					measure.removeChild(note);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			} else if (preBeats === 12 && preBeatType === 8) {
 | 
	
		
			
				|  |  | +				if (noteType === 'whole') {
 | 
	
		
			
				|  |  | +					const maxNumber = 4;
 | 
	
		
			
				|  |  | +					let quarterNoteNumber = 1;
 | 
	
		
			
				|  |  | +					while (quarterNoteNumber <= maxNumber) {
 | 
	
		
			
				|  |  | +						const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +						newnote.innerHTML = `
 | 
	
		
			
				|  |  | +						<rest></rest>
 | 
	
		
			
				|  |  | +						<duration>${divisions+divisions/2}</duration>
 | 
	
		
			
				|  |  | +						<voice>1</voice>
 | 
	
		
			
				|  |  | +						<type>quarter</type>
 | 
	
		
			
				|  |  | +						<dot></dot>`
 | 
	
		
			
				|  |  | +						measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +						quarterNoteNumber += 1;
 | 
	
		
			
				|  |  | +					};
 | 
	
		
			
				|  |  | +					measure.removeChild(note);
 | 
	
		
			
				|  |  | +				} else if (noteType === 'half') {
 | 
	
		
			
				|  |  | +					const newnote = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions+divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>quarter</type>
 | 
	
		
			
				|  |  | +					<dot></dot>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote, note);
 | 
	
		
			
				|  |  | +					const newnote2 = document.createElement('note');
 | 
	
		
			
				|  |  | +					newnote2.innerHTML = `
 | 
	
		
			
				|  |  | +					<rest></rest>
 | 
	
		
			
				|  |  | +					<duration>${divisions/2}</duration>
 | 
	
		
			
				|  |  | +					<voice>1</voice>
 | 
	
		
			
				|  |  | +					<type>eighth</type>`
 | 
	
		
			
				|  |  | +					measure.insertBefore(newnote2, note);
 | 
	
		
			
				|  |  | +					measure.removeChild(note);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		} 
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +}
 |