|  | @@ -70,7 +70,7 @@ const handlePlay = (i: number, source: any | null) => {
 | 
	
		
			
				|  |  |  		} else {
 | 
	
		
			
				|  |  |  			_time=setTimeout(() => {
 | 
	
		
			
				|  |  |  				tickPlayCb(i, resolve, source);
 | 
	
		
			
				|  |  | -			}, tickData.beatLengthInMilliseconds[i-1]*1000/state.basePlayRate);
 | 
	
		
			
				|  |  | +			}, Math.abs(tickData.beatLengthInMilliseconds[i-1])*1000/state.basePlayRate);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	});
 | 
	
		
			
				|  |  |  };
 | 
	
	
		
			
				|  | @@ -99,7 +99,7 @@ const createAudio = (src: string): Promise<HTMLAudioElement | null> => {
 | 
	
		
			
				|  |  |  export const handleInitTick = () => {
 | 
	
		
			
				|  |  |  	const beatLen = metronomeData.firstBeatTypeArr.length * (state.repeatedBeats ? 2 : 1)
 | 
	
		
			
				|  |  |  	const beatLengthInMilliseconds = metronomeData.firstBeatTypeArr.map(item=>{
 | 
	
		
			
				|  |  | -		return Math.abs(item)*state.times[0].measureLength
 | 
	
		
			
				|  |  | +		return item*state.times[0].measureLength
 | 
	
		
			
				|  |  |  	})
 | 
	
		
			
				|  |  |  	tickData.beatLengthInMilliseconds = [...beatLengthInMilliseconds,...(state.repeatedBeats ? beatLengthInMilliseconds : [])]
 | 
	
		
			
				|  |  |  	tickData.len = beatLen;
 | 
	
	
		
			
				|  | @@ -120,7 +120,7 @@ export const handleStartTick = async () => {
 | 
	
		
			
				|  |  |  		// 提前结束, 直接放回false
 | 
	
		
			
				|  |  |  		if (tickData.tickEnd) return false;
 | 
	
		
			
				|  |  |  		// Audio 标签播放音频
 | 
	
		
			
				|  |  | -		const source = i === 0 ? audioData.tick : i === useLen.value ? null : audioData.tock;
 | 
	
		
			
				|  |  | +		const source = tickData.beatLengthInMilliseconds[i] < 0 ? audioData.tick : i === useLen.value ? null : audioData.tock;
 | 
	
		
			
				|  |  |  		await handlePlay(i, source)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	tickData.show = false;
 |