| 
														
															@@ -708,10 +708,22 @@ public class UserChannelContext { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		if (musicXmlNote.getFrequency() == -1) {// 休止符 
														 | 
														
														 | 
														
															 		if (musicXmlNote.getFrequency() == -1) {// 休止符 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			return chunkList.stream().filter(t -> t.getFrequency() > MIN_FREQUECY).count() <= 1; 
														 | 
														
														 | 
														
															 			return chunkList.stream().filter(t -> t.getFrequency() > MIN_FREQUECY).count() <= 1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		ChunkAnalysis firstChunkAnalysis = chunkAnalysisList.get(0); 
														 | 
														
														 | 
														
															 		ChunkAnalysis firstChunkAnalysis = chunkAnalysisList.get(0); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		//取出前面忽略的块 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		List<ChunkAnalysis> ignoreHeaderList = chunkAnalysisList.subList(0, startIndex); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		if(ignoreHeaderList != null && ignoreHeaderList.size() > 0){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			for(ChunkAnalysis ca : ignoreHeaderList){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				if(ca.getFrequency() < MIN_FREQUECY){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					firstChunkAnalysis.setFrequency(-1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					break; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		 
														 | 
														
														 | 
														
															 		 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) < Double.doubleToLongBits(firstChunkAnalysis.getStartTime())).findFirst(); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		double firstChunkStartTime = firstChunkAnalysis.getStartTime(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		Optional<ChunkAnalysis> chunkAnalysisOptional = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getEndTime()) < Double.doubleToLongBits(firstChunkStartTime)).findFirst(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		ChunkAnalysis lastChunkAnalysis = null; 
														 | 
														
														 | 
														
															 		ChunkAnalysis lastChunkAnalysis = null; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		if (chunkAnalysisOptional.isPresent()) { 
														 | 
														
														 | 
														
															 		if (chunkAnalysisOptional.isPresent()) { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -773,7 +785,7 @@ public class UserChannelContext { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		 
														 | 
														
														 | 
														
															 		 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		if (maxTimes / totalTimes < hardLevel.getIntegrityRange()) { 
														 | 
														
														 | 
														
															 		if (maxTimes / totalTimes < hardLevel.getIntegrityRange()) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			tempo = false; 
														 | 
														
														 | 
														
															 			tempo = false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			LOGGER.debug("节奏错误原因:不是同一个音"); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			LOGGER.debug("节奏错误原因:信号分堆后的最大数量不足指定的完成比例"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		 
														 | 
														
														 | 
														
															 		 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		/** 
														 | 
														
														 | 
														
															 		/** 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -817,7 +829,7 @@ public class UserChannelContext { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		 
														 | 
														
														 | 
														
															 		 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		if (tempo) { 
														 | 
														
														 | 
														
															 		if (tempo) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			// 判断进入时间点 
														 | 
														
														 | 
														
															 			// 判断进入时间点 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			if(firstPeakIndex * 100 /chunkAnalysisList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator())){ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			if(firstPeakIndex * 100 /chunkList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator())){ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				tempo = false; 
														 | 
														
														 | 
														
															 				tempo = false; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				LOGGER.debug("节奏错误原因:进入时间点太晚"); 
														 | 
														
														 | 
														
															 				LOGGER.debug("节奏错误原因:进入时间点太晚"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			}else{ 
														 | 
														
														 | 
														
															 			}else{ 
														 |